Mybatis逆向工程

来源:互联网 发布:mysql数据库优化方案 编辑:程序博客网 时间:2024/06/03 08:17
1、Mybatis官方提供的逆向工程,可以将单表生生成常用的Mapperentity等配置;
2、从数据库表反向生成mapper.java/mapper.xml/entity/辅助查询类;
3、官方提示的运行环境为:最低为JRE 5.0
4、需要使用的到jar包:
    mybatis-3.2.3.ja myBatis连接使用
    mybatis-generator-core-1.3.2.jar 官方逆向工程包
    mysql-connector-java-5.1.28-bin.jar 数据库连接使用
5、主要功能:1)生成POJO与数据库结构相对应;
    2)如果有主键,能匹配主键;
    3)如果没有主键,可以用其他的字段去匹配
    4)动态select/update/delete方法
    5)自动生成接口Mapper,即DAO的 interface;
    6)生成Example例子供参考
6、详细介绍配置的过程

  (1)利用eclipse创建javaweb的动态工程,将上面的三个lib包,加入到WEB-INF里面的lib包下,动态工程会自动包jar导入到运行环境中;
   (2)在动态工程中直接建立generatorConfig.xml,文件配置如下:
需要提示本例不需要导入mybatis-generator-config_1_0.dtd,原来在学习mybatis的时候还需要导入不同的dtd;

<? 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>
  <!--
     1、、、、targetRuntime="MyBatis3" 目标环境
     MyBatis3:豪华版,复杂多条件查询
     MyBatis3Simple:helloWorld
      -->
  <context id= "atguiguTables" targetRuntime ="MyBatis3" >

      <commentGenerator >
               <!-- 是否去除自动生成的注释 true:是;false:否 -->
               < property name= "suppressAllComments" value ="true" />
           </ commentGenerator>
           <!--数据库连接的信息:驱动类、连接地址、用户名、密码 -->
    <jdbcConnection driverClass= "com.mysql.jdbc.Driver"
        connectionURL ="jdbc:mysql://127.0.0.1:3306/test"
        userId= "root"
        password= "123456" >
    </jdbcConnection >

    <!-- 默认false,把JDBC DECIMAL 和 NUMERIC 类型解析为 Integer,为 true时把JDBC DECIMAL
              和 NUMERIC 类型解析为java.math.BigDecimal -->
    <javaTypeResolver >

      <property name= "forceBigDecimals" value= "false" />
    </javaTypeResolver >

   <!--
          targetProject:生成Entity类的路径
          javaModel:java实体类生成位置
          2、、、、targetPackage:指定包名
          -->
    <javaModelGenerator targetPackage ="com.atguigu.entities" targetProject =".\src" >
     <!-- enableSubPackages:是否让schema作为包的后缀 -->
      <property name= "enableSubPackages" value= "false" />
      <!-- 从数据库返回的值被清理前后的空格 -->
      <property name= "trimStrings" value= "true" />
    </javaModelGenerator >

   <!-- targetProject:XxxMapper.xml映射文件生成的路径 -->
   <!--sqlMapGenerator:生成的mapper 文件放在那里targetPackage  -->
    <sqlMapGenerator targetPackage= "mybatis.mappers"   targetProject =".\config" >
    <!-- enableSubPackages:是否让schema作为包的后缀 -->
      <property name= "enableSubPackages" value= "true" />
    </sqlMapGenerator >
    <!-- targetPackage:Mapper接口生成的位置
          这 mapper接口放在那里
           -->
    <javaClientGenerator type= "XMLMAPPER" targetPackage ="com.atguigu.mapper"   targetProject =".\src" >
      <!-- enableSubPackages:是否让schema作为包的后缀 -->
      <property name= "enableSubPackages" value= "true" />
    </javaClientGenerator >

    <!-- 数据库表名字和我们的entity类对应的映射指定
          使用table指定要将哪些表逆向出来
          -->
    <table   tableName= "tbl_person" domainObjectName ="Customer" >

    </table >

    <table   tableName= "tbl_student" domainObjectName ="Student" >

    </table >

  </context >
</ generatorConfiguration>
3、数据库配置文件如下,需要说明本例中文件库中已有tbl_person、tbl_student,都是普通的表结构;

user=root
password= 123456
driverClass= com.mysql.jdbc.Driver
jdbcUrl=jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&amp;characterEncoding=UTF8

4、建立测试用例,用以生成需要的POJO、DAO的interface以及mapper.xml文件:
测试用例如下:

import java.io.File;
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.internal.DefaultShellCallback;

public class GeneratorTest {

      public static void main(String[] args) throws Exception {

          List<String> warnings = new ArrayList<String>();
           boolean overwrite = true;
          File configFile = new File("generatorConfig.xml" );
          ConfigurationParser cp = new ConfigurationParser(warnings);
          Configuration config = cp.parseConfiguration(configFile);
          DefaultShellCallback callback = new DefaultShellCallback(overwrite);
          MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config,
                   callback, warnings);
          myBatisGenerator.generate( null );

     }
}
5、大功告成,直接按F5刷新项目就可以完成;
0 0
原创粉丝点击