mybatis 元数据模型生成插件 mybatis-metamodel

Apache
Java
跨平台
2020-02-18
细肉云吞

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

用途

我们都知道 mybatis-plus 和 tk mapper 开源项目是 mybatis 优秀的增强插件,它们通过重定义 MappedStatement 实现了通用增删改查。它们所提供的增删改查的功能,极大提高了开发者的开发效率。

但是,在一些复杂的应用场景下,它们的通用增删改查不能满足我们的开发需求,为了实现需求,需要通过它们内置的条件查询组件自定义查询语句。在这种复杂场景下,就无法避免使用字符串表示表名或者字段名,这在复杂的项目中如果修改了字段名,很容易造成后期运行时错误。

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

举个li'zi:    
我们需要自定义 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
gitee

的码云指数为
超过 的项目
加载中
请先登录后再评论。

暂无资讯

暂无问答

Apache MetaModel 已经毕业成为Apache 基金会顶级项目

Apache MetaModel 元模型成为顶级项目

2014/12/12 11:51
1.9K
0
java.lang.IllegalArgumentException: At least one JPA metamodel must be present!

java.lang.IllegalArgumentException: At least one JPA metamodel must be present! 启动类Application加上 @EnableAutoConfiguration(exclude={ JpaRepositoriesAutoConfiguration.class ...

2019/02/25 17:20
104
0
[mybatis]Mybatis 数据处理

## Mybatis 数据处理 ### 1.mybatis 动态SQL 动态SQL包含以下关键字 * if 判断 * choose (when, otherwise) 判断 * trim (where, set) 去空格 * foreach 循环 * If 动态 SQL 通常要做的事情是...

2016/07/05 10:17
258
1
再见!Mybatis,你好!JDBCTemplate

点击“开发者技术前线”,选择“星标🔝” 在看|星标|留言, 真爱 链接:segmentfault.com/a/1190000018472572 因为项目需要选择数据持久化框架,看了一下主要几个流行的和不流行的框架,对于...

07/14 13:12
24
0
【MyBatis】 MyBatis入门

1、MyBatis简介 MyBatis是这个框架现在的名字,而此框架最早的名字是IBatis,其名字的含义是“internet”、“abatis”两个单词的组合,是在2002年的时候开始的一个开源项目,在2010年6月16日...

2019/01/09 21:52
347
0
Mybatis-Plus和Mybatis的区别

1.List item 区别一 如果Mybatis Plus是扳手,那Mybatis Generator就是生产扳手的工厂。 通俗来讲—— MyBatis:一种操作数据库的框架,提供一种Mapper类,支持让你用java代码进行增删改查的...

2019/10/29 21:14
222
0
MyBatis增强版:MyBatis-Plus

简介 MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。https://mp.baomidou.com/ 配置步骤说明 创建数据库环境 建表语...

2019/04/26 22:10
91
0
MyBatis配置文件myBatis-config.xml

<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <confi...

2018/01/26 11:01
48
0
mybatis之加强版_mybatis-plus

什么是Mybatis-Plus MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。 为什么要使用Mybatis-Plus 我们已经学习过Mybat...

2019/04/25 21:35
76
0

没有更多内容

加载失败,请刷新页面

返回顶部
顶部