本文详细介绍了Mybatis代码生成器项目实战,包括代码生成器的作用、工作原理、准备工作及生成代码后的项目整合与调试,帮助开发者快速掌握Mybatis代码生成器的使用方法。
Mybatis代码生成器简介Mybatis简介
Mybatis是一个优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。Mybatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。Mybatis可以使用简单的XML或注解进行配置和原始映射,将接口和Java的POJOs(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。
代码生成器的作用和优势
代码生成器的作用主要在于减少开发者手动编写Mapper接口、实体类和SQL语句的工作量。通过代码生成器,开发者只需要配置好相应的参数,就可以生成所需的代码,从而提高了开发效率和代码的一致性。代码生成器的优势还包括:
- 减少人为错误:手动编写代码时,容易出现拼写错误、类型错误等问题。代码生成器可以减少这些错误。
- 提高开发效率:代码生成器可以在短时间内生成大量的代码,减少了手动编写代码的时间。
- 维护一致性:通过代码生成器生成的代码遵循一定的规范,有利于维护代码的一致性和可读性。
Mybatis代码生成器的工作原理
Mybatis代码生成器的工作原理主要是通过读取数据库中的表结构信息,然后根据这些信息生成相应的Mapper接口、实体类和SQL语句。具体步骤如下:
- 连接数据库:代码生成器首先需要连接到指定的数据库。
- 获取表信息:连接成功后,代码生成器会获取数据库中指定表的结构信息。
- 生成代码:根据获取到的表信息,代码生成器会生成相应的Mapper接口、实体类和SQL语句。
- 输出代码:代码生成器将生成的代码输出到指定的位置。
代码生成器的配置文件通常包含以下内容:
- 数据库连接信息:包括数据库的URL、用户名和密码等。
- 表信息:包括生成代码的表名、生成的包名等。
- 生成的代码类型:包括Mapper接口、实体类、SQL语句等。
环境搭建
IDE
推荐使用IntelliJ IDEA或Eclipse作为开发环境,这两个IDE都支持Mybatis和Java开发。本文以IntelliJ IDEA为例进行说明,具体步骤如下:
- 下载并安装IntelliJ IDEA。
- 打开IntelliJ IDEA,创建一个Java项目,选择项目的名称和位置。
- 在项目中创建一个Maven工程,配置pom.xml文件,引入Mybatis的相关依赖。以下为pom.xml文件中的依赖配置:
<dependencies>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.6</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.23</version>
</dependency>
<dependency>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-core</artifactId>
<version>1.3.7</version>
</dependency>
</dependencies>
JDK版本
确保使用的JDK版本是8或以上版本,推荐使用JDK 11或17。
数据库准备
- 创建数据库和表
首先创建一个测试数据库testdb
,然后在该数据库中创建一个测试表user
,SQL语句如下:
CREATE DATABASE `testdb` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
USE `testdb`;
CREATE TABLE `user` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`username` VARCHAR(50) NOT NULL,
`password` VARCHAR(50) NOT NULL,
`email` VARCHAR(50) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=INNODB DEFAULT CHARSET=utf8mb4;
- 下载或搭建代码生成器插件
这里以Mybatis Generator插件为例,介绍如何下载和配置Mybatis Generator插件。
- 在项目中添加Mybatis Generator的依赖,具体配置已在上述pom.xml中给出。
- 创建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_1_0.dtd">
<generatorConfiguration>
<context id="DB2Tables" targetRuntime="MyBatis3Simple">
<commentGenerator>
<property name="suppressDate" value="true"/>
</commentGenerator>
<classPathEntry location="mysql-connector-java-8.0.23.jar"/>
<jdbcConnection driverType="MySQL">
<property name="connectionURL" value="jdbc:mysql://localhost:3306/testdb"/>
<property name="driverClass" value="com.mysql.cj.jdbc.Driver"/>
<property name="password" value="password"/>
<property name="userId" value="root"/>
</jdbcConnection>
<javaModelGenerator targetPackage="com.example.model" targetProject="target/classes">
<property name="enableSubPackages" value="true"/>
<property name="trimStrings" value="true"/>
</javaModelGenerator>
<sqlMapGenerator targetPackage="com.example.mappers" targetProject="target/classes">
<property name="enableSubPackages" value="true"/>
</sqlMapGenerator>
<javaClientGenerator type="ANNOTATED" targetPackage="com.example.mappers" targetProject="target/classes">
<property name="enableSubPackages" value="true"/>
</javaClientGenerator>
</context>
</generatorConfiguration>
上述配置文件中,<generatorConfiguration>
标签是配置文件的根标签,<context>
标签用于配置代码生成器的具体行为,包括数据库连接信息、生成的代码类型等。其中,<jdbcConnection>
标签用于配置数据库连接信息,<javaModelGenerator>
标签用于配置生成的实体类信息,<sqlMapGenerator>
标签用于配置生成的SQL映射文件信息,<javaClientGenerator>
标签用于配置生成的Mapper接口信息。
配置代码生成器插件的参数
在generatorConfig.xml
配置文件中,可以通过修改配置文件中的标签属性,来配置代码生成器的具体行为。例如,可以在<jdbcConnection>
标签中修改数据库连接信息,可以在<javaModelGenerator>
标签中修改生成的实体类信息,可以在<javaClientGenerator>
标签中修改生成的Mapper接口信息。
生成过程详解
生成过程主要包括以下几个步骤:
- 读取数据库表信息:代码生成器会读取数据库中指定表的结构信息。
- 生成代码:根据读取到的表信息,代码生成器会生成相应的Mapper接口、实体类和SQL语句。
- 输出代码:代码生成器将生成的代码输出到指定的位置。
生成代码的具体步骤如下:
- 打开IntelliJ IDEA,找到项目中的
generatorConfig.xml
配置文件。 - 右键点击
generatorConfig.xml
文件,选择Run MybatisGenerator.main()
,运行代码生成器。 - 查看生成的代码,生成的代码会输出到配置文件中指定的位置,例如
target/classes
目录下。
自定义生成的代码模板
如果需要自定义生成的代码模板,可以在generatorConfig.xml
配置文件中,通过修改标签属性,来配置代码生成器的具体行为。例如,可以在<javaModelGenerator>
标签中,修改生成的实体类的包名、生成实体类的根目录等。具体的配置如下:
<javaModelGenerator targetPackage="com.example.model" targetProject="target/classes">
<property name="enableSubPackages" value="true"/>
<property name="trimStrings" value="true"/>
</javaModelGenerator>
在上述配置中,targetPackage
属性用于指定生成的实体类的包名,targetProject
属性用于指定生成的实体类的根目录。enableSubPackages
属性用于指定是否生成子包,trimStrings
属性用于指定是否去掉字符串前后的空白字符。
生成的实体类示例如下:
package com.example.model;
public class User {
private Integer id;
private String username;
private String password;
private String email;
// getters and setters
}
生成的Mapper接口示例如下:
package com.example.mappers;
import com.example.model.User;
public interface UserMapper {
List<User> selectAll();
}
代码生成后项目的整合与调试
将生成的代码整合到现有项目中
- 将生成的Mapper接口和实体类复制到项目中指定的位置,例如
src/main/java/com/example/mappers
和src/main/java/com/example/model
目录下。 - 在项目中引入Mybatis的相关依赖,具体配置已在上述pom.xml中给出。
- 在Mybatis的配置文件
mybatis-config.xml
中,配置生成的Mapper接口,具体配置如下:
<configuration>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/testdb"/>
<property name="username" value="root"/>
<property name="password" value="password"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="com/example/mappers/UserMapper.xml"/>
</mappers>
</configuration>
在上述配置中,<mappers>
标签用于配置生成的Mapper接口,<mapper>
标签用于指定生成的Mapper接口的XML文件位置。
调试代码,确保生成的Mapper接口和实体类能够正常使用
- 编写测试代码,测试生成的Mapper接口和实体类的功能。测试代码示例如下:
import com.example.model.User;
import com.example.mappers.UserMapper;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import java.io.InputStream;
import java.util.List;
public class TestMybatisGenerator {
public static void main(String[] args) {
String resource = "mybatis-config.xml";
InputStream inputStream = TestMybatisGenerator.class.getClassLoader().getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
try (SqlSession session = sqlSessionFactory.openSession()) {
UserMapper mapper = session.getMapper(UserMapper.class);
List<User> users = mapper.selectAll();
for (User user : users) {
System.out.println(user.getId() + " " + user.getUsername() + " " + user.getPassword());
}
}
}
}
在上述测试代码中,首先读取Mybatis的配置文件mybatis-config.xml
,然后创建一个SqlSessionFactory对象,使用SqlSessionFactory对象创建一个SqlSession对象,获取生成的Mapper接口对象,执行相应的SQL语句,查询数据库中的数据。
- 运行测试代码,查看生成的Mapper接口和实体类的功能是否正常。
实例演示:从数据库生成代码并集成到项目中
- 创建一个测试数据库
testdb
,然后在该数据库中创建一个测试表user
,SQL语句已在上述章节中给出。 - 下载并安装IntelliJ IDEA,创建一个Java项目,配置pom.xml文件,引入Mybatis的相关依赖,具体配置已在上述章节中给出。
- 创建Mybatis Generator的配置文件
generatorConfig.xml
,配置文件内容已在上述章节中给出。 - 运行代码生成器,生成Mapper接口、实体类和SQL语句。
- 将生成的代码整合到现有项目中,具体步骤已在上述章节中给出。
- 调试代码,确保生成的Mapper接口和实体类能够正常使用。
常见问题解决与注意事项
-
生成的代码中存在错误,例如,生成的Mapper接口中的方法名称、生成的实体类中的属性名称等与实际的数据库表结构不一致。此时,可以通过修改
generatorConfig.xml
配置文件中的标签属性,来调整代码生成器的行为。 - 生成的Mapper接口中的SQL语句存在错误,例如,SQL语句中缺少某些关键字。此时,可以通过修改
generatorConfig.xml
配置文件中的标签属性,来调整代码生成器的行为。或者,可以在生成的Mapper接口中手动修改SQL语句,使其符合实际的数据库表结构。
如何维护和更新生成的代码
- 定期清理生成的代码:当数据库表结构发生更改时,需要重新生成代码,并清理之前的代码。
- 使用版本控制系统:可以使用版本控制系统(如Git)来管理生成的代码,便于维护和回滚。
- 自动化生成代码:可以使用自动化工具(如Mybatis Generator插件)来自动化生成代码,减少手动操作。
本教程回顾与总结
本教程介绍了Mybatis代码生成器的基本概念和使用方法,包括Mybatis简介、代码生成器的作用和优势、Mybatis代码生成器的工作原理、准备工作、使用Mybatis代码生成器生成实体类和Mapper接口、代码生成后项目的整合与调试、实战案例等。通过本教程,读者可以掌握Mybatis代码生成器的基本使用方法,快速生成Mapper接口、实体类和SQL语句。
Mybatis代码生成器的进阶使用方法
- 自定义生成代码的模板:
- 通过修改
generatorConfig.xml
配置文件中的标签属性,来调整代码生成器的行为。 - 通过修改生成的代码模板文件,来自定义生成的代码模板。
- 通过修改
- 自定义生成代码的规则:
- 通过修改
generatorConfig.xml
配置文件中的标签属性,来调整代码生成器的行为。 - 通过修改生成的代码模板文件,来自定义生成的代码模板。
- 通过修改
- 自定义生成代码的位置:
- 通过修改
generatorConfig.xml
配置文件中的标签属性,来调整代码生成器的行为。 - 通过修改生成的代码模板文件,来自定义生成的代码模板。
- 通过修改
推荐学习资源和社区交流
- 慕课网 提供了大量的Mybatis相关的课程和实战项目,适合不同水平的开发者学习。
- Mybatis官方文档:https://mybatis.org/mybatis-3/zh/index.html
- Mybatis Generator官方文档:https://mybatis.github.io/mybatis-generator/1.3.7/index.html
通过上述资源,开发者可以深入学习Mybatis和Mybatis Generator的相关知识,提高自己的开发能力。
共同學習,寫下你的評論
評論加載中...
作者其他優質文章