Mybatis 通用 Mapper 3.5.0 已发布。MyBatis 通用 Mapper 极其方便的使用 MyBatis 单表的增删改查,支持单表操作,不支持通用的多表联合查询。通用 Mapper 可以极大的方便开发人员。可以随意的按照自己的需要选择通用方法,还可以很方便的开发自己的通用方法。
通用 Mapper 更新日志
- 兼容 mbg 1.3.6 版本。
- EntityColumn 记录 EntityField 信息,方便后续扩展使用。
- 针对 update 两个基本方法增加乐观锁功能,在实体类对版本字段增加 @Version 注解即可,默认支持 Integer 和 Long类型,其他情况可以实现 NextVersion 接口并在注解中指定该实现,一个实体类中最多只能有一个加 @Version 注解的字段。
- 3.4.0增加的 useSimpleType 默认值改为 true,默认忽略复杂类型的字段,复杂类型不需要加 @Transient 注解,具体类型可以参考 SimpleTypeUtil 类。
- 新增 annotationAsSimpleType 参数,默认 false,设置为 true 后会把枚举作为简单类型对待,需要配合 useSimpleType = true 使用。
- 新增 wrapKeyword 参数,配置后会自动处理关键字,可以配的值和数据库有关,例如 sqlserver 可以配置为 [{0}],使用 {0} 替代原来的列名。
- FieldHelper 改为判断当前jdk版本是否为6和7,其他情况按jdk8处理,因此支持jdk9+
- 新增 selectOneByExample 方法,必须保证返回值最多 1 个,否则抛出异常。
- 增加新的 tk.mybatis.mapper.additional.insert.InsertListMapper,这个批量插入方法不支持主键策略,不会返回自动生成的主键
使用 @Version 注解的效果如下:
DEBUG [main] - ==> Preparing: UPDATE country
SET countryname = ?,countrycode = ?,version = 2
WHERE id = ? AND version = ?
DEBUG [main] - ==> Parameters: 美国2(String), US(String), 174(Integer), 1(Integer)
自动处理关键字代码:
//自动处理关键字
if (StringUtil.isNotEmpty(wrapKeyword)
&& SqlReservedWords.containsWord(columnName)) {
columnName = MessageFormat.format(wrapKeyword, columnName);
}
通用 Mapper – Starter 更新日志
通用 Mapper 对应的 mapper-boot-starter 也进行了大量改动。
- 通用 Mapper 3.5.0
- 去掉 mybatis-spring-boot-starter 依赖,不在使用 mybatis 官方 starter,使用通用 Mapper 时不要再引入官方 starter
- 参考 mybatis 官方 starter 重新实现,解决 mapper 初始化可能存在的问题 pr#5 by fengcbo
- 如果需要使用 @MapperScan 请选择 tk 开头的 tk.mybatis.spring.annotation.MapperScan
使用 Maven
3;font-family:”font-size:16px;background-color:#FFFFFF;”>
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper</artifactId>
<version>3.5.0</version>
</dependency>
如果你使用 Spring Boot 可以直接引入:
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper-spring-boot-starter</artifactId>
<version>1.2.0</version>
</dependency>
转自 https://www.oschina.net/news/92274/mapper-3-5-0-released