Mybatis Generator零基础使用说明

360 阅读2分钟

写在前面

刚开始使用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中的版本也要改掉

问题二:没生成文件

解决:你看看工作台的提示,是不是找不到项目文件,那就是你给的项目绝对路径是有问题的