您现在的位置是:首页 > 文章详情

mybatis-mapper 2.2.2 发布

日期:2024-05-20点击:170

官方文档 https://mapper.mybatis.io/ 新增加了 2.x 版本的新文档,快速上手、接口介绍、注解配置更新了大量最新内容,欢迎查阅。

功能增强

  • Provider 升级: 将 provider 升级至 2.2.4 版本。
  • 项目结构调整: Fn, Reflections 和测试 FnTest 移动到了 mybatis-provider 项目,包名保持不变。
  • 注解增强:
    • JPA 新增支持 @Entity 注解,配置该注解相当于开启默认注解中的 autoResultMap=true,配合 @Convert 注解使用时可以对查询结果进行转换。
    • JPA 新增支持 @Convert 注解,用于类型转换,可以将查询结果转换为指定类型,需要指定 MyBatis TypeHandler 子类。默认可以用于参数中,想让查询结果列生效时需要配合 @Entity 注解开启 autoResultMap=true
    • JPA 支持: 支持 JPA @Table 注解的 catalog  schema 属性。
  • SQL 生成: 通过 LogicalMapper 生成的 SQL 现在包含 schema 信息。
  • JPA 注解兼容性: jakarta-jpa 复制了 jpa 的改动,功能相同,但注解包名不同。

性能优化

  • 内存管理: 解决了 Fn 缓存内存溢出的问题,修复了 issue #108
  • 依赖管理: 移除了无用的 javax.persistence-api 依赖。

兼容性改进

测试与质量保证

  • 测试用例修复: 修复了测试用例 testExampleUseCondition
  • 测试代码完善: 增加了 createCriteriaSelective 方式创建 Criteria,GeneratedCriteria 类增加了 useCondition 方法。

贡献者

  • liuzh
  • aunix*
  • 曹赛军

Example 新增变化介绍

所有方法增加了一个带 boolean useCondition 参数的方法,示例如下:

 @Test public void testExampleUseCondition() { try (SqlSession sqlSession = getSqlSession()) { ExampleMapper<User, Example<User>> exampleMapper = sqlSession.getMapper(UserMapper.class); Example<User> example = new Example<>(); User user = new User(); user.setUserName("殷%"); example.createCriteria() .andNotEqualTo(Objects.nonNull(user.getId()), User::getId, user.getId()) .andLike(Utils.isNotBlank(user.getUserName()), User::getUserName, user.getUserName()) .andEqualTo(Utils.isNotBlank(user.getSex()), User::getSex, user.getSex()); Assert.assertEquals(5, exampleMapper.countByExample(example)); } }
 

还有一个 createCriteriaSelective 方法,默认会校验值是否为空,如果空就不使用条件:

 @Test public void testExampleUseSelective() { try (SqlSession sqlSession = getSqlSession()) { ExampleMapper<User, Example<User>> exampleMapper = sqlSession.getMapper(UserMapper.class); Example<User> example = new Example<>(); User user = new User(); user.setUserName("殷%"); user.setSex("女"); example.createCriteriaSelective() .andLike(User::getUserName, user.getUserName()) .andEqualTo(User::getId, user.getId()) .andNotEqualTo(User::getSex, user.getSex()); Assert.assertEquals(3, exampleMapper.countByExample(example)); } } 
原文链接:https://www.oschina.net/news/293251/mybatis-mapper-2-2-2-released
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章