最近准备用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

Sts集成Mybatis Generator

2.在Find中搜索mybatis generator,搜索出来的第一个就是

Sts集成Mybatis Generator

3.安装Mybatis Generator,因为写这篇文章的时候我已经装完了,就不截图了。在线安装速度比较慢,可以先下载下来后再安装

4.安装完成会提示重启STS,重启就行了

好了,现在开始来给项目自动生成model、dao、和mapping文件

5.项目结构

Sts集成Mybatis Generator

最上面那个是开始下载的gui方式配置mybatis generator的项目,但是没玩明白,既然用过了,就把链接发一下,表示感谢

https://github.com/zouzg/mybatis-generator-gui

6.按照mybatis的操作

Sts集成Mybatis Generator

其实是用了谷歌的自动翻译,不然凭我的垃圾英语水平,看懂这些要半个小时...但是写文章肯定要装个逼,看官原谅则个

右键new一个others

Sts集成Mybatis Generator

Sts集成Mybatis Generator

Sts集成Mybatis Generator

点击Finish,然后就在项目下多了个generatorConfig.xml文件,内容如下

Sts集成Mybatis Generator

按照官方文档说明,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

Sts集成Mybatis Generator

接着右键点击配置文件generatorConfig.xml,选择Run as --》Run Mybatis Generator

Sts集成Mybatis Generator

然后控制台会显示运行信息,创建model,dao和mapping

Sts集成Mybatis Generator

当前的目录结构

Sts集成Mybatis Generator

可见Mybatis按照驼峰命名去掉了下划线生成了各种文件,而且还生成了一个实例文件TUserExample。看看dao的接口方法

Sts集成Mybatis Generator

我们并不希望产生Example,查看文档说明,table有5个和example相关的配置

Sts集成Mybatis Generator

那我们把之前生成的内容删除掉,再给加上配置后重新执行

<?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>

再次执行后生成的内容:

Sts集成Mybatis Generator

少了excample类,dao中也少了若干和example相关的方法,同时也少了一个个人觉得很关键的方法,现在只有根据ID查询对象的方法了,没有根据对象的其他条件查询了,比如在t_user表中,我们肯定希望能根据姓名或者手机号码查询,但是没了这个方法,有点尴尬。

相关文章: