Mybatis generator使用

来源:互联网 发布:国产数据库排名 编辑:程序博客网 时间:2024/06/17 13:32

Mybatis Generator

简单翻译一下官网的东西,http://www.mybatis.org/generator/quickstart.html

作用

能够自动生成MyBatis的相关代码和配置文件,如:

  1. java pojos 即相关的java bean
  2. mybatis的mapper配置文件以及其需要的SQL语句
  3. java client类文件(可选)

注意事项:

  1. 自动生成机制会合并XML文件,并且对于你在该文件中修改的东西不会覆盖
  2. 自动生成机制不会合并java 文件,会覆盖或者创建一个新的类

简单入门

配置

  1. 需要一个配置文件,并且起码需要以下几个配置

    1. A <jdbcConnection> element to specify how to connect to the target database

      一个jdbcConnection元素来配置连接的数据库

    2. A <javaModelGenerator> element to specify target package and target project for generated Java model objects

      给生成的java模型配置目标项目的包路径

    3. A <sqlMapGenerator> element to specify target package and target project for generated SQL map files

      给生成的xml配置文件指定目标项目的包路径

    4. (Optionally) A <javaClientGenerator> element to specify target package and target project for generated client interfaces and classes (you may omit the <javaClientGenerator> element if you don’t wish to generate Java client code)

      可选:给生成的java client接口以及类配置文件指定目标项目的包路径

    5. At least one database <table> element

      至少一个数据库table的配置元素

运行

运行下面这句话来执行generator,产生相关的文件,注意-overwrite不加的话,如果java文件出现冲突,将会重命名生成的文件

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

使用

然后就可以在生成的代码中开发你自己的功能了

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 location="/Program Files/IBM/SQLLIB/java/db2java.zip" />  <context id="DB2Tables" targetRuntime="MyBatis3">    <jdbcConnection driverClass="COM.ibm.db2.jdbc.app.DB2Driver"        connectionURL="jdbc:db2:TEST"        userId="db2admin"        password="db2admin">    </jdbcConnection>    <javaTypeResolver >      <property name="forceBigDecimals" value="false" />    </javaTypeResolver>    <javaModelGenerator targetPackage="test.model" targetProject="\MBGTestProject\src">      <property name="enableSubPackages" value="true" />      <property name="trimStrings" value="true" />    </javaModelGenerator>    <sqlMapGenerator targetPackage="test.xml"  targetProject="\MBGTestProject\src">      <property name="enableSubPackages" value="true" />    </sqlMapGenerator>    <javaClientGenerator type="XMLMAPPER" targetPackage="test.dao"  targetProject="\MBGTestProject\src">      <property name="enableSubPackages" value="true" />    </javaClientGenerator>    <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>

小案例:

generator配置:

<?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>    <context id="testTables" targetRuntime="MyBatis3">        <commentGenerator>            <!-- 是否去除自动生成的注释 true:是 : false:否 -->            <property name="suppressAllComments" value="true" />        </commentGenerator>        <!--数据库连接的信息:驱动类、连接地址、用户名、密码 -->        <jdbcConnection driverClass="com.mysql.jdbc.Driver"            connectionURL="jdbc:mysql://localhost:3306/mybatis" userId="root"            password="admin">        </jdbcConnection>        <!-- <jdbcConnection driverClass="oracle.jdbc.OracleDriver"            connectionURL="jdbc:oracle:thin:@127.0.0.1:1521:yycg"             userId="yycg"            password="yycg">        </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.itheima.pojo"            targetProject=".\src">            <!-- enableSubPackages:是否让schema作为包的后缀 -->            <property name="enableSubPackages" value="false" />            <!-- 从数据库返回的值被清理前后的空格 -->            <property name="trimStrings" value="true" />        </javaModelGenerator>        <!-- targetProject:mapper映射文件生成的位置 -->        <sqlMapGenerator targetPackage="cn.itheima.mapper"             targetProject=".\src">            <!-- enableSubPackages:是否让schema作为包的后缀 -->            <property name="enableSubPackages" value="false" />        </sqlMapGenerator>        <!-- targetPackage:mapper接口生成的位置 -->        <javaClientGenerator type="XMLMAPPER"            targetPackage="cn.itheima.mapper"             targetProject=".\src">            <!-- enableSubPackages:是否让schema作为包的后缀 -->            <property name="enableSubPackages" value="false" />        </javaClientGenerator>        <!-- 指定数据库表 --><!--        <table tableName="items"></table> -->        <table tableName="orders"></table><!--        <table tableName="orderdetail"></table> -->        <table tableName="user"></table>        <!-- <table schema="" tableName="sys_user"></table>        <table schema="" tableName="sys_role"></table>        <table schema="" tableName="sys_permission"></table>        <table schema="" tableName="sys_user_role"></table>        <table schema="" tableName="sys_role_permission"></table> -->        <!-- 有些表的字段需要指定java类型         <table schema="" tableName="">            <columnOverride column="" javaType="" />        </table> -->    </context></generatorConfiguration>

java代码生成:

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 StartServer {    public void generator() throws Exception{        List<String> warnings = new ArrayList<String>();        boolean overwrite = true;        File configFile = new File("genarator.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);    }    public static void main(String[] args) throws Exception {        try {            StartServer startServer = new StartServer();            startServer.generator();        } catch (Exception e) {            e.printStackTrace();        }}}
原创粉丝点击