MyBatis+SpringMVC+SpringBootJava 杂谈程序员

自动生成Domain, Dao, Mybatis Mapper文

2018-06-23  本文已影响11人  阿历Ali

本文与《Mybatis Generator定制化注释的方法》目标相似,即定制化生成数据持久化映射对象(Domain)文件、数据操作Dao文件、及其相应的Mybatis Mapper文件。

用Mybatis Generator有不便之处是只实现了定制化生成Domain字段注释,而不能定制化生成类注释、方法、方法注释等。本文将定制化更进一步,生成你想要的Domain,Dao,Mybatis Mapper文件。

1. 思路

a. 从数据库的元数据表information_schema获取表结构信息,如表名、表注释、字段名、字段类型、字段注释等。这里用到传统的jdbc。

b. 写Mysql、java、Mybatis数据类型转化器。

c. 实现生成Domain,Dao,Mapper的工具类。

d. 实现生成文件的工具类。

e. 完成串联所有工具的main方法。

image.png
2. 程序使用介绍

以下代码是MybatisGenerator.java中main方法的关键代码:

// 设置作者名
BaseGenerator.setAUTHOR("ali");
// 初始化数据库连接 url, username, password
DbUtil.initConnection("jdbc:mysql://localhost/test_db", "root", "123456");
// 生成数据库中所有的表对应的dao文件
//        List<TableInfo> tableInfos = SchemaUtil.getTableInfos("test_db", null);
// 生成数据库中指定表对应的dao文件
List<TableInfo> tableInfos = SchemaUtil.getTableInfos("test_db", new ArrayList<String>(){{add("USER");add("ORDER_INFO");}});

ConfigInfo configInfo = new ConfigInfo();
// 配置包名(dao文件所在)
configInfo.setModulePackagePath("com.me.test.dao");
// 配置Domain文件包名(实际生成包路径为"com.me.test.dao.domain")
configInfo.setDomainPackageName("domain");
// 配置Domain类名后缀(生成样例,UserPo)
configInfo.setDomainPostfix("Po");
// 配置Dao类名后缀(生成样例,UserDao)
configInfo.setDaoPostfix("Dao");
// 配置Mapper后缀(生成样例,UserMapper)
configInfo.setMapperPostfix("Mapper");
// Mapper文件位置
configInfo.setMapperDir("resources/test");
FileGenerator.generate(configInfo, tableInfos);

注:Domain用了lombok的@Data注解,因此没有生成get,set方法。

3. 效果

(只截取部分代码)
Domain



Dao



Mapper

感谢同事的启发与指导,有他们的帮助才得以此文。
如需要源码,请下载https://github.com/code-group/mybatisGenerator.git

上一篇下一篇

猜你喜欢

热点阅读