JAVA中MyBatis Generator配置
在日常的Java程序编写中,我们经常与数据库打交道,然而原生的JDBC库对数据库进行增删查改太过繁琐,需要手动设置参数和提取参数,mybatis是一个优秀的持久层的框架,用注解和xml文件基本上能搞定业务需要的增删查改。
在这里,我主要介绍一个MyBatis生成Java代码的自动化插件。
我使用的是IntelliJ IDEA这个编译器。
1.idea中安装插件
基本流程是:File>>setting>>plugins>>搜索mybatis
图中显示的插件是我已经安装好了的。一般情况下会提示:"no plugins found,Search in repositories.",后面的一句话是超链接,点击即可看到mybatis相关的插件,安装我们需要的插件即可,如果安装不下来,那么就需要你“翻墙”。或者自行百度下载插件安装。
2.pom中引入依赖
我主要引入这个几个依赖:
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.38</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.2</version>
</dependency>
<dependency>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-core</artifactId>
<version>1.3.2</version>
</dependency>
还有在plugins标签内加入Generator的插件
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<configuration>
<verbose>true</verbose>
<overwrite>true</overwrite>
</configuration>
</plugin>
完整的pom文件内容我在文章最下方展示,其中的一些依赖是我其他代码所需要的。
3.generator的配置文件
<?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>
<!-- classPathEntry:数据库的JDBC驱动的jar包地址 -->
<classPathEntry
location="C:\Users\87728\.m2\mysql\mysql-connector-java\5.1.43\mysql-connector-java-5.1.43.jar"/>
<!--id中的属性随便取,targetRuntime:MyBatis3是默认值,一般不会改变,defaultModelType属性比较多,应该百度一下 -->
<context id="mysql" targetRuntime="MyBatis3"
defaultModelType="flat">
<commentGenerator>
<!-- 是否去除自动生成的注释 true:是 : false:否 -->
<property name="suppressAllComments" value="false"/>
<!-- <property name="suppressDate" value="true" /> -->
<!--数据库连接的信息:驱动类、连接地址、用户名、密码 -->
</commentGenerator>
<!--数据库连接的属性,一个context中只能有一个-->
<jdbcConnection driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://localhost:3306/user"
userId="root" password="123456">
</jdbcConnection>
<!-- 默认false,把JDBC DECIMAL 和 NUMERIC 类型解析为 Integer true,把JDBC DECIMAL 和
NUMERIC 类型解析为java.math.BigDecimal -->
<javaTypeResolver>
<property name="forceBigDecimals" value="false"/>
</javaTypeResolver>
<!-- 数据库表对应的实体类生成的位置 targetProject:自动生成代码的位置 -->
<javaModelGenerator targetPackage="MySql.entity"
targetProject="D:\myworkplace\MyUtil\src\main\java">
<!-- enableSubPackages:是否让schema作为包的后缀 -->
<property name="enableSubPackages" value="false"/>
<!-- 从数据库返回的值被清理前后的空格 -->
<property name="trimStrings" value="true"/>
</javaModelGenerator>
<!--mapper的xml文件生成的位置-->
<sqlMapGenerator targetPackage="mapper"
targetProject="D:\myworkplace\MyUtil\src\main\resources">
<property name="enableSubPackages" value="false"/>
</sqlMapGenerator>
<!--mapper类生成的位置-->
<javaClientGenerator type="XMLMAPPER"
targetPackage="MySql.mapper" targetProject="D:\myworkplace\MyUtil\src\main\java">
<property name="enableSubPackages" value="true"/>
<!-- <property name="rootInterface" value="BaseSngPKMapper" /> -->
</javaClientGenerator>
<!-- tableName:用于自动生成代码的数据库表;domainObjectName:对应于数据库表的javaBean类名 -->
<table tableName="user_info" domainObjectName="User"
enableDeleteByExample="false" enableCountByExample="false"
enableDeleteByPrimaryKey="false" enableSelectByExample="false"
enableUpdateByExample="false"
>
</table>
</context>
</generatorConfiguration>
这是完整的配置文件的内容,其中需要注意的几点是:
(1)在generatorConfiguration的大标签内,其实有三个主要的标签(properties,classPathEntry,context),我的文件中只使用到后两个,三个标签中,前两个都可以不用配置,properties主要包含resource和url属性,但是两个属性不能同时使用,主要是用来引入相关的properties文件,classPathEntry标签还可以配置多个,context至少配置一个。这三个标签在使用时要注意顺序,按照列举的顺序写。
(2)在使用我列举的配置文件时,主要改动<jdbcConnection>,<javaModelGenerator>,<sqlMapGenerator>,<javaClientGenerator>,<table>五个标签内的内容,jdbcConnection主要是连接是数据库的位置,用户名和密码的修改,javaModelGenerator,sqlMapGenerator,javaClientGenerator主要是targetPackage和targetProject修改,table主要是表名和对应实体类的名字,其中五个方法最好设为false,当不设定时,默认为true,因此会生成一个xxxExample的实体类(我的例子中就生成userExample),table可以设置多个。
可以参考一下我的项目目录:其中的Excel和Http是我写的其他工具类,请忽略。entity,mapper,resource.mapper中的类和文件是我下一步生成的。
4.执行配置文件
在idea右侧的maven project中有Plugins,找到生成器的插件,双击或者右键选择使用都可;当然,还可以写一个使用的配置的类进行插件的使用,百度即可。
我完整的pom文件内容:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>Util</groupId>
<artifactId>com.dm</artifactId>
<version>1.0-SNAPSHOT</version>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<configuration>
<verbose>true</verbose>
<overwrite>true</overwrite>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.13</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.13</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.38</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.2</version>
</dependency>
<dependency>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-core</artifactId>
<version>1.3.2</version>
</dependency>
<dependency>
<groupId>com.auth0</groupId>
<artifactId>java-jwt</artifactId>
<version>3.3.0</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.30</version>
</dependency>
</dependencies>
</project>
多进行尝试,多查询资料,很快能掌握的。