Mybatis代码生成器
Mybatis Generator是Mybatis提供的一个代码生成器,可以通过数据库中的表结构自动生成对应的Java、Mapper和XML文件。自动生成的代码基于Mybatis的最佳实践,可以大大减轻Java开发者的工作量,并且保证代码的规范性和正确性。
安装Mybatis Generator
Mybatis Generator是一个Java程序,可以通过Maven来进行安装。将以下内容加入到pom.xml文件中:
<build>
<plugins>
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.4.0</version>
<dependencies>
<dependency>
<groupId>mysql</groupId> <!-- 数据库驱动,根据实际情况修改 -->
<artifactId>mysql-connector-java</artifactId>
<version>5.1.45</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
配置Mybatis Generator
Mybatis Generator生成代码的依据是generatorConfig.xml配置文件和数据库中的表结构。generatorConfig.xml配置文件具有很大的灵活性,可以通过修改各种参数来生成不同的代码。以下是一个典型的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="context1">
<jdbcConnection connectionURL="jdbc:mysql://127.0.0.1:3306/mybatis"
driverClass="com.mysql.jdbc.Driver" password="root"
userId="root" />
<javaModelGenerator targetPackage="com.tianma.mybatis.model"
targetProject="src/main/java">
<property name="enableSubPackages" value="true" />
<property name="trimStrings" value="true" />
</javaModelGenerator>
<sqlMapGenerator targetPackage="com.tianma.mybatis.mapper"
targetProject="src/main/java">
<property name="enableSubPackages" value="true" />
</sqlMapGenerator>
<javaClientGenerator type="XMLMAPPER" targetPackage="com.tianma.mybatis.mapper"
targetProject="src/main/java">
<property name="enableSubPackages" value="true" />
</javaClientGenerator>
<table schema="mybatis" tableName="user">
<property name="useActualColumnNames" value="false" />
<generatedKey column="id" sqlStatement="SELECT LAST_INSERT_ID()"
identity="true" />
<columnOverride column="password" property="pwd" />
</table>
</context>
</generatorConfiguration>
使用Mybatis Generator生成代码
在配置文件和数据库结构准备好之后,可以使用Mybatis Generator生成代码。在Maven的控制台中输入以下命令即可:
mvn mybatis-generator:generate
使用自定义注解来生成代码
我们可以通过给表结构添加注解的方式,让Mybatis Generator能够根据注解来生成对应的代码。以下是一个示例:
@TableName("user")
public class User {
private Long id;
@TableField("username")
private String name;
@TableField("password")
private String pwd;
// ...
}
通过添加注解@TableField和@TableName可以让Mybatis Generator根据注解来自动生成对应的XML、Mapper以及Java对象的属性以及对应的getter/setter方法。
使用自定义注释来生成代码
我们还可以通过添加自定义注释的方式来生成代码。以下是一个示例:
/**
* 用户表
*
* CREATE TABLE `user` (
* `id` bigint(20) NOT NULL AUTO_INCREMENT,
* `username` varchar(255) NOT NULL COMMENT '用户名',
* `password` varchar(255) NOT NULL COMMENT '密码',
* PRIMARY KEY (`id`)
* ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='用户表';
*/
public class User {
private Long id;
private String name;
private String pwd;
// ...
}
通过在Java代码中添加注释,我们可以让Mybatis Generator在生成对应的XML、Mapper和Java对象的时候,使用我们给定的注释来生成对应的注释说明。这样可以让生成的代码更加清晰明了。
示例一
下载MySQL Connector/J
下载地址:https://dev.mysql.com/downloads/connector/j/
添加依赖
将以下依赖添加到pom.xml中:
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.44</version>
</dependency>
配置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="default">
<jdbcConnection driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://localhost:3306/mybatis"
userId="root" password="root">
</jdbcConnection>
<javaModelGenerator targetPackage="com.mybatis.entity" targetProject="src/main/java">
<property name="enableSubPackages" value="true"/>
<property name="trimStrings" value="true"/>
</javaModelGenerator>
<sqlMapGenerator targetPackage="mapper" targetProject="src/main/resources">
<property name="enableSubPackages" value="true"/>
</sqlMapGenerator>
<javaClientGenerator targetPackage="com.mybatis.mapper" targetProject="src/main/java" type="XMLMAPPER">
<property name="enableSubPackages" value="true"/>
</javaClientGenerator>
<table tableName="t_order" domainObjectName="Order"></table>
</context>
</generatorConfiguration>
运行生成代码
运行 mvn mybatis-generator:generate
,代码会自动生成到对应的包目录下。
示例二
以下是 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="default">
<commentGenerator>
<property name="suppressAllComments" value="false"/>
<property name="addRemarks" value="true" />
</commentGenerator>
<!-- 数据库连接 -->
<jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://localhost:3306/test?useSSL=false" userId="root" password="root">
</jdbcConnection>
<!-- 代码生成器 -->
<javaTypeResolver>
<property name="forceBigDecimals" value="false"/>
</javaTypeResolver>
<javaModelGenerator targetPackage="com.test.mybatis.model" targetProject="src/main/java">
<property name="enableSubPackages" value="true"/>
<property name="trimStrings" value="false"/>
</javaModelGenerator>
<sqlMapGenerator targetPackage="mapper" targetProject="src/main/resources">
<property name="enableSubPackages" value="true"/>
</sqlMapGenerator>
<javaClientGenerator targetPackage="com.test.mybatis.mapper" type="XMLMAPPER" targetProject="src/main/java">
<property name="enableSubPackages" value="true"/>
</javaClientGenerator>
<!-- 表生成器 -->
<table tableName="t_user">
<property name="useActualColumnNames" value="true" />
</table>
</context>
</generatorConfiguration>
其中,我们使用了commentGenerator来生成注释说明,jdbcConnection连接了本地环境下的test数据库,javaModelGenerator用于生成对应的Java对象,sqlMapGenerator用于生成对应的Mapper XML文件,而javaClientGenerator用于生成对应的Mapper接口。在table节点中,我们指定了生成对应的表结构,其中useActualColumnNames设置为true,表示使用表中的实际列名作为Java类的属性名,而不是按照Mybatis的默认规则进行命名。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:mybatis代码生成+自定义注解+自定义注释实例 - Python技术站