简介:Mybatis-Generator是一款自动生成Mybatis代码的工具,可生成DAO、Model和Mapper XML文件,提高开发效率。本课程设计项目经过测试,旨在帮助学生掌握Mybatis-Generator的使用,包括配置XML文件、生成代码、使用自定义插件等。学生将通过实践任务,提升在Mybatis框架中开发应用的能力,为未来在实际项目中的应用打下坚实基础。
1. Mybatis-Generator简介
Mybatis-Generator是一个代码生成工具,可以根据数据库表结构自动生成Java代码,包括Model类、Mapper接口和XML映射文件。它极大地简化了持久层代码的开发,提高了开发效率。
2. XML配置文件配置
2.1 基本配置项
2.1.1 targetRuntime
| 参数 | 说明 | 默认值 | |---|---|---| | targetRuntime | 生成代码的目标运行时 | Mybatis3 |
2.1.2 targetPackage
| 参数 | 说明 | 默认值 | |---|---|---| | targetPackage | 生成的代码包名 | 未指定 |
2.1.3 typeAliasesPackage
| 参数 | 说明 | 默认值 | |---|---|---| | typeAliasesPackage | 生成的别名包名 | 未指定 |
2.2 数据库连接信息配置
2.2.1 JDBC driver
| 参数 | 说明 | 默认值 | |---|---|---| | JDBC driver | 数据库连接驱动 | 未指定 |
2.2.2 JDBC URL
| 参数 | 说明 | 默认值 | |---|---|---| | JDBC URL | 数据库连接URL | 未指定 |
2.2.3 JDBC 用户名
| 参数 | 说明 | 默认值 | |---|---|---| | JDBC 用户名 | 数据库连接用户名 | 未指定 |
2.2.4 JDBC 密码
| 参数 | 说明 | 默认值 | |---|---|---| | JDBC 密码 | 数据库连接密码 | 未指定 |
2.3 生成目标配置
2.3.1 modelType
| 参数 | 说明 | 默认值 | |---|---|---| | modelType | 生成的Model类类型 | flat |
2.3.2 mapperType
| 参数 | 说明 | 默认值 | |---|---|---| | mapperType | 生成的Mapper接口类型 | ANNOTATEDMAPPER |
2.3.3 sqlMapType
| 参数 | 说明 | 默认值 | |---|---|---| | sqlMapType | 生成的SQL映射文件类型 | XMLMAPPER |
2.4 表选择与配置
2.4.1 table
| 参数 | 说明 | 默认值 | |---|---|---| | table | 要生成的表的名称 | 未指定 |
2.4.2 tableName
| 参数 | 说明 | 默认值 | |---|---|---| | tableName | 表名 | 未指定 |
2.4.3 domainObjectName
| 参数 | 说明 | 默认值 | |---|---|---| | domainObjectName | 生成的Model类名称 | 根据tableName自动生成 |
2.5 自定义插件编写
2.5.1 插件原理
Mybatis-Generator插件是一种扩展机制,允许用户自定义代码生成过程。插件可以拦截代码生成过程中的特定事件,并根据需要修改或扩展生成的代码。
2.5.2 插件编写步骤
- 编写插件类,实现
org.mybatis.generator.api.Plugin
接口。 - 在插件类中重写
processConfiguration()
方法,用于处理XML配置文件中的配置信息。 - 在插件类中重写
generate()
方法,用于生成代码。 - 在
generate()
方法中,根据需要修改或扩展生成的代码。 - 在XML配置文件中配置插件。
3. Mybatis-Generator代码生成实战
3.1 准备工作
3.1.1 导入依赖
在项目中导入Mybatis-Generator依赖:
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-generator</artifactId>
<version>1.3.7</version>
</dependency>
3.1.2 创建XML配置文件
创建名为 generatorConfig.xml
的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>
<!-- 数据库连接信息 -->
<jdbcConnection driverClass="com.mysql.jdbc.Driver"
connectionString="jdbc:mysql://localhost:3306/test"
userId="root"
password="123456"/>
<!-- 生成目标配置 -->
<javaModelGenerator targetPackage="com.example.demo.model"
targetProject="src/main/java"/>
<sqlMapGenerator targetPackage="com.example.demo.mapper"
targetProject="src/main/resources"/>
<javaClientGenerator targetPackage="com.example.demo.mapper"
targetProject="src/main/java"
type="XMLMAPPER"/>
<!-- 表选择与配置 -->
<table tableName="user"/>
</generatorConfiguration>
3.2 代码生成
3.2.1 命令行生成
使用命令行执行以下命令生成代码:
mvn mybatis-generator:generate
3.2.2 Maven插件生成
在pom.xml文件中配置Maven插件生成代码:
<build>
<plugins>
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.7</version>
<executions>
<execution>
<id>generate-sources</id>
<goals>
<goal>generate</goal>
</goals>
</execution>
</executions>
<configuration>
<configurationFile>src/main/resources/generatorConfig.xml</configurationFile>
<verbose>true</verbose>
<overwrite>true</overwrite>
</configuration>
</plugin>
</plugins>
</build>
执行 mvn clean install
命令生成代码。
4. Model类设计与实现
4.1 Model类结构
4.1.1 属性
Model类中的属性通常对应于数据库表中的列,用于存储实体对象的数据。属性的类型应与数据库列的数据类型相匹配,以确保数据的准确性和完整性。例如:
public class User {
private Integer id;
private String username;
private String password;
private Date createTime;
private Date updateTime;
}
4.1.2 构造方法
Model类通常提供无参构造方法和带参构造方法。无参构造方法用于创建空对象,而带参构造方法用于根据指定的参数值创建对象。例如:
public User() {}
public User(Integer id, String username, String password, Date createTime, Date updateTime) {
this.id = id;
this.username = username;
this.password = password;
this.createTime = createTime;
this.updateTime = updateTime;
}
4.1.3 Getter和Setter方法
Getter和Setter方法用于获取和设置Model类中的属性值。这些方法通常遵循JavaBean规范,以"get"和"set"开头,后跟属性名称的首字母大写。例如:
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
4.2 Model类设计原则
4.2.1 可变性原则
Model类应该具有可变性,即允许在需要时修改其属性值。这可以通过提供Setter方法来实现。可变性原则使Model类能够适应不同的业务场景,并根据需要进行修改。
4.2.2 职责单一原则
Model类应遵循职责单一原则,即只负责存储和管理数据,而不包含任何业务逻辑或其他功能。这有助于保持Model类的简洁性和可维护性。
4.2.3 可扩展性原则
Model类应具有可扩展性,以支持未来的扩展和修改。这可以通过使用接口或抽象类来定义Model类的公共行为,并允许通过实现或继承来扩展Model类。
5. Mapper接口设计与实现
5.1 Mapper接口结构
Mapper接口是MyBatis中用于定义数据库操作的方法,它是一个接口,其方法名对应着SQL语句的ID,方法参数对应着SQL语句的参数,方法返回值对应着SQL语句的查询结果。
5.1.1 方法签名
Mapper接口方法的签名遵循以下格式:
public <返回类型> <方法名>(<参数类型> <参数名>);
其中:
-
<返回类型>
:方法的返回值类型,可以是基本类型、包装类型、POJO类或集合类型。 -
<方法名>
:方法的名称,对应着SQL语句的ID。 -
<参数类型>
:方法的参数类型,可以是基本类型、包装类型、POJO类或Map类型。 -
<参数名>
:方法的参数名称。
5.1.2 注解使用
Mapper接口的方法上可以使用MyBatis提供的注解来指定SQL语句的ID、参数映射和结果映射等信息。常用的注解包括:
-
@Select
:指定SQL语句的ID,用于查询操作。 -
@Insert
:指定SQL语句的ID,用于插入操作。 -
@Update
:指定SQL语句的ID,用于更新操作。 -
@Delete
:指定SQL语句的ID,用于删除操作。 -
@Param
:指定方法参数与SQL语句参数的映射关系。 -
@Results
:指定查询结果与POJO类的映射关系。
5.2 Mapper接口设计原则
在设计Mapper接口时,应遵循以下原则:
5.2.1 接口隔离原则
接口隔离原则要求将不同的功能模块分离到不同的接口中,避免一个接口过于庞大。例如,可以将查询操作和更新操作分别定义在不同的接口中。
5.2.2 命名规范原则
方法名应遵循驼峰命名法,并与SQL语句的ID保持一致。例如,查询用户的方法可以命名为 getUserById
,对应的SQL语句ID为 getUserById
。
5.2.3 异常处理原则
Mapper接口的方法应声明抛出 MyBatisSystemException
异常,该异常封装了MyBatis在执行SQL语句时发生的异常。
简介:Mybatis-Generator是一款自动生成Mybatis代码的工具,可生成DAO、Model和Mapper XML文件,提高开发效率。本课程设计项目经过测试,旨在帮助学生掌握Mybatis-Generator的使用,包括配置XML文件、生成代码、使用自定义插件等。学生将通过实践任务,提升在Mybatis框架中开发应用的能力,为未来在实际项目中的应用打下坚实基础。