Mybatis是一款优秀的ORM框架,在Java开发中广泛应用。然而,手写Mybatis代码工作量大、效率低,而Mybatis代码生成器可以帮助开发人员自动生成基本的CRUD代码,极大地提高了开发效率。
本文将介绍如何使用Mybatis代码生成器,并提供一份可供自行测试学习的代码,希望能对读者有所帮助。
1.前置要求
在介绍Mybatis代码生成器之前,我们需要安装以下工具:
- Java 8或以上版本
- Maven 3.2或以上版本
- MySQL 5.7或以上版本
- IDEA或Eclipse等Java开发IDE
还需要添加以下依赖:
<dependency>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-core</artifactId>
<version>1.4.0</version>
</dependency>
2.生成器配置
使用Mybatis代码生成器需要编写一个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="MyBatis3">
<commentGenerator>
<property name="suppressAllComments" value="true"/>
</commentGenerator>
<jdbcConnection driverClass="com.mysql.cj.jdbc.Driver" connectionURL="jdbc:mysql://localhost:3306/my_db" userId="root" password="root">
</jdbcConnection>
<javaTypeResolver>
<property name="forceBigDecimals" value="false"/>
</javaTypeResolver>
<javaModelGenerator targetPackage="com.my.company.model" targetProject="src/main/java">
<property name="enableSubPackages" value="true"/>
<property name="trimStrings" value="true"/>
</javaModelGenerator>
<sqlMapGenerator targetPackage="com.my.company.mapper" targetProject="src/main/resources">
<property name="enableSubPackages" value="true"/>
</sqlMapGenerator>
<javaClientGenerator type="XMLMAPPER" targetPackage="com.my.company.mapper" targetProject="src/main/java">
<property name="enableSubPackages" value="true"/>
</javaClientGenerator>
<table schema="my_db" tableName="user" domainObjectName="UserDO">
<generatedKey column="id" sqlStatement="MySql" identity="true"/>
</table>
</context>
</generatorConfiguration>
配置文件中各项的含义:
- context:Mybatis代码生成器的上下文,用于定义基本的生成规则。
- id:上下文的唯一标识符。
- targetRuntime:生成代码使用的Mybatis版本,此处为MyBatis3。
- jdbcConnection:指定使用的数据库驱动和数据库连接信息。
- javaTypeResolver:Java类型映射设置,避免生成代码中类型错误。
- javaModelGenerator:生成Java实体类的路径和包名。
- sqlMapGenerator:生成Mybatis映射文件的路径和包名。
- javaClientGenerator:生成DAO接口和Mapper XML文件的路径和包名。
- table:指定对应的数据库表名和生成的Java实体类名称。
在配置完成后,可通过Mybatis Generator插件执行对应的命令,来生成完整的代码。
3.使用示例
为了方便读者参考学习,我们提供一个简单的使用示例。
首先,在MySQL数据库中创建名为my_db
的数据库,并将以下SQL语句保存为user.sql
并执行:
CREATE TABLE `user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(100) DEFAULT '',
`age` int(11) DEFAULT '0',
`gender` tinyint(4) DEFAULT '0',
PRIMARY KEY (`id`)
) ENGINE=InnoDB
接下来,在IDEA或其他Java开发IDE中打开一个Maven项目,并在pom.xml中添加以下依赖:
<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.25</version>
</dependency>
然后,在项目的根目录下创建一个Mybatis Generator配置文件,命名为generatorConfig.xml
,并使用上述的样例配置文件来进行配置。
接着,在IDEA的Terminal中执行以下命令:
mvn mybatis-generator:generate -Dmybatis.generator.configurationFile=generatorConfig.xml
此命令将会根据配置文件中指定的数据库信息和表信息,自动生成相应的Java实体类、DAO接口和Mapper XML文件,生成的文件将分别被保存在指定的包名和路径中。
为了验证生成的代码是否能够正常使用,我们还需要做一些简单的配置和测试。
首先,在项目的src/main/resources
目录下创建一个名为application.yml
的配置文件,内容如下:
server:
port: 8080
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/my_db?useUnicode=true&characterEncoding=utf-8&autoReconnect=true&failOverReadOnly=false&allowMultiQueries=true&zeroDateTimeBehavior=convertToNull&useSSL=false
username: root
password: root
mybatis:
mapper-locations: classpath*:mapper/*.xml
type-aliases-package: com.my.company.model
然后,在src/main/java
目录下创建一个名为UserController
的Controller类,并添加如下代码:
package com.my.company.controller;
import com.my.company.mapper.UserMapper;
import com.my.company.model.UserDO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class UserController {
@Autowired
private UserMapper userMapper;
@PostMapping("/user")
public String addUser(@RequestBody UserDO user) {
userMapper.insert(user);
return "success";
}
}
这个Controller类中,我们引入了生成的UserMapper和UserDO实体类,并在addUser
方法中调用了Mapper中自动生成的insert
方法来保存用户数据。
最后,我们可以启动项目,并通过Postman等工具来进行测试。
至此,我们已经成功地使用Mybatis代码生成器对数据库表生成了部分基础的CRUD代码,并在一个简单的示例中验证了生成的代码的可用性。接下来读者可以根据自己的需要对生成器进行进一步的配置和使用。
附上完整的代码供读者们参考学习:MybatisGeneratorDemo
结语
本文介绍了Mybatis的代码生成器,并提供了一个简单的示例,希望能够让读者对生成器的使用流程有所了解。当然,生成的代码只是一个初步的框架,具体的业务逻辑和功能还需要开发人员进行相应的补充和修改。最后,我们希望读者在实际开发中能够灵活使用生成器,并结合自己的经验和知识来完成高质量的开发工作,创造更优秀的软件产品。