# [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 -- 重载运算符
# 自动生成代码
MyBatisCodeHelperPro
/EasyCode --> IDEA插件 @nicemybatis-generator
@nicemybatis-generator-gui
auto-value
immutables
hasor + Dataway ?? @todo
# 冗长命名推理 @ignore
- JPA
# 字符串占位 @ignore
# 无侵入增强
mybatis-plus ->>
TKmybatis ->>
cqengine @todo
sql-table-name-parser @todo
# 实体功能扩展
- fluent mybatis
- querydsl
# 实体功能扩展 @other
- doyto-query @old
# 链式正统
- jooq
# 人道主义去XML
beetlsql
@nicespring-data-mybatis-mini
jfinal-sql @sub
# 设计查询规约
- APIJSON @ignore
- 目前不太好用, 生态也不算成熟, 找不到后台demo, 算一种思路吧
- 后端接口和文档自动化,前端(客户端) 定制返回JSON的数据和结构
- @code
- @doc
// 发送JSON
{
"Moment": {
"id":12,
"@column":"content"
}
}
// 响应结构
{
"Moment": {
"content": "1111534034"
},
"code": 200,
"msg": "success"
}
# 重载运算符
- ObjectiveSql
# 参考
为什么 Java 没有好用的 ORM 框架
Fluent MyBatis使用入门 @todo
这款工具让SpringBoot不再需要Controller、Service、DAO、Mapper! @ad @ignore
easycode使用 @simple
好像和MyBatisCodeHelperPro插件差不多
1) 安装Easy Code插件
2) 连接数据库
2) 选中数据库表, 右键EasyCode生成
- SpringBoot快速整合Mybatis(去XML化+注解进阶) @demo @ignore
@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();
}
- Mybatis去xml化 @building
@SelectedProperties(properties=["id", "name", "age"])
fun findSimpleInfoList(): List<User>