Mybatis Generator 的基本使用

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("生成成功");

猜你喜欢

转载自blog.csdn.net/qq_29393273/article/details/84660983