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

  • 相关阅读:
    Ubuntu开发环境配置
    win7和Ubuntu16.04之间相互远程控制
    QT学习之usb摄像头采集(Opencv+QT)[cvCapture,IplImage,QImage]
    Opencv 图像畸变矫正(after 相机标定, 获得内参和畸变参数)
    opencv角点检测、棋盘格检测、亚像素cvFindCornerSubPix()
    开始学习机加工钣金加工
    今夜的硬件之旅
    关于做实验
    机器学习部分题目
    ubuntu18.10配置git和github
  • 原文地址:https://www.cnblogs.com/fx2008/p/3166669.html
Copyright © 2011-2022 走看看