在做项目过程中,当面对很多表时,手动编写Mapper.xml、Mapper.java和pojo无疑是要人命,还容易出错,导致对数据库操作时各种异常。这就陷入了写bug,改bug的旋涡。
针对这一痛点,mybatis官方提供了一个逆向工程,针对每张表可以自动生成Mapper.xml、Mapper.java和pojo代码,为我们的开发省去很多麻烦。
可能有些小伙伴要说,喜欢自己动手写,但是有些项目几百张表都是有可能的,手写不信你不吐血。当熟悉了这三个文件是怎么写的前提下,应该把更多的精力放到业务的实现,话不多说,撸代码。
1、
为了避免对项目代码造成影响,新建一个maven工程,专门用于逆向生成代码,然后复制到自己项目对应路径下。
2、
在resources目录下新建两个文件generator.properties
generatorConfig.xml
其中generator.properties里是连接数据库的配置,配置如下:
jdbc.driverClass=com.mysql.jdbc.Driver
jdbc.connectionURL=jdbc:mysql://localhost:3306/mybatis?useUnicode=true&characterEncoding=utf-8
jdbc.userId=root
jdbc.password=mysql
generatorConfig.xml配置数据库连接、类型转换、生成文件的包名、以及需要生成文件对应的表名称。
包名最好是跟自己项目的包名一致,后面拷贝过去,就不需要修改包名了。
这里用项目表project为例。
<>xml version='1.0' encoding='UTF-8'?>
br> PUBLIC '-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN'
'http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd'>
generatorConfiguration>
properties resource='generator.properties'>properties>
context id='default' targetRuntime='MyBatis3'>
commentGenerator>
property name='suppressDate' value='true'/>
property name='suppressAllComments' value='true'/>
commentGenerator>
jdbcConnection driverClass='${jdbc.driverClass}'
connectionURL='${jdbc.connectionURL}' userId='${jdbc.userId}'
password='${jdbc.password}'>
jdbcConnection>
javaTypeResolver>
property name='forceBigDecimals' value='false'/>
javaTypeResolver>
javaModelGenerator targetPackage='com.smallsoup.mybatis.pojo'
targetProject='src/main/java'>
property name='enableSubPackages' value='false'/>
property name='constructorBased' value='true'/>
property name='trimStrings' value='true'/>
property name='immutable' value='false'/>
javaModelGenerator>
sqlMapGenerator targetPackage='com.smallsoup.mybatis.dao.mapper'
targetProject='src/main/java'>
property name='enableSubPackages' value='false'/>
sqlMapGenerator>
javaClientGenerator targetPackage='com.smallsoup.mybatis.dao'
targetProject='src/main/java' type='XMLMAPPER'>
property name='enableSubPackages' value='true'/>
javaClientGenerator>
table tableName='project' domainObjectName='ProjectDo'
enableCountByExample='true' enableUpdateByExample='false'
enableDeleteByExample='false' enableSelectByExample='false'
selectByExampleQueryId='false'>
table>
context>
generatorConfiguration>
3、
pom.xml文件需要引入MyBatis自动生成工具插件和mysql的驱动依赖,主要代码如下:
plugin>
groupId>org.mybatis.generatorgroupId>
artifactId>mybatis-generator-maven-pluginartifactId>
version>1.3.2version>
executions>
execution>
id>Generate MyBatis Filesid>
goals>
goal>generategoal>
goals>
configuration>
verbose>trueverbose>
overwrite>trueoverwrite>
configuration>
execution>
executions>
dependencies>
dependency>
groupId>mysqlgroupId>
artifactId>mysql-connector-javaartifactId>
version>5.1.38version>
dependency>
dependencies>
plugin>
4、
到此配置已经好了,下面以IDEA为例,通过简单的配置然后运行生成mapper和pojo文件。
Edit Configurations ->
Working directory选择该工程目录;
Command line填写:
mybatis-generator:generate -e
上一步配置好以后,点击运行,结果如下:
然后看包下就生成了project表的mapper.xml、mapper.java接口和pojo
到此project的逆向生成代码就完成了,如果需要生成项目所有表的代码,需要在generatorConfig.xml配置多个table标签。