# 2024年5月26日 - 2.2.3 发布
# What's Changed
insert
和update
泛型增加<S extends T>
Example
支持TypeHandler
配置
# insert
和update
泛型增加<S extends T>
/**
* 保存实体
*
* @param entity 实体类
* @return 1成功,0失败
*/
@Lang(Caching.class)
@InsertProvider(type = EntityProvider.class, method = "insert")
<S extends T> int insert(S entity);
insert和update时可以使用实体类的子类进行操作。
# Example
支持TypeHandler
配置
原来在实体类配置的 TypeHandler
对Example
操作无效,这次更新后可以自动生效。
单元测试方法如下:
@Test
public void testUpdateByExampleSetValues() {
SqlSession sqlSession = getSqlSession();
try {
ExampleMapper<UserAuto, Example<UserAuto>> exampleMapper = sqlSession.getMapper(UserAutoBaseMapper.class);
Example<UserAuto> example = new Example();
example.createCriteria().andEqualTo(UserAuto::getId, 1L);
example.set(UserAuto::getAddress, new UserAuto.Address("河北省", "秦皇岛市"));
Assert.assertEquals(1, exampleMapper.updateByExampleSetValues(example));
sqlSession.rollback();
} finally {
//不要忘记关闭sqlSession
sqlSession.close();
}
}
这里的 UserAuto.Address
是一个对象,需要类型处理为单个字段。
这个改动后,Example
中的 andLike(Fn<T, Object> fn, String value)
改为了 andLike(Fn<T, Object> fn, Object value)
,
因为字段是对象的情况下可以通过类型处理为 String
,这里只接收 String
就无法支持 UserAuto.Address
模糊查询。
该字段的模糊查询也发生了变化,这会导致相关代码的不兼容:
Example<UserAuto> example = userAutoMapper.example();
example.createCriteria().andLike(UserAuto::getAddress, "河北省%");
改为:
Example<UserAuto> example = userAutoMapper.example();
example.createCriteria().andLike(UserAuto::getAddress, new UserAuto.Address("河北省", "%"));
Full Changelog: https://github.com/mybatis-mapper/mapper/compare/2.2.2...2.2.3
# mybatis-provider 发布 2.2.5
# What's Changed
- fixed #mybatis-mapper/mapper/issues/108 by @mfeng-ya in https://github.com/mybatis-mapper/provider/pull/13
- fixed #mybatis-mapper/mapper/issues/97 检测是否设置了主键策略异常
# New Contributors
- @mfeng-ya made their first contribution in https://github.com/mybatis-mapper/provider/pull/13
Full Changelog: https://github.com/mybatis-mapper/provider/compare/2.2.4...2.2.5
2.2.2 →