栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

[18禁]增删改查大法(八荒篇)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

[18禁]增删改查大法(八荒篇)

> @todo

  • JPA - 冗长命名推理 @ugly
  • queryDSL - 黑化版JPA @minor @ignore
  • MBG - 自动生成代码 @nice
  • MybatisPlus/tk - 无侵入增强 @nice
  • JOOQ - 链式正统 @nice @minor @pay @ignore
  • BeetlSQL - 去XML化 @minor @ignore
  • APIJSON - 反转业务控制权 @doubt @ignore
  • serverless - 灵活组装 @nice ->>

自动生成代码 @nice
  • MyBatisCodeHelperPro/EasyCode --> IDEA插件 @nice

  • mybatis-generator @nice

  • mybatis-generator-gui

    • github.com/zouzg/mybatis-generator-gui
  • auto-value

    • github.com/google/auto/tree/master/value
  • immutables

    • github.com/immutables/immutables
自动生成代码 @demo
  • easycode使用 @simple
好像和MyBatisCodeHelperPro插件差不多

1) 安装Easy Code插件
2) 连接数据库
2) 选中数据库表, 右键EasyCode生成

无侵入增强 @nice
  • mybatis-plus ->>

  • TKmybatis ->>

  • Ktorm

    • 基于kotlin??
    • @code github.com/vincentlauvlwj/Ktorm
    • @doc ktorm.liuwj.me/
// @demo 
val employees = Employees
    .joinReferencesAndSelect()
    .whereWithConditions {
 if (someCondition) {
     it += Employees.managerId.isNull()
 }
 if (otherCondition) {
     it += Employees.departmentId eq 1
 }
    }
    .orderBy(Employees.id.asc())
    .limit(0, 10)
    .map { Employees.createEntity(it) }

人道主义去XML
  • beetlsql => markdown @minor
  • 直接写在mybatis3的注解里?? @ignore --> 放弃
人道主义去XML @demo
  • Mybatis去xml化 @building
    • @code github.com/wuhao000/mybatis-xmlless-spring-starter
@SelectedProperties(properties=["id", "name", "age"])
fun findSimpleInfoList(): List

反转业务控制权

> 通俗讲就是甩锅给前端, 自己变成一个处理平台

  • APIJSON @ignore
    • 目前不太好用, 生态也不算成熟, 找不到后台demo, 算一种思路吧 @myself
    • 后端接口和文档自动化,前端(客户端) 定制返回JSON的数据和结构
    • @code
      • github.com/APIJSON/APIJSON
      • github.com/TommyLemon/APIJSON
      • github.com/APIJSON/APIJSON-Demo/blob/master/APIJSON-Java-Server
    • @doc
      • github.com/APIJSON/APIJSON/blob/master/document.md
// 发送JSON
{
  "Moment": {
    "id":12,
     "@column":"content"
  }
}

// 响应结构
{
    "Moment": {
 "content": "1111534034"
    },
    "code": 200,
    "msg": "success"
}

@Select
@Insert
@Update
@Delete

// 高级注解
@SelectProvider
@InsertProvider
@UpdateProvider
@DeleteProvider


@Results  用于填写结果集的多个字段的映射关系.
@Result  用于填写结果集的单个字段的映射关系.
@ResultMap 根据ID关联XML里面.

// 快速生成映射结果集
public static String getResultsStr(Class origin) {
    StringBuilder stringBuilder = new StringBuilder();
    stringBuilder.append("@Results({n");
    for (Field field : origin.getDeclaredFields()) {
 String property = field.getName();
 //映射关系:对象属性(驼峰)->数据库字段(下划线)
 String column = new PropertyNamingStrategy.SnakeCaseStrategy().translate(field.getName()).toUpperCase();
 stringBuilder.append(String.format("@Result(property = "%s", column = "%s"),n", property, column));
    }
    stringBuilder.append("})");
    return stringBuilder.toString();
}
转载请注明:文章转载自 www.mshxw.com
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号