看过之前的蜕变系列文章,相信你对SpringMVC 、Spring、 Mybatis的整合有了一定的心得,学会了搭建属于自己的开发框架,也了解了如何使用整合后的框架进行开发。今天,我们为了解决你在开发中的体力劳动以及编写sql出错的概率,让你从入门到放弃,教你使用一个工具——mybatis generator。
猿蜕变同样是一个原创系列文章,帮助你从一个普通的小白,开始掌握一些行业内通用的框架技术知识以及锻炼你对系统设计能力的提升,完成属于你的蜕变,更多精彩内容,敬请大家关注公主号猿人工厂,点击猿人养成获取!
我们之前使用mybatis时,需要人工编写dao层,bean,mapper配置文件,在一些简单的场景下,这些操作有一些套路化的问题,比如单表操作的基于字段的新增、修改、删除、查找等简单工作会显得比较繁琐,这类代码也比较固定。mybatis提供了帮助开发者解决这些繁琐的问题,提供了一个工具——mybatisgenerator用于生成相关的mapper文件、并且生成增删改查相关的sql语句的功能。
不过对于核心业务的工作流程,我们还是要很小心的把流程控制在sql层面,这个帮助就不是很大了,核心的业务用它上层一个bug,数据出问题,真心伤不起。生产的代码也算不上规范,也有一些冗余吧,后续工厂君会根据某些代码规范搞一套代码生成器来帮助大家。
在没有自己定义的代码生成器前,不过这玩意儿有一个比较好的作用就是,能够生成一些代码,和公共的可以利用的sql,而这些字段如果手动编写,容易出错,选择使用它来做半自动化开发,还是阔以的……
mybatis-generator的使用方式有很多种,由于我们使用maven进行应用开发,这里我们就以maven为例进行介绍。
第一步
首先要在maven项目中添加依赖,当然你得确保在你的maven中已经添加了mybatis相关的其他依赖jar包:
<dependency>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.5</version>
</dependency>
第二步
添加generator的插件:
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.5</version>
<executions>
<execution>
<id>Generate MyBatisArtifacts</id>
<goals>
<goal>generate</goal>
</goals>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.46</version>
</dependency>
</dependencies>
<configuration>
<!--配置文件的路径-->
<configurationFile>src/main/resources/generatorConfig.xml</configurationFile>
<overwrite>true</overwrite>
</configuration>
</plugin>
第三步
在resources目录中创建一个generatorConfig.xml逆向工程的配置文件:
<?xml version="1.0"encoding="UTF-8"?>
<!DOCTYPE generatorConfiguration
PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration1.0//EN"
"http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
<generatorConfiguration>
<!--如果不需要生成example的话将targetRuntime设置为MyBatis3Simple即可-->
<context id="test" targetRuntime="MyBatis3">
<commentGenerator>
<!-- 生成的注释是否包含生成的时间,一般设置为true,不生成时间 -->
<property name="suppressDate" value="true" />
<!-- 是否去除自动生成的注释 true:是 :false:否-->
<property name="suppressAllComments" value="true"/>
</commentGenerator>
<!--数据库链接URL,用户名、密码 -->
<jdbcConnection driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://127.0.0.1:3306/route"userId="root"
password="123456">
</jdbcConnection>
<javaTypeResolver>
<!-- 是否将数据库中的decimal类型转换为java的BigDecimal类型-->
<property name="forceBigDecimals" value="false"/>
</javaTypeResolver>
<!-- 生成模型的包名和位置 -->
<javaModelGenerator targetPackage="com.pz.domain"
targetProject="\src\main\java">
<property name="enableSubPackages" value="true"/>
<property name="trimStrings" value="true" />
</javaModelGenerator>
<!-- 生成映射文件的包名和位置 -->
<sqlMapGenerator targetPackage="com.pz.dao"
targetProject="\src\main\java">
<property name="enableSubPackages" value="true"/>
</sqlMapGenerator>
<!-- 生成DAO的包名和位置 -->
<javaClientGenerator type="XMLMAPPER"
targetPackage="com.pz.dao"
targetProject="\src\main\java">
<property name="enableSubPackages" value="true"/>
</javaClientGenerator>
<!-- 要生成哪些表 注意后面的属性,如果不需要Example查询工具类 将这几个属性设置为false即可,
如果有多张表,复制粘贴即可-->
<table tableName="travel_route"domainObjectName="TravelRoute"
enableCountByExample="true"
enableUpdateByExample="true"
enableDeleteByExample="true"
enableSelectByExample="true"
selectByExampleQueryId="true">
</table>
</context>
</generatorConfiguration>
第四步
添加完毕之后,在idea的maven中执行下面命令mybatis-generator:generate,即可:如果成功了,在你指定的目录中可以看到dao、bean、mapper全部生成了。
注意噢:mybatis generator 只会根据单表来生成文件,并不会生成表之间的关系,假如Mapper文件已经存在时,如果进行重新生成mapper文件时,内容不被覆盖而是进行内容追加,结果导致mybatis解析失败。
解决方法:删除原来已经生成的mapper文件之后再进行生成。Mybatis自动生成的bean及dao文件不是内容而是直接覆盖没有此问题。
Example类的用法
我们使用mybatis generator生成的文件中有一个TravelRouteExample类,该类的作用就是帮我们实现多条件的查询,比如,根据id查询线路我们可以像下面这样编写代码:
public TravelRoute findUserById(int id) {
TravelRoute.Criteria criteria =example.createCriteria();
criteria.andIdEqualTo(id);
List< TravelRoute > routes = travelRouteDao.selectByExample(example);
if (routes!= null){
return routes.get(0);
}else{
return null;
}
}
我建了一个技术群,群里有很多高手,加小编微信,备注:学习。带你见识更多的高手,帮你快速成长。