七,利用MyBatis Generator进行逆向工程

来源:互联网 发布:js uint8array string 编辑:程序博客网 时间:2024/05/11 05:52

1,MyBatis Generator简介

MyBatis Generator (MBG) 是一个Mybatis的代码生成器 MyBatis 和 iBATIS. Mybatis各个版本的代码,和iBATIS 2.2.0版本以后的代码。 他可以内省数据库的表(或多个表)然后生成可以用来访问(多个)表的基础对象。 这样和数据库表进行交互时不需要创建对象和配置文件。 MBG的解决了对数据库操作有最大影响的一些简单的CRUD(插入,查询,更新,删除)操作。 但是仍然需要对联合查询和存储过程手写SQL和对象。
使用生成工具Generator,开发者需要先要创建数据库,建好数据库表。生成工具是根据数据库表而生成java代码。在MyBatis中表现为生成mapper配置文件,mapper接口,实体类。与Hibernate相比较而言,Hibernate可以通过Java代码生成数据库,同时也可以通过数据库生成Java代码。

2,MyBatis Generator使用

根据官网http://www.mybatis.org/generator/index.html介绍有四种方法使用MyBatis Generator

  1. 通过命令行的形式
  2. 使用Ant
  3. 使用Maven
  4. 使用Java
  5. 在eclipse中使用插件

测试所用的是Java代码的形式,在官网上有个工具类,官网上提供了方法
刚开始工程结构:(对于对比逆向工程前后)

首先要在pom.xml文件中加入generator依赖

<dependency>            <groupId>org.mybatis.generator</groupId>            <artifactId>mybatis-generator-core</artifactId>            <version>1.3.2</version>            <scope>compile</scope>            <optional>true</optional>        </dependency>

官网提供的工具生成类

public class Generator {    public static void main(String[] args) {        List<String> warnings = new ArrayList();        boolean overwrite = true;        File configFile = new File("src/main/resources/generatorConfig.xml");        ConfigurationParser cp = new ConfigurationParser(warnings);        Configuration config;        try {            config = cp.parseConfiguration(configFile);            DefaultShellCallback callback = new DefaultShellCallback(overwrite);            MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, callback, warnings);            myBatisGenerator.generate(null);        } catch (IOException e) {            // TODO Auto-generated catch block            e.printStackTrace();        } catch (XMLParserException e) {            // TODO Auto-generated catch block            e.printStackTrace();        } catch (InvalidConfigurationException e) {            // TODO Auto-generated catch block            e.printStackTrace();        } catch (SQLException e) {            // TODO Auto-generated catch block            e.printStackTrace();        } catch (InterruptedException e) {            // TODO Auto-generated catch block            e.printStackTrace();        }    }}

File configFile = new File("src/main/resources/generatorConfig.xml");因为我的创建的是maven的工程,而该文件所在的路径在src/main/resources/generatorConfig.xml
以下给出generatorConfig.xml配置文件的信息

<generatorConfiguration>    <context id="mybatis_generator" targetRuntime="MyBatis3">        <commentGenerator>            <!-- 是否去除自动生成的注释 true:是 : false:否 -->            <property name="suppressAllComments" value="true" />        </commentGenerator>        <!--数据库连接的信息:驱动类、连接地址、用户名、密码 -->        <jdbcConnection driverClass="com.mysql.jdbc.Driver"            connectionURL="jdbc:mysql://localhost:3306/mybatis_generator" userId="root"            password="root">        </jdbcConnection>        <!-- 默认false,把JDBC DECIMAL 和 NUMERIC 类型解析为 Integer,为 true时把JDBC DECIMAL 和             NUMERIC 类型解析为java.math.BigDecimal -->        <javaTypeResolver>            <property name="forceBigDecimals" value="false" />        </javaTypeResolver>        <!-- targetProject:生成PO类的位置 -->        <javaModelGenerator targetPackage="cn.mybatis_generator.entities" targetProject="./src/main/java/">            <!-- enableSubPackages:是否让schema作为包的后缀 -->            <property name="enableSubPackages" value="false" />            <!-- 从数据库返回的值被清理前后的空格 -->            <property name="trimStrings" value="true" />        </javaModelGenerator>        <!-- targetProject:mapper映射文件生成的位置 -->        <sqlMapGenerator targetPackage="cn.mybatis_generator.configmappers" targetProject="./src/main/java/">            <!-- enableSubPackages:是否让schema作为包的后缀 -->            <property name="enableSubPackages" value="false" />        </sqlMapGenerator>        <!-- targetPackage:mapper接口生成的位置 -->        <javaClientGenerator type="XMLMAPPER" targetPackage="cn.mybatis_generator.interfacemappers" targetProject="./src/main/java/">            <!-- enableSubPackages:是否让schema作为包的后缀 -->            <property name="enableSubPackages" value="false" />        </javaClientGenerator>        <!-- 指定数据库表 -->        <table tableName="items">        <table tableName="orders">        <table tableName="orderdetail">    </context></generatorConfiguration>

这样只需要运行上面的主程序就可以在相应的包中生成相应的文件。
工程运行结束后,工程结构为:

0 0
原创粉丝点击