写在前面
刚开始使用Mybatis Generator,网上中国程序员写的教程很多,但是没有一篇看了就能懂整个流程的,细节太多,看完了还是懵逼状态,重树木不重森林,看的吐血,所以自己学会了就想写一篇易懂的教程。
什么是Mybatis Generator
Mybatis Generator解决了在使用Mybatis需要手动创建xml,dao,model三种文件的问题,通过配置,就可以自动生成三种文件,完成基础的增删改查的代码,如图,这些代码都是自动生成的,一张表生成三个文件,就是每一张表都要手动点击生成,怎么生成,继续看。
如何使用Mybatis Generator
配置
POM配置:
<!-- mybatis.generator -->
<dependency>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-core</artifactId>
<version>1.3.7</version>
</dependency>
pulgin 配置
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<configuration>
<verbose>true</verbose>
<overwrite>true</overwrite>
</configuration>
</plugin>
效果如图:
最重要的配置,generatorConfiguration,采用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>
<!-- 配置mysql 驱动jar包路径.用了绝对路径 这里需要改-->
<classPathEntry location="/Users/chentianhua/.m2/repository/mysql/mysql-connector-java/5.1.42/mysql-connector-java-5.1.42.jar" />
<!-- 这里不需要改 -->
<context id="wangyongzhi_mysql_tables" targetRuntime="MyBatis3">
<!-- 防止生成的代码中有很多注释,加入下面的配置控制 -->
<commentGenerator>
<property name="suppressAllComments" value="true" />
<property name="suppressDate" value="true" />
</commentGenerator>
<!-- 数据库连接 这里需要修改-->
<jdbcConnection driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://localhost:3306/mango?useSSL=true"
userId="root"
password="111111">
</jdbcConnection>
<javaTypeResolver >
<property name="forceBigDecimals" value="false" />
</javaTypeResolver>
<!-- 数据表对应的model层 这里需要修改 targetPackage包名称,需要先创建,targetProject是项目的绝对路径-->
<javaModelGenerator targetPackage="com.louis.mango.model" targetProject="/Users/chentianhua/Documents/chentianhua/technology/study/springBoot/practiceCode/mango/src/main/java">
<property name="enableSubPackages" value="true" />
<property name="trimStrings" value="true" />
</javaModelGenerator>
<!-- sql mapper 映射配置文件 里需要修改 targetPackage包名称,需要先创建,targetProject是项目的绝对路径-->
<sqlMapGenerator targetPackage="com.louis.mango.sqlmap" targetProject="/Users/chentianhua/Documents/chentianhua/technology/study/springBoot/practiceCode/mango/src/main/java">
<property name="enableSubPackages" value="true" />
</sqlMapGenerator>
<!-- mybatis3中的mapper接口 里需要修改 targetPackage包名称,需要先创建,targetProject是项目的绝对路径-->
<javaClientGenerator type="XMLMAPPER" targetPackage="com.louis.mango.dao" targetProject="/Users/chentianhua/Documents/chentianhua/technology/study/springBoot/practiceCode/mango/src/main/java">
<property name="enableSubPackages" value="true" />
</javaClientGenerator>
<!-- 数据表进行生成操作 schema:相当于库名; tableName:表名; domainObjectName:对应的DO 生成一次改一次-->
<table schema="mango" tableName="sys_user" domainObjectName="SysUser"
enableCountByExample="false" enableUpdateByExample="false"
enableDeleteByExample="false" enableSelectByExample="false"
selectByExampleQueryId="false">
</table>
</context>
</generatorConfiguration>
xml使用说明
- 你可以把全部的xml全部copy进去
- 修改classPathEntry location这个绝对路径,这个路径使用的mysql-connector版本和pom的要一致,我刚开始就注意到了,不一致会发生啥还不知道,网上的教程都说要一致。
- 数据库连接需要改成你自己的数据库连接,名称和密码。
- targetPackage修改成自己的包名,targetProject修改成自己的项目的绝对路径
- 以上都只要改一次就好了,tableName="sys_user" domainObjectName="SysUser",这里每次换表生成都要改,tableName是要生成的表名称,和数据库的名称要一致,domainObjectName这是生成的类名称,一次只能生成一张表,换表这边要换表名称
- 如何生成呢,就是点击下图的这个即可,刚才我们已经配置过了
可能的问题
就算全部弄完,在生成的过程中也可能出现问题,我把我遇到的问题汇总在这里,开发java就是比较麻烦,配置总会有问题,我们工程师就是在不断解决问题的过程中逐步成长
问题一:在生成文件后会发现没有查询方法,只有insert方法
解决:你在工作台上看到是不是如下的文字:Cannot obtain primary key information from the database, generated objects may be incomplete,文字意思是找不到关键字,解决这个需要把mysql-connect版本设置为5的版本,记得maven中的版本也要改掉
问题二:没生成文件
解决:你看看工作台的提示,是不是找不到项目文件,那就是你给的项目绝对路径是有问题的