# [18🈲]增删改查大法-八荒篇-2020(Java生态)

@todo 中二病又犯了...

  • nutz-dao -- 字符串占位拼接 @ignore

  • JPA -- 冗长命名推理 @ignore @ugly

  • MBGCodeGen -- 自动生成代码 @nice

  • MybatisPlus -- 无侵入增强 @nice

  • FluentMybatis/JOOQ -- 实体扩展功能, 链式正统 @nice @minor @topay @ignore

  • BeetlSQL -- 去XML化 @minor @ignore

  • APIJSON -- 前端规约, 反转业务控制权 @doubt @ignore

  • ObjectiveSQL -- 重载运算符


# 自动生成代码


# 冗长命名推理 @ignore

  • JPA

# 字符串占位 @ignore


# 无侵入增强


# 实体功能扩展

# 实体功能扩展 @other

# 链式正统

  • jooq

# 人道主义去XML


# 设计查询规约

// 发送JSON
{
  "Moment": {
    "id":12,
     "@column":"content"
  }
}

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

# 重载运算符

  • ObjectiveSql


# 参考

好像和MyBatisCodeHelperPro插件差不多

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

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


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

// 快速生成映射结果集
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();
}
@SelectedProperties(properties=["id", "name", "age"])
fun findSimpleInfoList(): List<User>