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: 2.2.2...2.2.3