一、前言
在讲逆向工程之前,本文默认你是已经了解了mybatis的基本使用,即增删改查和动态SQL语句。
二、数据库文件
这里我们需要用到一个数据表文件,所以你可以通过一下的命令SQL脚本快速创建一个数据表
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for user
-- ----------------------------
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`name` varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '姓名',
`age` int(11) NULL DEFAULT NULL COMMENT '年龄',
`email` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '邮箱',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of user
-- ----------------------------
INSERT INTO `user` VALUES (1, 'Jone', 18, 'test1@baomidou.com');
INSERT INTO `user` VALUES (2, 'Jack', 20, 'test2@baomidou.com');
INSERT INTO `user` VALUES (3, 'Tom', 28, 'test3@baomidou.com');
INSERT INTO `user` VALUES (4, 'Sandy', 21, 'test4@baomidou.com');
INSERT INTO `user` VALUES (5, 'Billie', 24, 'test5@baomidou.com');
SET FOREIGN_KEY_CHECKS = 1;
三、mybatis环境迅速搭建
我们迅速创建一个maven环境,我们这里用的是weapp模板
pom.xml需要引入的依赖
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>5.1.6</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.10</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.6</version>
</dependency>
接下来我们再resources目录下添加mapper目录、properties目录、mybatis-config.xml核心配置文件
mybaits-config.xml的配置文件信息,这里就不过多赘述,直接上文件内容
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!-- 配置文件信息 -->
<properties resource="properties/db.properties"></properties>
<!--配置别名-->
<typeAliases></typeAliases>
<!--分页插件-->
<plugins>
<plugin interceptor="com.github.pagehelper.PageInterceptor">
<property name="helperDialect" value="mysql"/>
</plugin>
</plugins>
<!--配置myabtis的数据库使用环境-->
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<!-- 从配置文件中加载属性 -->
<property name="driver" value="${db.driver}"/>
<property name="url" value="${db.url}"/>
<property name="username" value="${db.user}"/>
<property name="password" value="${db.password}"/>
</dataSource>
</environment>
</environments>
<mappers>
<!-- 加载前面编写的SQL语句的文件(还没有生成) -->
</mappers>
</configuration>
接下来就是数据库配置文件:db.propertis的配置内容
db.url=jdbc:mysql://localhost:3306/mybatis_plus?characterEncoding=utf8
db.user=root
db.password=root
db.driver=com.mysql.jdbc.Driver
接下来,再java目录下,创建两个包
四、创建逆向工程的配置文件:generatorConfig.xml
这个文件创建再resources目录下
直接先看整个配置文件: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>
<properties resource="properties/db.properties"></properties>
<classPathEntry
location="D:\apache-maven-3.8.5\resp\mysql\mysql-connector-java\5.1.10\mysql-connector-java-5.1.10.jar"/>
<context id="default" targetRuntime="MyBatis3">
<commentGenerator>
<property name="suppressDate" value="true"/>
<property name="suppressAllComments" value="true"/>
</commentGenerator>
<jdbcConnection driverClass="${db.driver}"
connectionURL="${db.url}"
userId="${db.user}"
password="${db.password}">
</jdbcConnection>
<javaTypeResolver>
<property name="forceBigDecimals" value="false"/>
</javaTypeResolver>
<javaModelGenerator targetPackage="cn.com.sise.model"
targetProject=".\src\main\java">
<property name="enableSubPackages" value="false"/>
<property name="trimStrings" value="true"/>
</javaModelGenerator>
<sqlMapGenerator targetPackage="mapper"
targetProject=".\src\main\resources">
<property name="enableSubPackages" value="false"/>
</sqlMapGenerator>
<javaClientGenerator type="XMLMAPPER"
targetPackage="cn.com.sise.dao" targetProject=".\src\main\java">
<property name="enableSubPackages" value="false"/>
</javaClientGenerator>
<table tableName="user"/>
</context>
</generatorConfiguration>
具体的分析:
1、配置文件的约束是固定的,一定要有的:
<?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">
2、配置文件的根标签是<generatorConfiguration>
3、导入属性配置一定放在第一位: <properties resource="properties/db.properties"></properties>
4、指定数据库驱动的jdbc驱动jar包的位置(用的一定是jar包)
<classPathEntry location="D:\apache-maven-3.8.5\resp\mysql\mysql-connector-java\5.1.10\mysql-connector-java-5.1.10.jar"/>
5、 context 标签是逆向工程的主要配置信息,其中id:配置名字、targetRuntime:设置生成的文件适用于那个 mybatis 版本
6、commentGenerator标签是可选标签,旨在创建class时,对注释进行控制
<commentGenerator>
<property name="suppressDate" value="true"/>
<!-- 是否去除自动生成的注释 true:是 : false:否 -->
<property name="suppressAllComments" value="true"/>
</commentGeneratqor>
7、配置数据的连接信息
<jdbcConnection driverClass="${db.driver}"
connectionURL="${db.url}"
userId="${db.user}"
password="${db.password}">
</jdbcConnection>
8、 <javaTypeResolver>类型处理器,非必须的,在数据库类型和java类型之间的转换控制,
默认情况下数据库中的 decimal,bigInt 在 Java 对应是 sql 下的 BigDecimal 类,不是 double 和 long 类型 ,使用常用的基本类型代替 sql 包下的引用类型
<javaTypeResolver>
<property name="forceBigDecimals" value="false"/>
</javaTypeResolver>
9、 生成java model层,targetPackage:生成的实体类所在的包; targetProject:生成的实体类所在的硬盘位置
<javaModelGenerator targetPackage="cn.com.sise.model"
targetProject=".\src\main\java">
<!-- 是否允许子包 -->
<property name="enableSubPackages" value="false"/>
<!-- 是否清理从数据库中查询出的字符串左右两边的空白字符 -->
<property name="trimStrings" value="true"/>
</javaModelGenerator>
10、mapper.xml文件的生成。targetPackage 和 targetProject:生成的 mapper.xml 文件的包和位置
<sqlMapGenerator targetPackage="mapper"
targetProject=".\src\main\resources">
<!-- 针对数据库的一个配置,是否把 schema 作为子包名,非必须 -->
<property name="enableSubPackages" value="false"/>
</sqlMapGenerator>
11、mapper接口的生成。targetPackage 和 targetProject:生成的 mapper接口文件的包和位置
<javaClientGenerator type="XMLMAPPER"
targetPackage="cn.com.sise.dao"
targetProject=".\src\main\java">
<!-- 针对 oracle 数据库的一个配置,是否把 schema 作为子包名 -->
<property name="enableSubPackages" value="false"/>
</javaClientGenerator>
12、这里指定要生成的表 ,可以有多个
<table tableName="user"/>
<table tableName="product"/>
五、在pom.xml中引入插件
插件坐标
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.2</version>
<configuration>
<!-- 输出日志 -->
<verbose>true</verbose>
<overwrite>true</overwrite>
</configuration>
</plugin>
引入之后:
双击运行此插件就可以看到逆向生成的mapper.xml 和mapper接口啦
六、逆向工程总结
mybatis官方提供了mapper自动生成工具mybatis-generator-core来针对单表,生成PO类,以及Mapper接口和mapper.xml映射文件。针对单表,可以不需要再手动编写xml配置文件和mapper接口文件了,非常方便。美中不足的是它不支持生成关联查询。一般做关联查询,就自己单独写SQL就好了。至于生成的实体类中UserExample和Usermapper的具体使用,我们下篇文章再具体讲解,如果对你有帮助的话点个关注和赞吧!