概述
官方地址http://www.mybatis.org/generator/
Github https://github.com/mybatis/generator
mybatis两种实现方法,分别是基于注解和基于映射文件,当需要操作的实体类较多的时,逐个编写基于注解或基于映射的CURD耗时长切容易出错,使用Mybatis Generator可以保证CRUD的正确性,以及节约大量时间。
mybatis-generator.xml格式见官网
http://mybatis.org/generator/configreference/xmlconfig.html
maven
http://www.mybatis.org/generator/running/runningWithMaven.html
<plugin><groupId>org.mybatis.generator</groupId><artifactId>mybatis-generator-maven-plugin</artifactId><version>1.3.7</version><executions><execution><id>Generate MyBatis Artifacts</id><goals><goal>generate</goal></goals></execution></executions><dependencies><!-- mysql 驱动--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.28</version></dependency></dependencies><configuration><!--配置文件的路径--><configurationFile>src/main/resources/generatorConfig.xml</configurationFile><overwrite>true</overwrite></configuration></plugin>
mbg配置文件
generatorConfig.xml
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE generatorConfigurationPUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN""http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd"><generatorConfiguration><context id="test" targetRuntime="MyBatis3"><plugin type="org.mybatis.generator.plugins.EqualsHashCodePlugin"></plugin><plugin type="org.mybatis.generator.plugins.SerializablePlugin"></plugin><plugin type="org.mybatis.generator.plugins.ToStringPlugin"></plugin><commentGenerator><!-- 这个元素用来去除指定生成的注释中是否包含生成的日期 false:表示保护 --><!-- 如果生成日期,会造成即使修改一个字段,整个实体类所有属性都会发生变化,不利于版本控制,所以设置为true --><property name="suppressDate" value="true" /><!-- 是否去除自动生成的注释 true:是 : false:否 --><property name="suppressAllComments" value="false" /></commentGenerator><!--数据库链接URL,用户名、密码 --><jdbcConnectiondriverClass="com.mysql.jdbc.Driver"connectionURL="jdbc:mysql://localhost:3306/demo"userId="root"password="baxiang"></jdbcConnection><javaTypeResolver><!-- This property is used to specify whether MyBatis Generator shouldforce the use of java.math.BigDecimal for DECIMAL and NUMERIC fields, --><property name="forceBigDecimals" value="false" /></javaTypeResolver><!-- 生成模型的包名和位置 --><javaModelGenerator targetPackage="com.mybatis.model" targetProject="src/main/java"><property name="enableSubPackages" value="true" /><property name="trimStrings" value="true" /></javaModelGenerator><!-- 生成映射文件的包名和位置 --><sqlMapGenerator targetPackage="com.mybatis.mapper" targetProject="src/main/java"><property name="enableSubPackages" value="true" /></sqlMapGenerator><!-- 生成DAO的包名和位置 --><javaClientGenerator type="XMLMAPPER" targetPackage="com.mybatis.dao" targetProject="src/main/java"><property name="enableSubPackages" value="true" /></javaClientGenerator><table tableName="user" domainObjectName="User"enableCountByExample="false" enableUpdateByExample="false"enableDeleteByExample="false" enableSelectByExample="false"selectByExampleQueryId="false" /><table tableName="sys_user" domainObjectName="SysUser"enableCountByExample="false" enableUpdateByExample="false"enableDeleteByExample="false" enableSelectByExample="false"selectByExampleQueryId="false" /></context></generatorConfiguration>
编译
mvn mybatis-generator:generate
设置数据库配置属性文件
properties
<properties resource="datasource.properties"></properties>
datasource.properties
db.driverClassName=com.mysql.jdbc.Driverdb.url=jdbc:mysql://192.1.1.1:3306/mmall?characterEncoding=utf-8db.username=rootdb.password=baxiangdb.initialSize = 20db.maxActive = 50db.maxIdle = 20db.minIdle = 10db.maxWait = 10db.defaultAutoCommit = truedb.minEvictableIdleTimeMillis = 3600000
将jdbcConnection修改成配置属性版本的,设置数据源
<jdbcConnection driverClass="com.mysql.cj.jdbc.Driver"connectionURL="jdbc:mysql://localhost:3306/mall?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai"userId="root"password="123456"><!--解决mysql驱动升级到8.0后不生成指定数据库代码的问题--><property name="nullCatalogMeansCurrent" value="true" /></jdbcConnection>
Model生成
<!-- Model模型生成器,用来生成含有主键key的类,记录类 以及查询Example类targetPackage 指定生成的model生成所在的包名targetProject 指定在该项目下所在的路径--><!--<javaModelGenerator targetPackage="com.mmall.pojo" targetProject=".\src\main\java">--><javaModelGenerator targetPackage="com.mall.pojo" targetProject="./src/main/java"><!-- 是否允许子包,即targetPackage.schemaName.tableName --><property name="enableSubPackages" value="false"/><!-- 是否对model添加 构造函数 --><property name="constructorBased" value="true"/><!-- 是否对类CHAR类型的列的数据进行trim操作 --><property name="trimStrings" value="true"/><!-- 建立的Model对象是否 不可改变 即生成的Model对象不会有 setter方法,只有构造方法 --><property name="immutable" value="false"/></javaModelGenerator>
Table
tableName 表名称
domainObjectName 类名称
