1.Mybatis Generator 的基本使用
a.创建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">
<!--
http://www.mybatis.org/generator/index.html
https://blog.csdn.net/isea533/article/details/42102297
-->
<generatorConfiguration>
<!-- -数据库驱动
<classPathEntry location="mysql-connector-java-5.0.8-bin.jar"/> -->
<!-- id必选属性 用来唯一确定一个<context>元素,该id属性可以在运行MBG的使用
targetRuntime: 此属性用于指定生成的代码的运行时环境,默认值MyBatis3
-->
<context id="DB2Tables" targetRuntime="MyBatis3">
<!--去除注解 commentGenerator
该元素最多可以配置1个;
-->
<commentGenerator>
<!--阻止生成的注释包含时间戳,默认为false -->
<property name="suppressDate" value="true"/>
<!-- 阻止生成注释,默认为false -->
<property name="suppressAllComments" value="true"/>
</commentGenerator>
<!--jdbcConnection 用于指定数据库连接信息,该元素必选,并且只能有一个。-->
<jdbcConnection driverClass="oracle.jdbc.driver.OracleDriver"
connectionURL="jdbc:oracle:thin:@10.103.32.24:1521:onlinetest"
userId="onlinetest"
password="onlinetest438">
</jdbcConnection>
<!-- javaTypeResolver元素最多可以配置一个
这个元素的配置用来指定JDBC类型和Java类型如何转换。
该属性可以控制是否强制DECIMAL和NUMERIC类型的字段转换为Java类型的java.math.BigDecimal,默认值为false,一般不需要配置;
如果精度>0或者长度>18,就会使用java.math.BigDecimal
如果精度=0并且10<=长度<=18,就会使用java.lang.Long
如果精度=0并且5<=长度<=9,就会使用java.lang.Integer
如果精度=0并且长度<5,就会使用java.lang.Short
如果设置为true,那么一定会使用java.math.BigDecimal
-->
<javaTypeResolver >
<property name="forceBigDecimals" value="false" />
</javaTypeResolver>
<!-- 该元素必须配置一个,并且最多一个;
生成Model类存放位置
targetPackage:生成实体类存放的包名;必选属性
targetProject: 指定目标项目路径,可以是绝对路径或相对路径(如 targetProject="src/main/java").表示当前项目;必选属性
-->
<javaModelGenerator targetPackage="com.study.cn.model" targetProject="./src/main/java">
<!-- enableSubPackages 如果true,MBG会根据catalog和schema来生成子包。如果false就会直接用targetPackage属性。默认为false。 -->
<property name="enableSubPackages" value="true" />
<!-- trimStrings 是否对数据库查询结果进行trim操作,如果设置为true就会生成类似
public void setUsername(String username) {
this.username = username == null ? null : username.trim();
}的setter方法。默认值为false。 -->
<property name="trimStrings" value="true" />
</javaModelGenerator>
<!--生成映射文件存放位置-->
<!-- 如果targetRuntime目标是**MyBatis3**,只有当<javaClientGenerator>需要XML时,该元素必须配置一个。
如果没有配置<javaClientGenerator>,则使用以下的规则:
如果指定了一个<sqlMapGenerator>,那么MBG将只生成XML的SQL映射文件和实体类。
如果没有指定<sqlMapGenerator>,那么MBG将只生成实体类。
targetPackage:生成实体映射文件的包名;必选属性
targetProject:指定目标项目路径,可以是绝对路径或相对路径(如 targetProject="src/main/java").表示当前项目;必选属性
-->
<sqlMapGenerator targetPackage="mapping" targetProject="./src/main/resource">
<!-- enableSubPackages 如果true,MBG会根据catalog和schema来生成子包。如果false就会直接用targetPackage属性。默认为false。 -->
<property name="enableSubPackages" value="true" />
</sqlMapGenerator>
<!--生成Dao类存放位置-->
<!-- 该元素可选,最多配置一个。
如果不配置该元素,就不会生成Mapper接口
根据<context>的targetRuntime分成三类:
MyBatis3:
ANNOTATEDMAPPER:基于注解的Mapper接口,不会有对应的XML映射文件
MIXEDMAPPER:XML和注解的混合形式,(上面这种情况中的)SqlProvider注解方法会被XML替代。
XMLMAPPER:所有的方法都在XML中,接口调用依赖XML文件。
MyBatis3Simple:
ANNOTATEDMAPPER:基于注解的Mapper接口,不会有对应的XML映射文件
XMLMAPPER:所有的方法都在XML中,接口调用依赖XML文件。
Ibatis2Java2或**Ibatis2Java5**:
IBATIS:生成的对象符合iBATIS的DAO框架(不建议使用)。
GENERIC-CI:生成的对象将只依赖于SqlMapClient,通过构造方法注入。
GENERIC-SI:生成的对象将只依赖于SqlMapClient,通过setter方法注入。
SPRING:生成的对象符合Spring的DAO接口
targetPackage:指定包名
targetProject: 直接文件路径
-->
<javaClientGenerator type="XMLMAPPER" targetPackage="com.study.cn.dao" targetProject="./src/main/java">
<property name="enableSubPackages" value="true" />
</javaClientGenerator>
<!--生成对应表及类名
tableName:数据库中对应的表名;可以使用SQL通配符匹配多个表
domainObjectName:javaBean的名字 ;如果没有指定,MBG会自动根据表名来生成名称
-->
<table tableName="t_c_contract" domainObjectName="Contract" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"></table>
<!-- <table schema="DB2ADMIN" tableName="ALLTYPES" domainObjectName="Customer" >
<property name="useActualColumnNames" value="true"/>
<generatedKey column="ID" sqlStatement="DB2" identity="true" />
<columnOverride column="DATE_FIELD" property="startDate" />
<ignoreColumn column="FRED" />
<columnOverride column="LONG_VARCHAR_FIELD" jdbcType="VARCHAR" />
</table> -->
</context>
</generatorConfiguration>
b.使用java代码方式生成
List <String> warnings = new ArrayList <String>();
boolean overwrite = true;
File configFile = new File("mybatis-generator.xml");
ConfigurationParser cp = new ConfigurationParser(warnings);
Configuration parseConfiguration = cp.parseConfiguration(configFile);
DefaultShellCallback callback = new DefaultShellCallback(overwrite);
MyBatisGenerator myBatisGenerator = new MyBatisGenerator(parseConfiguration,callback,warnings);
myBatisGenerator.generate(null);
System.out.println("生成成功");