在项目中通过mybatis与MySQL建立起连接往往需要书写大量重复的CURD的xml格式文件,这一点就令人非常头疼。所以能不能为这些相同格式的模板文件建立一个自动生成的模板规则呢。
mybatis-generator就是专门为了解决这个问题而出现的。
接下来我们围绕着以下三点进行展开:
一、mybatis-generator是什么
MyBatis Generator是一个可以用来生成Mybatis dao,entity,Mapper文件的一个工具,在项目的过程中可以省去很多重复的工作,我们只要在MyBatis Generator的配置文件中配置好要生成的表名与包名,然后运行一条命令就会生成对应的文件。
二、mybatis-generator怎么用
首先我们需要在resource目录下新建一个generatorConfig.xml文件,文件内容如下所示:
<?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>
<!--mysql 连接数据库jar 这里选择自己本地位置-->
<classPathEntry location="C:\Users\a5974\.m2\repository\mysql\mysql-connector-java\5.1.39\mysql-connector-java-5.1.39.jar" />
<context id="testTables" targetRuntime="MyBatis3">
<commentGenerator>
<!-- 是否去除自动生成的注释 true:是 : false:否 -->
<property name="suppressAllComments" value="true" />
</commentGenerator>
<!--数据库连接的信息:驱动类、连接地址、用户名、密码 -->
<jdbcConnection driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://localhost:3306/generotor" userId="root"
password="root">
</jdbcConnection>
<!-- 默认false,把JDBC DECIMAL 和 NUMERIC 类型解析为 Integer,为 true时把JDBC DECIMAL 和
NUMERIC 类型解析为java.math.BigDecimal -->
<javaTypeResolver>
<property name="forceBigDecimals" value="false" />
</javaTypeResolver>
<!-- targetProject:生成PO类的位置 -->
<javaModelGenerator targetPackage="com.huayun.safety.domain"
targetProject="src/main/java">
<!-- enableSubPackages:是否让schema作为包的后缀 -->
<property name="enableSubPackages" value="false" />
<!-- 从数据库返回的值被清理前后的空格 -->
<property name="trimStrings" value="true" />
</javaModelGenerator>
<!-- targetProject:mapper映射文件生成的位置
如果maven工程只是单独的一个工程,targetProject="src/main/java"
若果maven工程是分模块的工程,targetProject="所属模块的名称",例如:
targetProject="ecps-manager-mapper",下同-->
<sqlMapGenerator targetPackage="com.huayun.safety.repository"
targetProject="src/main/java">
<!-- enableSubPackages:是否让schema作为包的后缀 -->
<property name="enableSubPackages" value="false" />
</sqlMapGenerator>
<!-- targetPackage:mapper接口生成的位置 -->
<javaClientGenerator type="XMLMAPPER"
targetPackage="com.huayun.safety.repository"
targetProject="src/main/java">
<!-- enableSubPackages:是否让schema作为包的后缀 -->
<property name="enableSubPackages" value="false" />
</javaClientGenerator>
<!-- 指定数据库表 -->
<table schema="" tableName="c"></table>
</context>
</generatorConfiguration>
上方配置中的classPathEntry需要指定mysql的连接jar包本地目录,即使你的工程是maven工程也要指定好本地对应的mysql连接jar包,可以到maven仓库中查找。而jdbcConnection的连接信息修改成读者的连接信息,table节点中的tableName属性对应数据库中的表名,可以写多个table节点,并且targetPackage需要修改成读者对应的工程目录即可,如果是第一次使用mybatis-generator需要做好与手动书写的文件分开的工作,以免出现混乱的情况。
在pom文件中的plugins节点中,加入以下内容:
<!--为了测试mybatis逆向工程而新增的pom内容-->
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.2</version>
<configuration>
<!--配置文件的位置-->
<configurationFile>src/main/resources/generatorConfig.xml</configurationFile>
<verbose>true</verbose>
<overwrite>true</overwrite>
</configuration>
<executions>
<execution>
<id>Generate MyBatis Artifacts</id>
<goals>
<goal>generate</goal>
</goals>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-core</artifactId>
<version>1.3.2</version>
</dependency>
</dependencies>
</plugin>
等待maven加载好pom文件之后,在IDEA的右侧就能看到相应的generator插件工具
双击之后,就能够在配置文件中配置的对应目录下看到实体类、接口mapper类以及mapper.xml文件了。
三、mybatis-generator的使用总结
自动生成的mybatis类文件以及xml文件确实极大的节省了我们的开发时间,但是通过查阅自动生成的文件内容,发现可扩展性并不高,而且自动生成的类名文件也不够友好。
一句话个人总结就是,可以参考mybatis-generator生成的文件,但是最好不要在生产环境中直接使用。例如自动生成的resultMap片段我们就能够直接拿来使用,而下方的CURD格式块最好还是要改写一下,否则容易对后期的代码维护造成困扰。