使用mybatis-generator逆向生成表对应的POJO类
环境和版本说明
IDEA 2017.2.7
maven 3.5.3
mybatis 3.4.1
mybatis-generator-core 1.3.6
postgresql 9.6
首先建立数据库表
pom.xml
文件中需要的相关依赖包
<!-- mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.1</version>
</dependency>
<!-- mybatis-generator-core -->
<dependency>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-core</artifactId>
<version>1.3.6</version>
</dependency>
<!-- postgresql -->
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>42.2.2</version>
</dependency>
添加 mybatis-generator-maven-plugin
插件.
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.6</version>
<dependencies>
<!-- mybatis-generator插件需要的依赖, 这里必须添加进来 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.1</version>
</dependency>
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>42.2.2</version>
</dependency>
</dependencies>
</plugin>
创建 generatorConfig.xml
配置文件
在 src/main/resources
包下创建逆向工程配置文件 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>
<context id="my_tables" targetRuntime="MyBatis3">
<!-- 注释相关设置 -->
<commentGenerator>
<!-- 是否去除自动生成的注释, true: 是; false: 否 -->
<property name="suppressAllComments" value="true" />
</commentGenerator>
<!--数据库连接的信息:驱动类、连接地址、用户名、密码 -->
<jdbcConnection driverClass="org.postgresql.Driver"
connectionURL="jdbc:postgresql://127.0.0.1:5432/springboot?charSet=utf-8"
userId="postgres"
password="password">
</jdbcConnection>
<!-- 默认false, 把JDBC DECIMAL 和 NUMERIC 类型解析为 Integer; 为 true 时把 JDBC DECIMAL 和
NUMERIC 类型解析为 java.math.BigDecimal -->
<javaTypeResolver>
<property name="forceBigDecimals" value="false" />
</javaTypeResolver>
<!-- 生成POJO类的位置. targetPackage为包名, targetProject为项目位置, 采用相对路径 -->
<javaModelGenerator targetPackage="com.tao.smp.generator.entity"
targetProject="src/main/java">
<!-- enableSubPackages: 是否让schema作为包的后缀 -->
<property name="enableSubPackages" value="false" />
</javaModelGenerator>
<!-- mapper映射文件生成的位置 -->
<!--<sqlMapGenerator targetPackage="com.tao.smp.generator.mapper"
targetProject="src/main/java">
<!– enableSubPackages: 是否让schema作为包的后缀 –>
<property name="enableSubPackages" value="false" />
</sqlMapGenerator>-->
<!-- mapper接口生成的位置 -->
<!--<javaClientGenerator type="XMLMAPPER"
targetPackage="com.tao.smp.generator.dao"
targetProject="src/main/java">
<!– enableSubPackages: 是否让schema作为包的后缀 –>
<property name="enableSubPackages" value="false" />
</javaClientGenerator>-->
<!-- 指定数据库表 -->
<table schema="" tableName="tb_classroom">
<domainObjectRenamingRule searchString="^Tb" replaceString="" />
</table>
<table schema="" tableName="tb_department">
<domainObjectRenamingRule searchString="^Tb" replaceString="" />
</table>
<table schema="" tableName="tb_employee">
<domainObjectRenamingRule searchString="^Tb" replaceString="" />
</table>
<table schema="" tableName="tb_post">
<domainObjectRenamingRule searchString="^Tb" replaceString="" />
</table>
<table schema="" tableName="tb_student">
<domainObjectRenamingRule searchString="^Tb" replaceString="" />
</table>
<table schema="" tableName="tb_user">
<domainObjectRenamingRule searchString="^Tb" replaceString="" />
</table>
<!-- 有些表的字段需要指定java类型
<table schema="" tableName="">
<columnOverride column="" javaType="" />
</table> -->
</context>
</generatorConfiguration>
需要修改的地方:
- javaModelGenerator, 生成PO类的位置
- sqlMapGenerator, mapper映射文件生成的位置
- javaClientGenerator, mapper接口生成的位置
- table, 其中tableName属性对应数据库中相应表
注意几点:
1、targetProject位置
<!-- 生成POJO类的位置. targetPackage为包名, targetProject为项目位置, 采用相对路径 -->
<javaModelGenerator targetPackage="com.tao.smp.generator.entity"
targetProject="src/main/java">
<!-- enableSubPackages: 是否让schema作为包的后缀 -->
<property name="enableSubPackages" value="false" />
</javaModelGenerator>
targetProject表示的是项目的相对位置, 这个相对位置相对的是你执行 mvn mybatis-generator:generate
的位置. 当我们点击IDEA下面一行中的 Terminal
窗口的时候, 打开了命令行界面, 此时项目已经定位到 项目名
下, 因此这里的targetProject的值我们填写 src/main/java
, 这是相对于我们的项目名的地址.
targetPackage则是要指定targetProject下的包名.
2、如何去掉生成的POJO实体类的前缀
默认情况下, 生成的POJO实体类和数据库表名是对应的, 也就是说 tb_user
表对应生成的POJO实体类为 TbUser
, 要想去掉 Tb
前缀, 可以通过添加 domainObjectRenamingRule
标签来达到目的.
<table schema="" tableName="tb_classroom">
<domainObjectRenamingRule searchString="^Tb" replaceString="" />
</table>
^
是正则表达式中表示从起始位置开始匹配的符号. searchString
作用的对象是生成的实体类的名字, 因此这里的是大写的 T
.
运行, 生成POJO实体类
点击 IDEA 的 Terminal
进入命令行界面, 输入 mvn mybatis-generator:generate
, 回车. 等待 BUILD SUCCESS
, 然后就能在对应的包下找到生成的实体类了.