• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

mybatis-metamodel: mybatis-metamodel 是 mybatis-plus 和 tk mapper 的元数据模型生 ...

原作者: [db:作者] 来自: 网络 收藏 邀请

开源软件名称:

mybatis-metamodel

开源软件地址:

https://gitee.com/thinwonton/mybatis-metamodel

开源软件介绍:

mybatis-metamodel

Maven Central

介绍

mybatis-metamodel 是 mybatis-plus 和 tk mapper 的元数据模型生成插件,目的是解决它们在复杂场景下自定义SQL时的紧耦合问题

用途

我们都知道mybatis-plus 和 tk mapper 开源项目是mybatis优秀的增强插件,它们通过重定义MappedStatement实现了通用增删改查。它们所提供的增删改查的功能,极大提高了开发者的开发效率。但是,在一些复杂的应用场景下,它们的通用增删改查不能满足我们的开发需求,为了实现需求,需要通过它们内置的条件查询组件自定义查询语句。在这种复杂场景下,就无法避免使用字符串表示表名或者字段名,这在复杂的项目中如果修改了字段名,很容易造成后期运行时错误。

为了避免应用在运行时发生错误,本项目将在编译期提供数据库的元数据,可以帮助应用在编译期就感知原有数据库元数据的修改。

举个列子:我们需要自定义SQL查询用户信息。引入本项目后,可以在编译期自动生成元数据模型UserInfo_.class,元数据模型里面包含每个table field的信息,除此之外,还可以通过MetaModelContext获取对应的表信息。

Mapper

// 根据 example 条件查询String queryUserName = "hugo_1";Example userInfoQueryExample = new Example(UserInfo.class);Example.Criteria criteria = userInfoQueryExample.createCriteria();criteria.andEqualTo(UserInfo_.username.getColumn(), queryUserName);List<UserInfo> userInfosByQuery = userInfoMapper.selectByExample(userInfoQueryExample);Assert.assertEquals(1, userInfosByQuery.size());//获取table名String tableName = metaModelContext.getTableName(UserInfo_.class);Assert.assertEquals("user_info", tableName);

mybatis-plus

 // 根据 map 查询// 查询username为hugo_1的数据Map<String, Object> map = new HashMap<>();map.put(UserInfo_.username.getColumn(), "hugo_1"); //获取元数据userInfo = userInfoMapper.selectByMap(map).get(0);// wrapper查询// 查询address为中国的列表List<UserInfo> userList = userInfoMapper.selectList(        new QueryWrapper<UserInfo>().eq(UserInfo_.address.getColumn(), "中国"));//获取table名String tableName = metaModelContext.getTableName(UserInfo_.class);

支持特性

mapper

支持MAPPER版本1.1.5+

  1. 支持是否使用原语类型配置usePrimitiveType,默认为false,建议不要开启,没有意义
  2. 支持配置useSimpleType,默认为true
  3. 支持配置enumAsSimpleType
  4. 支持数据库的catalog和schema配置
  5. 支持全局字段转换方式style
  6. 支持@Table注解
  7. 支持@NameStyle注解
  8. 支持@Transient、@Column、@ColumnType注解
  9. 支持忽略static/transient修饰词的字段

mybatis-plus

支持mybatis-plus版本3.2.0+

  1. 支持全局配置tableUnderline、capitalMode
  2. 支持忽略static/transient修饰词的字段
  3. 支持@TableName注解
  4. 支持@TableId、@TableField注解

不支持特性

mapper

  1. 不支持动态表名 IDynamicTableName
  2. 不支持方法上使用注解, 即 enableMethodAnnotation 全局配置

TODO

mapper

mybatis-plus

  1. 支持配置keepGlobalFormat
  2. 支持配置tablePrefix
  3. 支持配置columnFormat
  4. 支持配置propertyFormat

使用说明

参考下面的wiki

鸣谢

感谢以下开源项目


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap