看过之前的蜕变系列文章,相信你对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.generatorgroupId> <artifactId>mybatis-generator-maven-pluginartifactId> <version>1.3.5version> dependency>
第二步
添加generator的插件:
<plugin> <groupId>org.mybatis.generatorgroupId> <artifactId>mybatis-generator-maven-pluginartifactId> <version>1.3.5version> <executions> <execution> <id>Generate MyBatisArtifactsid> <goals> <goal>generategoal> goals> execution> executions> <dependencies> <dependency> <groupId>mysqlgroupId> <artifactId>mysql-connector-javaartifactId> <version>5.1.46version> dependency> dependencies> <configuration> <configurationFile>src/main/resources/generatorConfig.xmlconfigurationFile> <overwrite>trueoverwrite> configuration> plugin>
第三步
在resources目录中创建一个generatorConfig.xml逆向工程的配置文件:
<?xml version="1.0"encoding="UTF-8"?>/span> PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration1.0//EN" "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd"> <generatorConfiguration> <context id="test" targetRuntime="MyBatis3"> <commentGenerator> <property name="suppressDate" value="true" /> <property name="suppressAllComments" value="true"/> commentGenerator> <jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://127.0.0.1:3306/route"userId="root" password="123456"> jdbcConnection> <javaTypeResolver> <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> <javaClientGenerator type="XMLMAPPER" targetPackage="com.pz.dao" targetProject="\src\main\java"> <property name="enableSubPackages" value="true"/> javaClientGenerator> <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; } }