zoukankan      html  css  js  c++  java
  • MyBatis使用Generator自动生成代码

    MyBatis中,可以使用Generator自动生成代码,包括DAO层、 MODEL层 、MAPPING SQL映射文件。

    第一步:
    配置好自动生成代码所需的XML配置文件,例如(generator.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>
    <!-- classPathEntry:数据库的JDBC驱动-->
      <classPathEntry location="F:JansunworkspacewicketAjaxojdbc14-10.2.0.1.jar" />
     
      <context id="DB2Tables" targetRuntime="MyBatis3">
    <!-- 去除自动生成的注释 -->
    <commentGenerator>
     <property name="suppressAllComments" value="true" />
    </commentGenerator>
     
        <jdbcConnection driverClass="oracle.jdbc.driver.OracleDriver"
            connectionURL="jdbc:oracle:thin:@10.87.61.233:1521:orcl11g"
            userId="ibis"
            password="ibis">
        </jdbcConnection>
     
        <javaTypeResolver >
          <property name="forceBigDecimals" value="false" />
        </javaTypeResolver>
     
    <!-- targetProject:自动生成代码的位置 -->
        <javaModelGenerator targetPackage="com.test.model" targetProject="F:JansunworkspacewicketAjaxsrc">
          <property name="enableSubPackages" value="true" />
          <property name="trimStrings" value="true" />
        </javaModelGenerator>
     
        <sqlMapGenerator targetPackage="com.test.mapping"  targetProject="F:JansunworkspacewicketAjaxsrc">
          <property name="enableSubPackages" value="true" />
        </sqlMapGenerator>
     
        <javaClientGenerator type="XMLMAPPER" targetPackage="com.test.dao"  targetProject="F:JansunworkspacewicketAjaxsrc">
          <property name="enableSubPackages" value="true" />
        </javaClientGenerator>
     
    <!-- tableName:用于自动生成代码的数据库表;domainObjectName:对应于数据库表的javaBean类名 -->
        <table schema="ibis" tableName="ibis_info" domainObjectName="Ibis" >
          
        </table>
     
      </context>
      
    </generatorConfiguration>
     
    第二步:下载mybatis-generator-core-1.3.1.jar包。
     
    第三步:进入XML配置文件(generator.xml)所在的的目录并执行命令:
     
    java -jar F:mybatis-generator-core-1.3.1libmybatis-generator-core-1.3.1.jar -configfile genrator.xml -overwrite
     
    (PS:F:mybatis-generator-core-1.3.1libmybatis-generator-core-1.3.1.jar,是你所下载的mybatis-generator-core-1.3.1.jar包所在的目录
    //--------------------------------------------------------------------------------------
     

    Mybatis-generator-------------Mybatis的代码生成器

    使用Hibernate可以很方便的生成model,dao,和映射配置文件.mybatis也有生成器,mybatis generator, 简称MBG. 下面为大家介绍一下MBG的使用.

     

        Mybatis-generator的思想是编写一个配置文件,然后运行该配置文件,就会得到相应的java代码。那么重点就是这个配置文件,配置文件中都需要些什么呢?必须包括的有数据库的datasourceMybatis的版本信息,至少一个的数据表,还有是需要生成的代码所在的包的信息。

     

    1.下载类包

    下载mybatis-generator-core-1.3.1-bundle.zip之后解压得到mybatis-generator-core-1.3.1.jar, 即生成器的jarmybatis-3.0.6.jarmybatis-generator-core-1.3.1.jar加入到项目的lib然后编写一个生成器的配置文件generatorConfig.xml.

    2. mybatis-generator的配置文件

    mybatis-generator最重要的就是一个配置文件,配置文件中配置了生成的.dao pojo生成的package路径等。

    介绍一下genernatorConfig.xml

    
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE generatorConfiguration 
     
      PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN" 
     
     
       
     
    <generatorConfiguration
     
        <properties resource="com/yuan/mybatis/mbg/util/generatorConfig.properties" /> 
     
        <classPathEntry location="${classPath}" /> 
     
        <context id="MBG" targetRuntime="MyBatis3" defaultModelType="conditional"
     
            <plugin type="org.mybatis.generator.plugins.EqualsHashCodePlugin" /> 
     
            <plugin type="org.mybatis.generator.plugins.MapperConfigPlugin"
     
                <property name="fileName" value="GeneratedMapperConfig.xml" /> 
     
                <property name="targetPackage" value="com.yuan.mybatis.mbg.util" /> 
     
                <property name="targetProject" value="${targetProject}" /> 
     
            </plugin
     
            <commentGenerator
     
                <property name="suppressAllComments" value="true" /> 
     
            </commentGenerator
     
            <jdbcConnection driverClass="${driverClass}" 
     
                connectionURL="${connectionURL}" userId="${userId}" password="${password}"
     
            </jdbcConnection
     
            <javaTypeResolver
     
                <property name="forceBigDecimals" value="false" /> 
     
            </javaTypeResolver
     
       
     
            <javaModelGenerator targetPackage="${modelPackage}" 
     
                targetProject="${targetProject}"
     
                <property name="enableSubPackages" value="true" /> 
     
            </javaModelGenerator
     
       
     
            <sqlMapGenerator targetPackage="${sqlMapperPackage}" 
     
                targetProject="${targetProject}"
     
                <property name="enableSubPackages" value="true" /> 
     
            </sqlMapGenerator
     
       
     
            <javaClientGenerator type="XMLMAPPER" 
     
                targetPackage="${daoMapperPackage}" targetProject="${targetProject}"
     
                <property name="enableSubPackages" value="true" /> 
     
            </javaClientGenerator
     
            <table schema="minghan" tableName="sys_group" domainObjectName="Group"
     
                <generatedKey column="groupId" sqlStatement="mysql" 
     
                    identity="true" /> 
     
            </table
     
            <table schema="minghan" tableName="sys_admin" domainObjectName="Admin" 
     
                enableCountByExample="false" enableUpdateByExample="false" 
     
                enableDeleteByExample="false" enableSelectByExample="false" 
     
                selectByExampleQueryId="false"
     
            </table
     
       
     
        </context
     
    </generatorConfiguration>
    
    

    其中的properties元素里引用了一个generatorConfig.properties配置文件是为了方便移植的时候,只需修改resource的路径值和generatorConfig.properties里的值即进行生成操作.

    generatorConfig.properties代码如下:

    Properties代码  收藏代码

     

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    classPath=D:/ylink/myeclipse/MBG/lib/mysql-connector-java-5.0.7-bin.jar 
     
    targetProject=D:/ylink/myeclipse/MBG/src 
     
    driverClass=com.mysql.jdbc.Driver 
     
    connectionURL=jdbc:mysql://127.0.0.1:3306/minghan?useUnicode=true&amp;characterEncoding=UTF-8 
     
    userId=root 
     
    password=root 
     
    modelPackage=com.yuan.mybatis.mbg.model 
     
    sqlMapperPackage=com.yuan.mybatis.mbg.model.mapper 
     
    daoMapperPackage=com.yuan.mybatis.mbg.dao.mapper

     

     其中, targetProject是工程的源代码存放位置

    classPath是数据库驱动包的位置, modelPackage是存放model实体的包对应数据库表, sqlMapperPackage是存放实体映射的XML配置文件, daoMapperPackage是存放Mapper接口的地方.

    注意要事先建立这些包才可以生成.

    如果不想生成mybatis的注释信息可以将commentGenerator里的suppressAllComments的值设为true,

    table元素对应数据库表.

    <table schema="minghan" tableName="sys_admin" domainObjectName="Admin"  

         enableCountByExample="false" enableUpdateByExample="false"  

         enableDeleteByExample="false" enableSelectByExample="false"

        selectByExampleQueryId="false">

    </table> 

     schema即为数据库名, tableName为对应的数据库表, domainObjectName是要生成的实体类如果想要mapper配置文件加入sqlwhere条件查询可以将enableCountByExample等设为true, 这样就会生成一个对应domainObjectNameExample, enableCountByExample等设为false就不会生成对应的Example类了.

    3.运行

    配置文件配好了之后,进行生成代码既可以使用命令的方式也可以自已写一个带main的类来运行下面提供了一个带main的运行类

    MyBatisGeneratorTool.java

    Java代码  收藏代码

    1. 1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      27
      28
      29
      30
      31
      32
      33
      34
      35
      36
      37
      38
      39
      40
      41
      42
      43
      44
      45
      46
      47
      48
      49
      50
      51
      52
      53
      54
      55
      56
      57
      58
      59
      60
      61
      62
      63
      64
      65
      66
      67
      68
      69
      70
      71
      72
      73
      74
      75
      76
      77
      78
      79
      80
      81
      82
      83
      84
      85
      86
      87
      88
      89
      90
      91
      92
      93
      94
      package com.yuan.mybatis.mbg.util; 
         
       
      import java.io.File; 
       
      import java.io.IOException; 
       
      import java.sql.SQLException; 
       
      import java.util.ArrayList; 
       
      import java.util.List; 
       
         
       
      import org.mybatis.generator.api.MyBatisGenerator; 
       
      import org.mybatis.generator.config.Configuration; 
       
      import org.mybatis.generator.config.xml.ConfigurationParser; 
       
      import org.mybatis.generator.exception.InvalidConfigurationException; 
       
      import org.mybatis.generator.exception.XMLParserException; 
       
      import org.mybatis.generator.internal.DefaultShellCallback; 
       
         
       
      public class MyBatisGeneratorTool { 
       
          public static void main(String[] args) { 
       
              List<String> warnings = new ArrayList<String>(); 
       
              boolean overwrite = true
       
              String genCfg = "/generatorConfig.xml"; //src的一级目录下 
       
              File configFile = new File(MyBatisGeneratorTool.class.getResource(genCfg).getFile()); 
       
              ConfigurationParser cp = new ConfigurationParser(warnings); 
       
              Configuration config = null
       
              try
       
                  config = cp.parseConfiguration(configFile); 
       
              } catch (IOException e) { 
       
                  e.printStackTrace(); 
       
              } catch (XMLParserException e) { 
       
                  e.printStackTrace(); 
       
              
       
              DefaultShellCallback callback = new DefaultShellCallback(overwrite); 
       
              MyBatisGenerator myBatisGenerator = null
       
              try
       
                  myBatisGenerator = new MyBatisGenerator(config, callback, warnings); 
       
              } catch (InvalidConfigurationException e) { 
       
                  e.printStackTrace(); 
       
              
       
              try
       
                  myBatisGenerator.generate(null); 
       
              } catch (SQLException e) { 
       
                  e.printStackTrace(); 
       
              } catch (IOException e) { 
       
                  e.printStackTrace(); 
       
              } catch (InterruptedException e) { 
       
                  e.printStackTrace(); 
       
              
       
          
       
      }

     运行此类即可生成对应于数据库表的实体类, Mapper配置文件, Mapper接口生成后可以测试其可用性.

    使用命令的方式运行:

      java -jar mybatis-generator-core-x.x.x.jar -configfile generatorConfig.xml -overwrite

    4.其他学习网址推荐

    推荐一个比较好的mybatis-generator的教学网址:

    http://www.cnblogs.com/harrychinese/archive/2012/01/09/learn_mybatis.html

  • 相关阅读:
    SGU 495 Kids and Prizes 概率DP 或 数学推理
    poj 2799 IP Networks 模拟 位运算
    uva 202 Repeating Decimals 模拟
    poj 3158 Kickdown 字符串匹配?
    uva 1595 Symmetry 暴力
    uva 201 Squares 暴力
    uva 1594 Ducci Sequence 哈希
    uva 1368 DNA Consensus String 字符串
    数字、字符串、列表的常用操作
    if条件判断 流程控制
  • 原文地址:https://www.cnblogs.com/fx2008/p/3166669.html
Copyright © 2011-2022 走看看