最近准备用springboot开发一个web项目,持久化工具使用mybatis,相比hibernate的无sql化,mybatis更灵活一些,但是要写一个个的配置文件,也是件很烦的事,自然就考虑mybatis提供的自动生成工具mybatis generator了。
网上搜索了一些使用的文章,但是总是不得其法,甚至下载了一个GUI工具,然而感觉也不太好用,无奈只好看看官方文档怎么说:
http://www.mybatis.org/generator/index.html
文档中说可以作为Eclipse的插件使用,那就尝试一下吧,虽然现在用的是sts,但是sts也不过是eclipse的改版,基本功能应该还有的。下面先从eclipse market安装mybatis generator
1.打开sts的帮助(HELP)菜单下的Eclipse Market
2.在Find中搜索mybatis generator,搜索出来的第一个就是
3.安装Mybatis Generator,因为写这篇文章的时候我已经装完了,就不截图了。在线安装速度比较慢,可以先下载下来后再安装
4.安装完成会提示重启STS,重启就行了
好了,现在开始来给项目自动生成model、dao、和mapping文件
5.项目结构
最上面那个是开始下载的gui方式配置mybatis generator的项目,但是没玩明白,既然用过了,就把链接发一下,表示感谢
https://github.com/zouzg/mybatis-generator-gui
6.按照mybatis的操作
其实是用了谷歌的自动翻译,不然凭我的垃圾英语水平,看懂这些要半个小时...但是写文章肯定要装个逼,看官原谅则个
右键new一个others
点击Finish,然后就在项目下多了个generatorConfig.xml文件,内容如下
按照官方文档说明,jdbcConnection,javaModelGenerator是必须的,sqlMapGenerator在mybatis3以后属于javaClientGenerator的子属性,如果没有javaClientGenerator就不需要配置,意思是就不会生成xml文件了。
table至少要有一个,有多个就写多个
另外,如果使用mysql数据库,不需要配置table的schema属性,所以最后的文件如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN" "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
<generatorConfiguration>
<context id="context1">
<jdbcConnection connectionURL="jdbc:mysql://127.0.0.1:3306/project_manager?useSSL=false" driverClass="com.mysql.jdbc.Driver" password="123456" userId="root" />
<javaModelGenerator targetPackage="com.dyz.bean" targetProject="projects" />
<sqlMapGenerator targetPackage="mapping" targetProject="projects/src/main/resources" />
<javaClientGenerator targetPackage="com.dyz.dao" targetProject="projects" type="XMLMAPPER" />
<table tableName="t_user"/>
</context>
</generatorConfiguration>
上面的操作都是按照官方推荐来的,table的配置中不是用schema,另外我们的表也不需要使用columnOverride
接着右键点击配置文件generatorConfig.xml,选择Run as --》Run Mybatis Generator
然后控制台会显示运行信息,创建model,dao和mapping
当前的目录结构
可见Mybatis按照驼峰命名去掉了下划线生成了各种文件,而且还生成了一个实例文件TUserExample。看看dao的接口方法
我们并不希望产生Example,查看文档说明,table有5个和example相关的配置
那我们把之前生成的内容删除掉,再给加上配置后重新执行
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN" "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
<generatorConfiguration>
<context id="context1">
<jdbcConnection connectionURL="jdbc:mysql://127.0.0.1:3306/project_manager?useSSL=false" driverClass="com.mysql.jdbc.Driver" password="123456" userId="root" />
<javaModelGenerator targetPackage="com.dyz.bean" targetProject="projects" />
<sqlMapGenerator targetPackage="mapping" targetProject="projects/src/main/resources" />
<javaClientGenerator targetPackage="com.dyz.dao" targetProject="projects" type="XMLMAPPER" />
<table tableName="t_user" enableSelectByExample="false" enableDeleteByExample="false" enableCountByExample="false" enableUpdateByExample="false" selectByExampleQueryId="fasle"/>
</context>
</generatorConfiguration>
再次执行后生成的内容:
少了excample类,dao中也少了若干和example相关的方法,同时也少了一个个人觉得很关键的方法,现在只有根据ID查询对象的方法了,没有根据对象的其他条件查询了,比如在t_user表中,我们肯定希望能根据姓名或者手机号码查询,但是没了这个方法,有点尴尬。