一、 什么是mybatis-generator
mybatis-geneator是一款mybatis自动代码生成工具,可以通过配置,快速生成DAO、POJO和xml等文件。
二、 如何在IDEA上使用mybatis-generator
1、导入依赖 (切记要导入到相应正确的位置)
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.25</version>
<scope>runtime</scope>
</dependency>
<!--引入generator插件-->
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.7</version>
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.25</version>
</dependency>
</dependencies>
<configuration>
<!--允许移动生成的文件-->
<verbose>true</verbose>
<!--允许自动覆盖文件,第一次可覆盖,以后都不可覆盖-->
<overwrite>true</overwrite>
<!-- 自定义配置文件的名称 默认是generatorConfig.xml -->
<configurationFile>
src/main/resources/mybatis-generator.xml
</configurationFile>
</configuration>
</plugin>
2、 配置application.yml文件
#默认端口号
server:
port: 8080
#配置数据源 这里的数据库为 test
spring:
datasource:
url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=UTC
driver-class-name: com.mysql.cj.jdbc.Driver
username: root
password: root
3、在resources目录下创建 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">
<!-- 如果是粘贴复制的话,有可能上面这行会报红,按住Ctrl+Enter 导入即可 -->
<generatorConfiguration>
<!-- context 是逆向工程的主要配置信息 -->
<!-- id: 名字而已 作为唯一标识 -->
<!-- targetRuntime: 设置生成的文件使用于哪个 MyBatis 版本 -->
<context id="default" targetRuntime="MyBatis3">
<!--数据库链接地址账号密码-->
<jdbcConnection driverClass="com.mysql.cj.jdbc.Driver"
connectionURL="jdbc:mysql://localhost:3306/test?useUnicode=true"
userId="root"
password="root">
</jdbcConnection>
<!--生成pojo存放位置-->
<!-- targetPackage: 生成实体类所在的包 -->
<!-- targetProject: 生成实体类所在的硬盘位置 -->
<javaModelGenerator targetPackage="com.movie.pojo" targetProject="src/main/java">
<!-- 是否允许子包 -->
<property name="enableSubPackages" value="true" />
<!-- 是否对modal添加构造函数 -->
<property name="constructorBased" value="true" />
<!-- 是否清理从数据库中查询出的字符串左右两边的空白字符 -->
<property name="trimStrings" value="true" />
<!-- 建立modal对象是否不可改变 即生成的modal对象不会有setter方法,只有构造方法 -->
<property name="immutable" value="false" />
</javaModelGenerator>
<!--生成映射文件存放位置-->
<sqlMapGenerator targetPackage="mapping.mybatis" targetProject="src/main/resources">
<!-- 针对数据库的一个配置,是否把 schema 作为包名 -->
<property name="enableSubPackages" value="true"/>
</sqlMapGenerator>
<!--生成Dao类存放位置 也就是生成接口所在的位置 -->
<!-- 客户端代码,生成易于使用的针对Model对象和XML配置文件 的代码
type="ANNOTATEDMAPPER",生成Java Model 和基于注解的Mapper对象
type="MIXEDMAPPER",生成基于注解的Java Model 和相应的Mapper对象
type="XMLMAPPER",生成SQLMap XML文件和独立的Mapper接口
-->
<javaClientGenerator type="XMLMAPPER" targetPackage="com.movie.dao" targetProject="src/main/java">
<!-- 针对 Oracle 数据库的一个配置,是否把 schema 作为包名 -->
<property name="enableSubPackages" value="true"/>
</javaClientGenerator>
<!--生成对应表及类名,这里每一个表的五项属性是为了删除自动编写的复杂查询-->
<!-- tableName: 对应的是数据库表名,domainObjectName: 是实体类的名字,可以自定义-->
<table tableName="user" domainObjectName="User" enableCountByExample="false"
enableUpdateByExample="false" enableDeleteByExample="false"
enableSelectByExample="false" selectByExampleQueryId="false"></table>
<table tableName="t1_user" domainObjectName="t1User" enableCountByExample="false"
enableUpdateByExample="false" enableDeleteByExample="false"
enableSelectByExample="false" selectByExampleQueryId="false"></table>
<table tableName="sys_user" domainObjectName="sysUser" enableCountByExample="false"
enableUpdateByExample="false" enableDeleteByExample="false"
enableSelectByExample="false" selectByExampleQueryId="false"></table>
</context>
</generatorConfiguration>
值得注意的是
表名一定要对照数据库的表名,否则就会无法找到,也就无法生成对应的表,我们来看一下对应的数据库表(我是用的是Navicat工具),如下:
数据库中的表我没有一对一进行配置完,所以只会生成配置过的表
3、点击运行
不出意外的话就出现下面的 画面:
大功告成。您将会在项目的目录栏里看到dao和pojo以及mapper.xml文件,这样会省了很多自己写的代码,就像下面这样,是不是很方便呢?
下面是可能出错的地方和解决方案
1、找不到generatorConfig.xml
Failed to execute goal org.mybatis.generator:mybatis-generator-maven-plugin:1.3.7:generate (default-cli)
on project movie: configfile D:\java\html\src\main\resources\generatorConfig.xml does not exist
是因为系统默认的文件名是generatorConfig.xml 而我们大多是情况是自定义的配置文件,解决如下:
第二种方法就是在pom文件中自定义文件名,如下所示:
2、 错误:获取 JDBC Driver 异常
Failed to execute goal org.mybatis.generator:mybatis-generator-maven-plugin:1.3.7:generate (default-cli) on project movie: Execution default-cli of goal
org.mybatis.generator:mybatis-generator-maven-plugin:1.3.7:generate failed: Exception getting JDBC Driver
解决:
方案1、检查 mybatis-generator.xml 文件 是否写错(留有空格也不行哦!)
方案2、检查pom文件有没有导入依赖
可能有人会问了,这个 mysql-connector-java 导入了两次是不是重了?
答:并没有,最上面是用于整个项目的依赖,在插件里面的 mysql-connector-java 是用于mybatis.generator 连接的,不冲突。
以上是本次学习的一点点经验积累,由于作者才疏学浅,有错的地方还请您指点江山,欢迎您在评论区留下宝贵的意见!