MyBatis逆向工程:由已有的数据库表自动生成 实体类、SQL映射接口、SQL映射文件
步骤:
一、配置pom文件:
① 引入mybatis的依赖:基本就是mybatis核心依赖、junit测试依赖、log4j的依赖
② 配置mybatis逆向工程所需的插件:如下
<build>
<!--构建过程中需要用到的插件-->
<plugins>
<!--具体插件,逆向工程的操作是以构建过程中插件的形式出现的-->
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.4.1</version>
<!--插件的依赖-->
<dependencies>
<!--逆向工程核心依赖-->
<dependency>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-core</artifactId>
<version>1.4.1</version>
</dependency>
<!--MySql驱动-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.20</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
二、创建逆向工程的配置文件: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>
<!--
targetRuntime:执行生成逆向工程的版本
MyBatis3Simple:生成基本的CRUD (增删改查(查询所有,查询单个)五个)
MyBatis3:生成带条件的CRUD
-->
<context id="DB2Tables" targetRuntime="MyBatis3Simple">
<!--数据库连接-->
<jdbcConnection driverClass="com.mysql.cj.jdbc.Driver"
connectionURL="jdbc:mysql://localhost:3306/ssm?serverTimezone=UTC"
userId="账号"
password="密码">
<!-- 解决table schema中有多个重名的表生成表结构不一致问题 -->
<property name="nullCatalogMeansCurrent" value="true"/>
</jdbcConnection>
<!--javaBean/实体类 的生成策略
targetPackage="生成的包的名字"
targetProject="生成的位置"
下述标签属性含义基本与该标签一致-->
<javaModelGenerator
targetPackage="com.java.ssm.pojo"
targetProject=".\src\main\java">
<!--enableSubPackages:是否允许生成子包,也即将.解析为子包分隔符,否则.将作为包的名字-->
<property name="enableSubPackages" value="true"></property>
<!--由于是根据表中字段生成属性,trimStrings为将字段的前后空格去除-->
<property name="trimStrings" value="true"></property>
</javaModelGenerator>
<!--映射文件生成策略(mapper.xml)-->
<sqlMapGenerator
targetPackage="com.java.ssm.mapper"
targetProject=".\src\main\resources">
<property name="enableSubPackages" value="true"></property>
</sqlMapGenerator>
<!--mapper接口的生成策略-->
<javaClientGenerator
type="XMLMAPPER"
targetPackage="com.java.ssm.mapper"
targetProject=".\src\main\java">
<property name="enableSubPackages" value="true"></property>
</javaClientGenerator>
<!--逆向分析的表
tableName:指定对应的表,设置为*,则匹配所有表,此时可以不写domainObjectName
domainObjectName:属性指定生成出来的实体类的类名-->
<table tableName="t_emp" domainObjectName="Emp"></table>
<table tableName="t_dept" domainObjectName="Dept"></table>
</context>
</generatorConfiguration>
三、 使用:
四、出现过的问题:
最初没有加nullCatalogMeansCurrent出现过映射文件字段和表字段不一致的情况
<property name="nullCatalogMeansCurrent" value="true"/>
具体解决是查看了大佬的这篇文章 指路