MyBatis 的逆向工程(MyBatis Generator, MBG),帮助你根据数据库表自动生成 Java 实体类、Mapper 接口、XML 映射文件,极大提高开发效率。
一、什么是 MyBatis 逆向工程?
MyBatis 逆向工程(MBG)是官方提供的代码生成工具,用于自动从数据库表生成对应的 Java 代码,包括:
自动生成内容 | 示例说明 |
---|---|
实体类(Model) | 如 User.java 对应 t_user 表 |
Mapper 接口 | 如 UserMapper.java |
Mapper XML 文件 | 如 UserMapper.xml ,内含 select/insert/update/delete 语句 |
二、使用方式(标准 Maven 项目)
步骤 1:添加 Maven 插件
<build>
<plugins>
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.4.1</version>
<configuration>
<!-- 允许覆盖 -->
<overwrite>true</overwrite>
</configuration>
<!-- 插件的依赖 -->
<dependencies>
<!-- JDBC 驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.33</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
步骤 2:创建配置文件 generatorConfig.xml
1、配置文件名只能是generatorConfig.xml
2、配置文件只能放到resources文件夹下!
<?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>
<!--
targetRuntime有两个值:
MyBatis3Simlpe: 生成的是基础版,只有基本的增删改查
MyBatis3:生成的是增强版,除了基本的增删改查之外还有复杂的增删改查
-->
<context id="MyContext" targetRuntime="MyBatis3">
<!-- 防止生成重复代码 -->
<plugin type="org.mybatis.generator.plugins.UnmergeableXmlMappersPlugin" />
<!-- 注释信息的生成 -->
<commentGenerator>
<!-- 是否去掉生成日期 -->
<property name = "suppressDate" value="true" />
<!-- 是否去除注释 -->
<property name="suppressAllComments" value="true"/>
</commentGenerator>
<!-- 数据库连接信息 -->
<jdbcConnection driverClass="com.mysql.cj.jdbc.Driver"
connectionURL="jdbc:mysql://localhost:3306/wsbazinga?serverTimezone=UTC"
userId="root"
password="" />
<!-- JavaBean 生成位置 -->
<javaModelGenerator targetPackage="com.wsbazinga.advance.pojo"
targetProject="src/main/java" >
<!-- 是否开启了子包 -->
<property name="enableSubPackages" value="true"/>
<!-- 是否去除字段名前后空白 -->
<property name="trimStrings" value="true"/>
</javaModelGenerator>
<!-- Mapper XML 文件位置 -->
<sqlMapGenerator targetPackage="com.wsbazinga.advance.mapper"
targetProject="src/main/resources" >
<!-- 是否开启了子包 -->
<property name="enableSubPackages" value="true"/>
</sqlMapGenerator>
<!-- Mapper 接口生成位置 -->
<javaClientGenerator type="XMLMAPPER"
targetPackage="com.wsbazinga.advance.mapper"
targetProject="src/main/java" >
<!-- 是否开启了子包 -->
<property name="enableSubPackages" value="true"/>
</javaClientGenerator>
<!-- 要生成的表 -->
<table tableName="t_teacher" domainObjectName="Teacher"/>
</context>
</generatorConfiguration>
【注意】:
若是:targetRuntime="MyBatis3",会生成xxxExample.java文件,在pojo同目录下,条件查询构建器类。
这是因为:
MyBatis3
模式默认生成 基于 Example 的动态查询方法,比如:List<User> selectByExample(UserExample example); int deleteByExample(UserExample example);
这个
UserExample
类的作用是帮助你以 Java 对象方式动态构建复杂 WHERE 条件语句,替代你手动写 SQL 条件,非常适合多条件拼接查询。
Example
类作用演示:
比如你想查询年龄大于 25 且 name 包含 "wang" 的用户,传统写法是写 SQL:
SELECT * FROM user WHERE age > 25 AND name LIKE '%wang%'
而使用 Example 的写法是:
UserExample example = new UserExample();
UserExample.Criteria criteria = example.createCriteria();
criteria.andAgeGreaterThan(25);
criteria.andNameLike("%wang%");
List<User> users = userMapper.selectByExample(example);
QBC风格:query by criteria一种查询方式,比较面向对象,看不到sql语句。
步骤 3:使用
直接双击,即可。