MyBatis Generator使用方法教程
MyBatis Generator是一个可以将数据库表结构直接转换为Java实体类的工具,使用它可以省去手动编写Java实体类的过程,提高开发效率。本文将详细讲解MyBatis Generator的使用方法,并且会演示如何生成带注释的实体类。
准备工作
在开始使用MyBatis Generator之前,需要完成以下准备工作:
- 安装Java和Maven
- 创建一个Java项目
-
添加MyBatis和MyBatis Generator依赖
<dependencies>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.6</version>
</dependency>
<dependency>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-core</artifactId>
<version>1.4.0</version>
</dependency>
</dependencies>
配置文件
MyBatis Generator需要一个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>
<classPathEntry location="./mysql-connector-java-8.0.23.jar" />
<context id="DB2Tables" targetRuntime="MyBatis3">
<!-- 数据库连接信息 -->
<jdbcConnection driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://localhost:3306/mybatis_demo"
userId="root"
password="123456">
</jdbcConnection>
<!-- 实体类生成的包名 -->
<javaModelGenerator targetPackage="com.example.entity"
targetProject="src/main/java">
<property name="enableSubPackages" value="true" />
<property name="trimStrings" value="true" />
</javaModelGenerator>
<!-- Mapper类生成的包名 -->
<sqlMapGenerator targetPackage="com.example.mapper"
targetProject="src/main/resources">
<property name="enableSubPackages" value="true" />
</sqlMapGenerator>
<!-- DAO生成的包名 -->
<javaClientGenerator targetPackage="com.example.mapper"
targetProject="src/main/java"
type="XMLMAPPER">
<property name="enableSubPackages" value="true" />
</javaClientGenerator>
<!-- 表名和实体类的映射信息 -->
<table schema="mybatis_demo" tableName="user">
<generatedKey column="id" sqlStatement="JDBC"/>
</table>
</context>
</generatorConfiguration>
以上配置文件指定了以下内容:
- 数据库连接信息
- 实体类、Mapper类、DAO生成的包名
- 表名和实体类的映射信息
在此基础上,我们可以对实体类进行注释。
生成带注释的实体类
在配置文件中添加以下内容:
<!-- 配置实体类的属性注释 -->
<commentGenerator>
<property name="suppressAllComments" value="false"/>
<property name="addRemarkComments" value="true"/>
<property name="dateFormat" value="yyyy-MM-dd"/>
</commentGenerator>
suppressAllComments
表示是否禁止所有注释,addRemarkComments
表示是否对实体类的属性添加注释。其中,dateFormat
表示注释中的日期格式。
完成配置文件后,启动Maven项目并执行以下命令就可以生成实体类了:
$ mvn mybatis-generator:generate
执行完毕后,在对应的包路径下就可以找到生成的带注释的实体类了。
示例
示例中假设MySQL数据库创建了以下表和数据:
CREATE TABLE `user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(20) DEFAULT NULL,
`age` int(11) DEFAULT NULL,
`gender` varchar(4) DEFAULT NULL COMMENT '性别',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4;
INSERT INTO `user` (`id`, `name`, `age`, `gender`)
VALUES
(1, 'Alice', 20, '女'),
(2, 'Bob', 23, '男');
配置文件
创建并编辑mybatis-generator-config.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>
<classPathEntry location="./mysql-connector-java-8.0.23.jar" />
<context id="DB2Tables" targetRuntime="MyBatis3">
<!-- 数据库连接信息 -->
<jdbcConnection driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://localhost:3306/test"
userId="root"
password="root">
</jdbcConnection>
<!-- 实体类生成的包名 -->
<javaModelGenerator targetPackage="com.example.entity"
targetProject="src/main/java">
<property name="enableSubPackages" value="true" />
<property name="trimStrings" value="true" />
</javaModelGenerator>
<!-- Mapper类生成的包名 -->
<sqlMapGenerator targetPackage="com.example.mapper"
targetProject="src/main/resources">
<property name="enableSubPackages" value="true" />
</sqlMapGenerator>
<!-- DAO生成的包名 -->
<javaClientGenerator targetPackage="com.example.mapper"
targetProject="src/main/java"
type="XMLMAPPER">
<property name="enableSubPackages" value="true" />
</javaClientGenerator>
<!-- 表名和实体类的映射信息 -->
<table schema="test" tableName="user">
<generatedKey column="id" sqlStatement="JDBC"/>
</table>
<!-- 配置实体类的属性注释 -->
<commentGenerator>
<property name="suppressAllComments" value="false"/>
<property name="addRemarkComments" value="true"/>
<property name="dateFormat" value="yyyy-MM-dd"/>
</commentGenerator>
</context>
</generatorConfiguration>
其中,addRemarkComments
的值指定为true,表示要为实体类的属性添加注释。
生成实体类
在Maven项目中执行以下命令即可生成带注释的实体类:
$ mvn mybatis-generator:generate
生成的实体类代码如下:
package com.example.entity;
import java.util.Date;
/**
* Table: user
*/
public class User {
/**
* 主键
*
* Column: id
*/
private Integer id;
/**
* 姓名
*
* Column: name
*/
private String name;
/**
* 年龄
*
* Column: age
*/
private Integer age;
/**
* 性别
*
* Column: gender
*/
private String gender;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name == null ? null : name.trim();
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender == null ? null : gender.trim();
}
}
生成Mapper类和DAO接口
在Maven项目中执行以下命令:
$ mvn mybatis-generator:generate
生成的Mapper类和DAO接口代码如下:
package com.example.mapper;
import com.example.entity.User;
import com.example.entity.UserExample;
import java.util.List;
import org.apache.ibatis.annotations.Param;
public interface UserMapper {
long countByExample(UserExample example);
int deleteByExample(UserExample example);
int deleteByPrimaryKey(Integer id);
int insert(User record);
int insertSelective(User record);
List<User> selectByExample(UserExample example);
User selectByPrimaryKey(Integer id);
int updateByExampleSelective(@Param("record") User record, @Param("example") UserExample example);
int updateByExample(@Param("record") User record, @Param("example") UserExample example);
int updateByPrimaryKeySelective(User record);
int updateByPrimaryKey(User record);
}
package com.example.mapper;
import com.example.entity.User;
import com.example.entity.UserExample;
import java.util.List;
import org.apache.ibatis.annotations.Param;
public interface UserMapper {
long countByExample(UserExample example);
int deleteByExample(UserExample example);
int deleteByPrimaryKey(Integer id);
int insert(User record);
int insertSelective(User record);
List<User> selectByExample(UserExample example);
User selectByPrimaryKey(Integer id);
int updateByExampleSelective(@Param("record") User record, @Param("example") UserExample example);
int updateByExample(@Param("record") User record, @Param("example") UserExample example);
int updateByPrimaryKeySelective(User record);
int updateByPrimaryKey(User record);
}
结语
本文详细讲解了MyBatis Generator的使用方法,并演示了如何生成带注释的实体类。希望对读者有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:mybatis generator 使用方法教程(生成带注释的实体类) - Python技术站