Mybatis官方生成器(MBG)是由Mybatis官方提供的一个强大的代码生成工具,能够自动生成实体类、Mapper接口和XML映射文件,显著提高开发效率和代码的一致性。本文详细介绍了MBG的安装配置、基本使用方法及高级配置技巧,帮助开发者快速上手并充分利用Mybatis官方生成器资料。
Mybatis官方生成器简介
Mybatis官方生成器的概念
Mybatis Generator (MBG) 是一个由 Mybatis 官方提供的代码生成工具,它能够根据数据库表自动生成 Mybatis 使用的实体类、Mapper 接口、XML 映射文件等。MBG 可以显著提高开发效率,减少手动编写代码的工作量,同时也能够保证代码的一致性和规范性。
Mybatis官方生成器的作用与优势
Mybatis Generator 的主要作用是自动生成 Mybatis 所需的各种代码文件,具体包括:
- 实体类(Entity Class):根据数据库表结构自动生成 Java 实体类,这些实体类包含了与数据库表字段一一对应的属性。
- Mapper 接口(Mapper Interface):自动生成 Java 接口,该接口定义了对数据库表的增删改查等操作。
- XML 映射文件(XML Mapping File):自动生成 XML 文件,该文件中包含了 SQL 语句、参数映射和结果映射等内容。
MBG 的优势如下:
- 节省时间:开发过程中,生成 CRUD 操作代码的时间可以用来专注于业务逻辑的实现。
- 一致性:代码生成工具可以保证生成的代码格式一致、规范,减少了代码维护的负担。
- 灵活性:支持多种自定义配置,可以根据项目需求灵活调整生成的代码。
- 安全性:减少手动编写代码的错误,提高代码的质量和安全性。
安装与环境配置
在使用 Mybatis Generator 之前,需要确保开发环境已经配置好 Java 和 Maven。以下是安装和配置步骤:
-
安装 Maven:确保已经安装了 Maven,并配置了环境变量。可通过命令
mvn -v
检查 Maven 是否安装成功。 -
添加 Mybatis Generator 依赖:在项目的
pom.xml
文件中添加 Mybatis Generator 的依赖。例如:<dependencies> <dependency> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-core</artifactId> <version>1.4.0</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.26</version> </dependency> </dependencies>
-
配置数据库连接信息:在项目根目录下创建
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.dtd"> <generatorConfiguration> <classPathEntry location="path/to/mysql-connector-java-8.0.26.jar"/> <context id="DB2Tables" targetRuntime="MyBatis3"> <commentGenerator> <property name="suppressAllComments" value="true"/> </commentGenerator> <jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://localhost:3306/mydb" userId="root" password="password"/> <javaModelGenerator targetPackage="com.example.model" targetProject="src/main/java"/> <sqlMapGenerator targetPackage="com.example.mapper" targetProject="src/main/resources"/> <javaClientGenerator type="XMLMAPPER" targetPackage="com.example.mapper" targetProject="src/main/java"/> <table tableName="users" domainObjectName="User" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"/> </context> </generatorConfiguration>
-
运行 Mybatis Generator:通过 Maven 命令运行 Mybatis Generator 生成代码。在终端中执行以下命令:
mvn mybatis-generator:generate -Dconfig=src/main/resources/generatorConfig.xml
通过以上步骤,可以成功安装并配置好 Mybatis Generator,开始自动生成代码。
Mybatis官方生成器的快速上手
下载与安装Mybatis Generator
Mybatis Generator (MBG) 是一个开源的代码生成工具,用于生成 Mybatis 所需的 Entity 对象、Mapper 接口和 XML 映射文件。MBG 依赖于 Java 和 Maven,因此在开始之前,需要确保已经安装了这些工具。
-
安装 Java 和 Maven:确保系统上已经安装了 Java 和 Maven。可以通过以下命令检查是否安装成功:
java -version mvn -v
-
添加 MBG 依赖:在项目的
pom.xml
文件中添加 MBG 的依赖。例如:<dependencies> <dependency> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-core</artifactId> <version>1.4.0</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.26</version> </dependency> </dependencies>
-
配置数据库连接信息:在项目的根目录下创建
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.dtd"> <generatorConfiguration> <classPathEntry location="path/to/mysql-connector-java-8.0.26.jar"/> <context id="DB2Tables" targetRuntime="MyBatis3"> <commentGenerator> <property name="suppressAllComments" value="true"/> </commentGenerator> <jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://localhost:3306/mydb" userId="root" password="password"/> <javaModelGenerator targetPackage="com.example.model" targetProject="src/main/java"/> <sqlMapGenerator targetPackage="com.example.mapper" targetProject="src/main/resources"/> <javaClientGenerator type="XMLMAPPER" targetPackage="com.example.mapper" targetProject="src/main/java"/> <table tableName="users" domainObjectName="User" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"/> </context> </generatorConfiguration>
-
运行 MBG:通过 Maven 命令运行 MBG 生成代码。在终端中执行以下命令:
mvn mybatis-generator:generate -Dconfig=src/main/resources/generatorConfig.xml
通过以上步骤,可以成功下载和安装 Mybatis Generator,并生成所需的代码文件。
配置XML文件的基本步骤
在配置 generatorConfig.xml
文件时,需要设置数据库连接信息、生成代码的目标位置、目标包名等参数。以下是一些基本配置步骤:
-
配置数据库连接信息:
<jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://localhost:3306/mydb" userId="root" password="password"/>
该配置包含了数据库驱动类、连接 URL、用户名和密码。
-
配置 Java 模型生成器:
<javaModelGenerator targetPackage="com.example.model" targetProject="src/main/java"/>
targetPackage
是生成 Java 模型类的包名,targetProject
是生成 Java 类的目标项目路径。 -
配置 SQL 映射文件生成器:
<sqlMapGenerator targetPackage="com.example.mapper" targetProject="src/main/resources"/>
targetPackage
是生成 SQL 映射文件的包名,targetProject
是生成 SQL 映射文件的目标项目路径。 -
配置 Java 客户端生成器:
<javaClientGenerator type="XMLMAPPER" targetPackage="com.example.mapper" targetProject="src/main/java"/>
type
是生成的映射器类型,targetPackage
是生成映射器接口的包名,targetProject
是生成映射器接口的目标项目路径。 -
配置表格生成参数:
<table tableName="users" domainObjectName="User" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"/>
tableName
是数据库表名,domainObjectName
是生成的 Java 类名,其他参数用于控制是否生成特定的接口。
通过以上配置步骤,可以生成与数据库表对应的 Java 模型类、SQL 映射文件和映射器接口。
使用Mybatis Generator生成代码示例
假设有一个数据库表 users
,其结构如下:
Column Name | Data Type | Description |
---|---|---|
id | INT | 用户ID |
username | VARCHAR | 用户名 |
password | VARCHAR | 密码 |
VARCHAR | 电子邮件 |
下面是配置文件 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.dtd">
<generatorConfiguration>
<classPathEntry location="path/to/mysql-connector-java-8.0.26.jar"/>
<context id="DB2Tables" targetRuntime="MyBatis3">
<commentGenerator>
<property name="suppressAllComments" value="true"/>
</commentGenerator>
<jdbcConnection driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://localhost:3306/mydb"
userId="root"
password="password"/>
<javaModelGenerator targetPackage="com.example.model" targetProject="src/main/java"/>
<sqlMapGenerator targetPackage="com.example.mapper" targetProject="src/main/resources"/>
<javaClientGenerator type="XMLMAPPER" targetPackage="com.example.mapper" targetProject="src/main/java"/>
<table tableName="users" domainObjectName="User" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"/>
</context>
</generatorConfiguration>
执行生成命令:
mvn mybatis-generator:generate -Dconfig=src/main/resources/generatorConfig.xml
生成过程完成后,自动生成的代码如下:
-
Java 模型类:位于
src/main/java/com/example/model/User.java
,内容如下:package com.example.model; public class User { private int id; private String username; private String password; private String email; // Getters and Setters }
-
SQL 映射文件:位于
src/main/resources/com/example/mapper/UserMapper.xml
,内容如下:<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.example.mapper.UserMapper"> <table tableName="users" domainObjectName="User" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"/> <!-- Generated SQL statements --> </mapper>
-
映射器接口:位于
src/main/java/com/example/mapper/UserMapper.java
,内容如下:package com.example.mapper; import com.example.model.User; import org.apache.ibatis.annotations.Select; import java.util.List; public interface UserMapper { @Select("SELECT * FROM users WHERE id = #{id}") User selectUserById(int id); @Select("SELECT * FROM users") List<User> selectAllUsers(); }
通过以上步骤,可以成功生成与数据库表对应的 Java 模型类、SQL 映射文件和映射器接口。
Mybatis官方生成器基本配置
基本配置参数介绍
Mybatis Generator 的配置文件 generatorConfig.xml
中有许多配置参数,下面是一些常用的配置参数:
-
<context>
元素:定义代码生成的上下文环境。每个<context>
元素可以包含多个表(<table>
)的配置。<context id="DB2Tables" targetRuntime="MyBatis3"> <!-- 配置项 --> </context>
-
<commentGenerator>
元素:定义注释生成器,可以控制生成注释的格式和内容。<commentGenerator> <property name="suppressAllComments" value="true"/> </commentGenerator>
-
<jdbcConnection>
元素:定义数据库连接信息,包括驱动类、连接 URL、用户名和密码。<jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://localhost:3306/mydb" userId="root" password="password"/>
-
<javaModelGenerator>
元素:定义 Java 模型类生成器,指定生成 Java 类的目标包和项目路径。<javaModelGenerator targetPackage="com.example.model" targetProject="src/main/java"/>
-
<sqlMapGenerator>
元素:定义 SQL 映射文件生成器,指定生成 SQL 映射文件的目标包和项目路径。<sqlMapGenerator targetPackage="com.example.mapper" targetProject="src/main/resources"/>
-
<javaClientGenerator>
元素:定义 Java 客户端生成器,指定生成映射器接口的目标包和项目路径。<javaClientGenerator type="XMLMAPPER" targetPackage="com.example.mapper" targetProject="src/main/java"/>
<table>
元素:定义数据库表的配置,包括表名、生成 Java 类的类名、生成的接口类型等。<table tableName="users" domainObjectName="User"> <!-- 表配置 --> </table>
通过这些配置参数,可以精确控制生成的代码格式和内容。
输出目录与包名配置
在生成代码时,可以自定义输出目录和包名,使得生成的代码更加符合项目结构。以下是如何配置输出目录和包名的方法:
-
输出目录:输出目录指定了生成的 Java 文件和资源文件的位置。例如,Java 类的输出目录可以设置为
src/main/java
,SQL 映射文件的输出目录可以设置为src/main/resources
。 - 包名:包名指定了生成的 Java 类和接口的包名。例如,生成的 Java 类可以放在
com.example.model
包下,生成的接口可以放在com.example.mapper
包下。
下面是配置文件 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.dtd">
<generatorConfiguration>
<classPathEntry location="path/to/mysql-connector-java-8.0.26.jar"/>
<context id="DB2Tables" targetRuntime="MyBatis3">
<commentGenerator>
<property name="suppressAllComments" value="true"/>
</commentGenerator>
<jdbcConnection driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://localhost:3306/mydb"
userId="root"
password="password"/>
<javaModelGenerator targetPackage="com.example.model" targetProject="src/main/java"/>
<sqlMapGenerator targetPackage="com.example.mapper" targetProject="src/main/resources"/>
<javaClientGenerator type="XMLMAPPER" targetPackage="com.example.mapper" targetProject="src/main/java"/>
<table tableName="users" domainObjectName="User">
<!-- 表配置 -->
</table>
</context>
</generatorConfiguration>
通过上述配置,可以将生成的 Java 类放在 src/main/java/com/example/model
目录下,将生成的 SQL 映射文件放在 src/main/resources/com/example/mapper
目录下,将生成的映射器接口放在 src/main/java/com/example/mapper
目录下。
模板与自定义配置文件的使用
在某些情况下,可能需要根据项目的特定需求自定义生成的代码格式。Mybatis Generator 支持使用模板文件来自定义生成的代码。以下是如何使用模板文件的方法:
-
模板文件:模板文件定义了生成代码的格式和内容。可以通过
<property>
元素自定义模板文件的位置和参数。 - 配置模板文件:在
generatorConfig.xml
文件中,可以通过<property>
元素配置模板文件的位置和参数。
以下是配置文件 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.dtd">
<generatorConfiguration>
<classPathEntry location="path/to/mysql-connector-java-8.0.26.jar"/>
<context id="DB2Tables" targetRuntime="MyBatis3">
<commentGenerator>
<property name="suppressAllComments" value="true"/>
</commentGenerator>
<jdbcConnection driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://localhost:3306/mydb"
userId="root"
password="password"/>
<javaModelGenerator targetPackage="com.example.model" targetProject="src/main/java">
<property name="enableSubPackages" value="true"/>
<property name="trimStrings" value="true"/>
</javaModelGenerator>
<sqlMapGenerator targetPackage="com.example.mapper" targetProject="src/main/resources"/>
<javaClientGenerator type="XMLMAPPER" targetPackage="com.example.mapper" targetProject="src/main/java"/>
<table tableName="users" domainObjectName="User">
<property name="useActualColumnNames" value="true"/>
</table>
</context>
</generatorConfiguration>
在上述配置中,<javaModelGenerator>
元素中的 <property>
元素用于配置 Java 模型类的生成格式,例如 enableSubPackages
和 trimStrings
参数。<table>
元素中的 <property>
元素用于配置特定表的生成格式,例如 useActualColumnNames
参数。
通过以上方式,可以使用模板文件来自定义生成的代码格式和内容,以满足项目的特定需求。
Mybatis官方生成器高级配置
使用注解进行配置
Mybatis Generator 支持使用注解来配置生成的代码。通过注解可以更灵活地控制生成的代码格式和内容。以下是使用注解配置的示例:
-
添加注解依赖:确保
pom.xml
文件中包含了 Mybatis Generator 注解处理器的依赖。<dependencies> <dependency> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-core</artifactId> <version>1.4.0</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.26</version> </dependency> <dependency> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-annotations</artifactId> <version>1.4.0</version> <scope>provided</scope> </dependency> </dependencies>
-
使用注解配置表:在数据库表对应的 Java 类中使用注解来配置生成的代码。
import org.mybatis.generator.annotations.Table; import org.mybatis.generator.annotations.Column; @Table(tableName = "users") public class User { @Column(columnName = "id") private int id; @Column(columnName = "username") private String username; @Column(columnName = "password") private String password; @Column(columnName = "email") private String email; // Getters and Setters }
通过上述配置,可以使用注解来控制生成的代码格式和内容,例如表名、列名等。
动态SQL的支持
Mybatis Generator 支持生成动态 SQL 语句,使得生成的代码更加灵活和强大。以下是生成动态 SQL 的示例:
-
配置
generatorConfig.xml
文件:在配置文件中启用动态 SQL 生成。<?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.dtd"> <generatorConfiguration> <classPathEntry location="path/to/mysql-connector-java-8.0.26.jar"/> <context id="DB2Tables" targetRuntime="MyBatis3"> <commentGenerator> <property name="suppressAllComments" value="true"/> </commentGenerator> <jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://localhost:3306/mydb" userId="root" password="password"/> <javaModelGenerator targetPackage="com.example.model" targetProject="src/main/java"/> <sqlMapGenerator targetPackage="com.example.mapper" targetProject="src/main/resources"/> <javaClientGenerator type="XMLMAPPER" targetPackage="com.example.mapper" targetProject="src/main/java"/> <table tableName="users" domainObjectName="User" enableCountByExample="true" enableUpdateByExample="true" enableDeleteByExample="true" enableSelectByExample="true" selectByExampleQueryId="true"/> </context> </generatorConfiguration>
-
生成动态 SQL:执行生成命令后,Mybatis Generator 将生成对应动态 SQL 语句的代码。
mvn mybatis-generator:generate -Dconfig=src/main/resources/generatorConfig.xml
生成的代码示例如下:
-
SQL 映射文件:生成的 SQL 映射文件中包含动态 SQL 语句。
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.example.mapper.UserMapper"> <select id="selectUsersByExample" resultType="com.example.model.User"> SELECT * FROM users WHERE username LIKE #{username, jdbcType=VARCHAR, mode=IN} </select> </mapper>
-
映射器接口:生成的映射器接口中包含动态 SQL 方法。
package com.example.mapper; import com.example.model.User; import org.apache.ibatis.annotations.Select; import java.util.List; public interface UserMapper { @Select("SELECT * FROM users WHERE username LIKE #{username}") List<User> selectUsersByExample(String username); }
通过以上配置,可以生成支持动态 SQL 语句的代码,使得生成的代码更加灵活和强大。
对象关系的生成配置
Mybatis Generator 支持生成复杂对象关系的代码,使得生成的代码更加符合实际项目的需求。以下是生成复杂对象关系代码的示例:
-
配置
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.dtd"> <generatorConfiguration> <classPathEntry location="path/to/mysql-connector-java-8.0.26.jar"/> <context id="DB2Tables" targetRuntime="MyBatis3"> <commentGenerator> <property name="suppressAllComments" value="true"/> </commentGenerator> <jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://localhost:3306/mydb" userId="root" password="password"/> <javaModelGenerator targetPackage="com.example.model" targetProject="src/main/java"/> <sqlMapGenerator targetPackage="com.example.mapper" targetProject="src/main/resources"/> <javaClientGenerator type="XMLMAPPER" targetPackage="com.example.mapper" targetProject="src/main/java"/> <table tableName="users" domainObjectName="User" enableCountByExample="true" enableUpdateByExample="true" enableDeleteByExample="true" enableSelectByExample="true" selectByExampleQueryId="true"/> <table tableName="orders" domainObjectName="Order" enableCountByExample="true" enableUpdateByExample="true" enableDeleteByExample="true" enableSelectByExample="true" selectByExampleQueryId="true"> <generatedKey column="id" sqlStatement="MySql" identity="true"/> <association javaType="com.example.model.User" property="user"> <joinColumn column="user_id" javaType="int"/> </association> </table> </context> </generatorConfiguration>
-
生成复杂对象关系的代码:执行生成命令后,Mybatis Generator 将生成包含对象关系的代码。
mvn mybatis-generator:generate -Dconfig=src/main/resources/generatorConfig.xml
生成的代码示例如下:
-
Java 模型类:生成的 Java 模型类中包含对象关系。
package com.example.model; public class Order { private int id; private User user; // Getters and Setters }
-
映射器接口:生成的映射器接口中包含查询对象关系的方法。
package com.example.mapper; import com.example.model.Order; import com.example.model.User; import org.apache.ibatis.annotations.Select; import java.util.List; public interface OrderMapper { @Select("SELECT * FROM orders WHERE user_id = #{userId}") List<Order> selectOrdersByUserId(int userId); }
通过以上配置,可以生成复杂对象关系的代码,使得生成的代码更加符合实际项目的需求。
Mybatis官方生成器的常见问题
常见错误及解决方法
在使用 Mybatis Generator 生成代码时,可能会遇到一些常见的错误,以下是几个常见的错误及解决方法:
-
ClassNotFoundException
:当运行 Mybatis Generator 时,可能会出现ClassNotFoundException
错误,通常是因为缺少相关依赖。解决方法:确保
pom.xml
文件中包含了所有依赖。<dependencies> <dependency> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-core</artifactId> <version>1.4.0</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.26</version> </dependency> </dependencies>
-
IOException
:当读取配置文件或生成代码时,可能会出现IOException
错误。解决方法:检查配置文件的路径是否正确,确保文件可读。
-
MyBatisGeneratorException
:当配置文件格式不正确时,可能会出现MyBatisGeneratorException
错误。解决方法:检查配置文件的格式,确保符合 Mybatis Generator 的规范。
-
IllegalArgumentException
:当参数类型不正确时,可能会出现IllegalArgumentException
错误。解决方法:检查配置文件中的参数类型,确保参数类型正确。
生成的代码调试与优化
生成的代码可能会有一些默认的配置,这些配置可能不符合实际项目的需求。以下是一些调试和优化生成代码的方法:
-
调整生成的代码格式:通过配置文件中的参数,可以调整生成的代码格式。例如,可以通过
<property>
元素调整注释的生成。<commentGenerator> <property name="suppressAllComments" value="true"/> </commentGenerator>
-
自定义生成的代码:通过使用注解或模板文件,可以自定义生成的代码格式和内容。例如,可以在 Java 类中使用注解来调整生成的代码格式。
import org.mybatis.generator.annotations.Table; import org.mybatis.generator.annotations.Column; @Table(tableName = "users") public class User { @Column(columnName = "id") private int id; @Column(columnName = "username") private String username; @Column(columnName = "password") private String password; @Column(columnName = "email") private String email; // Getters and Setters }
-
调试生成的代码:通过运行生成的代码,可以调试生成的代码是否符合预期。
package com.example.mapper; import com.example.model.User; import org.apache.ibatis.annotations.Select; import java.util.List; public interface UserMapper { @Select("SELECT * FROM users WHERE id = #{id}") User selectUserById(int id); @Select("SELECT * FROM users") List<User> selectAllUsers(); }
通过以上方法,可以调试和优化生成的代码,使其更加符合实际项目的需求。
与实际项目集成的注意事项
在实际项目中使用 Mybatis Generator 生成代码时,需要注意以下几点:
-
代码版本控制:生成的代码通常应放入版本控制系统(如 Git),以便跟踪代码变更和团队协作。
git add src/main/java com/example/model/User.java git commit -m "Generate User model"
-
持续集成:可以将生成代码的步骤集成到持续集成(CI)流程中,确保生成的代码在每次代码变更时都是一致的。
stages: - generate-code generate-code: stage: generate-code script: - mvn mybatis-generator:generate -Dconfig=src/main/resources/generatorConfig.xml
-
测试覆盖率:确保生成的代码有足够的测试覆盖率,以验证生成的代码是否正确。
package com.example.mapper; import com.example.model.User; import org.apache.ibatis.session.SqlSession; import org.junit.jupiter.api.Test; import org.mockito.Mockito; import java.util.List; import static org.junit.jupiter.api.Assertions.assertEquals; public class UserMapperTest { private SqlSession sqlSession = Mockito.mock(SqlSession.class); private UserMapper userMapper = new UserMapper(sqlSession); @Test public void shouldSelectUserById() { User user = new User(); Mockito.when(sqlSession.selectOne(Mockito.eq("selectUserById"), Mockito.eq(1))).thenReturn(user); assertEquals(user, userMapper.selectUserById(1)); } }
- 代码审查:确保生成的代码经过代码审查,以确保代码质量符合项目标准。
通过以上注意事项,可以确保生成的代码在实际项目中稳定、高质量地运行。
Mybatis官方生成器的实践案例
小型项目应用示例
通过一个简单的示例,来展示如何在实际项目中使用 Mybatis Generator 生成代码。假设一个简单的用户管理系统,包含用户表 users
和订单表 orders
。
-
数据库表结构:
-
users
表:CREATE TABLE users ( id INT PRIMARY KEY, username VARCHAR(50), password VARCHAR(50), email VARCHAR(100) );
orders
表:CREATE TABLE orders ( id INT PRIMARY KEY, user_id INT, order_date DATE, FOREIGN KEY (user_id) REFERENCES users(id) );
-
-
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.dtd"> <generatorConfiguration> <classPathEntry location="path/to/mysql-connector-java-8.0.26.jar"/> <context id="DB2Tables" targetRuntime="MyBatis3"> <commentGenerator> <property name="suppressAllComments" value="true"/> </commentGenerator> <jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://localhost:3306/mydb" userId="root" password="password"/> <javaModelGenerator targetPackage="com.example.model" targetProject="src/main/java"/> <sqlMapGenerator targetPackage="com.example.mapper" targetProject="src/main/resources"/> <javaClientGenerator type="XMLMAPPER" targetPackage="com.example.mapper" targetProject="src/main/java"/> <table tableName="users" domainObjectName="User" enableCountByExample="true" enableUpdateByExample="true" enableDeleteByExample="true" enableSelectByExample="true" selectByExampleQueryId="true"/> <table tableName="orders" domainObjectName="Order" enableCountByExample="true" enableUpdateByExample="true" enableDeleteByExample="true" enableSelectByExample="true" selectByExampleQueryId="true"> <generatedKey column="id" sqlStatement="MySql" identity="true"/> <association javaType="com.example.model.User" property="user"> <joinColumn column="user_id" javaType="int"/> </association> </table> </context> </generatorConfiguration>
-
生成代码并调试:
- 运行生成命令:
mvn mybatis-generator:generate -Dconfig=src/main/resources/generatorConfig.xml
-
调试生成的代码:
package com.example.mapper; import com.example.model.Order; import com.example.model.User; import org.apache.ibatis.annotations.Select; import java.util.List; public interface OrderMapper { @Select("SELECT * FROM orders WHERE user_id = #{userId}") List<Order> selectOrdersByUserId(int userId); }
- 运行生成命令:
通过以上步骤,可以成功生成并调试与实际项目需求匹配的代码。
代码生成的策略与最佳实践
在实际项目中,代码生成的策略和最佳实践如下:
-
版本控制:确保生成的代码版本控制在 Git 等版本控制系统中,以便跟踪代码变更和团队协作。
git add src/main/java com/example/model/User.java git commit -m "Generate User model"
-
持续集成:将生成代码的步骤集成到持续集成(CI)流程中,确保每次代码变更时生成代码的一致性。
stages: - generate-code generate-code: stage: generate-code script: - mvn mybatis-generator:generate -Dconfig=src/main/resources/generatorConfig.xml
-
代码审查:确保生成的代码经过代码审查,以验证代码质量是否符合项目标准。
git pull origin master git add src/main/java com/example/model/User.java git commit -m "Update User model" git push origin master
-
测试覆盖率:确保生成的代码有足够的测试覆盖率,以保证生成的代码功能正确。
package com.example.mapper; import com.example.model.User; import org.apache.ibatis.session.SqlSession; import org.junit.jupiter.api.Test; import org.mockito.Mockito; import java.util.List; import static org.junit.jupiter.api.Assertions.assertEquals; public class UserMapperTest { private SqlSession sqlSession = Mockito.mock(SqlSession.class); private UserMapper userMapper = new UserMapper(sqlSession); @Test public void shouldSelectUserById() { User user = new User(); Mockito.when(sqlSession.selectOne(Mockito.eq("selectUserById"), Mockito.eq(1))).thenReturn(user); assertEquals(user, userMapper.selectUserById(1)); } }
Mybatis Generator与其他框架的集成
在实际项目中,Mybatis Generator 可以与其他框架集成,以提高开发效率。以下是与一些常见框架集成的示例:
-
Spring Boot:
- 在
pom.xml
文件中添加 Mybatis Generator 的依赖:<dependencies> <dependency> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-core</artifactId> <version>1.4.0</version> <scope>provided</scope> </dependency> </dependencies>
- 在
application.properties
或application.yml
文件中配置数据库连接信息:spring.datasource.url=jdbc:mysql://localhost:3306/mydb spring.datasource.username=root spring.datasource.password=password spring.datasource.driver-class-name=com.mysql.jdbc.Driver
- 在
-
Spring Data JPA:
- 在
pom.xml
文件中添加 Mybatis Generator 的依赖:<dependencies> <dependency> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-core</artifactId> <version>1.4.0</version> <scope>provided</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> </dependencies>
- 在
application.properties
或application.yml
文件中配置数据库连接信息:spring.datasource.url=jdbc:mysql://localhost:3306/mydb spring.datasource.username=root spring.datasource.password=password spring.datasource.driver-class-name=com.mysql.jdbc.Driver spring.jpa.hibernate.ddl-auto=update
- 在
- Spring Security:
- 在
pom.xml
文件中添加 Mybatis Generator 的依赖:<dependencies> <dependency> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-core</artifactId> <version>1.4.0</version> <scope>provided</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency> </dependencies>
- 在
application.properties
或application.yml
文件中配置数据库连接信息:spring.datasource.url=jdbc:mysql://localhost:3306/mydb spring.datasource.username=root spring.datasource.password=password spring.datasource.driver-class-name=com.mysql.jdbc.Driver
- 在
通过以上步骤,可以将 Mybatis Generator 与 Spring Boot、Spring Data JPA 和 Spring Security 等常见框架集成,提高开发效率。
共同学习,写下你的评论
评论加载中...
作者其他优质文章