码迷,mamicode.com
首页 > 其他好文 > 详细

MyBatis3 Generator 详解

时间:2015-06-01 18:40:07      阅读:433      评论:0      收藏:0      [点我收藏+]

标签:

 

Talk is cheap show me the code!

pom.xml

 1 <dependencies>
 2         <!--mybatis-generator-core -->
 3         <dependency>
 4             <groupId>org.mybatis.generator</groupId>
 5             <artifactId>mybatis-generator-core</artifactId>
 6             <version>1.3.2</version>
 7         </dependency>
 8         
 9         <!--mybatis -->
10         <dependency>
11             <groupId>org.mybatis</groupId>
12             <artifactId>mybatis</artifactId>
13             <version>3.2.8</version>
14         </dependency>
15         
16         <!--mysql driver -->
17         <dependency>
18             <groupId>mysql</groupId>
19             <artifactId>mysql-connector-java</artifactId>
20             <version>5.1.34</version>
21         </dependency>
22         
23         <!-- slf4j-log4j12 -->
24         <dependency>
25             <groupId>org.slf4j</groupId>
26             <artifactId>slf4j-log4j12</artifactId>
27             <version>1.7.7</version>
28         </dependency>
29         
30</dependencies>

 

generatorConfig.xml

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <!DOCTYPE generatorConfiguration
 3   PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
 4   "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
 5 
 6 
 7 <!-- 根节点<generatorConfiguration> :节点没有任何属性,直接写节点即可,如下: -->
 8 <generatorConfiguration>
 9 
10     <!-- <properties> 引入外部文件 使用${property}调用 -->
11     <!-- <properties resource="jdbc.properties"/> -->
12     <!-- resource:指定**classpath**下的属性文件,使用类似com/myproject/generatorConfig.properties这样的属性值。 -->
13     <!-- url:可以指定文件系统上的特定位置,例如file:///C:/myfolder/generatorConfig.properties -->
14 
15 
16     <!-- <context>元素用于指定生成一组对象的环境。例如指定要连接的数据库,要生成对象的类型和要处理的数据库中的表。运行MBG的时候还可以指定要运行的<context>。 -->
17     <!-- id:必选属性,该id属性可以在运行时的使用。 defaultModelType:这个属性定义了MBG如何生成*实体类*。 conditional:*这是默认值*,这个模型和下面的hierarchical类似,除了如果那个单独的类将只包含一个字段,将不会生成一个单独的类。 
18         因此,如果一个表的主键只有一个字段,那么不会为该字段生成单独的实体类,会将该字段合并到基本实体类中。 flat:该模型为每一张表只生成一个实体类。这个实体类包含表中的所有字段。*这种模型最简单,推荐使用。* 
19         hierarchical:如果表有主键,那么该模型会产生一个单独的主键实体类,如果表还有BLOB字段, 则会为表生成一个包含所有BLOB字段的单独的实体类,然后为所有其他的字段生成一个单独的实体类。 
20         MBG会在所有生成的实体类之间维护一个继承关系。 targetRuntime:此属性用于指定生成的代码的运行时环境。该属性支持以下可选值: MyBatis3:*这是默认值* 
21         MyBatis3Simple Ibatis2Java2 Ibatis2Java5 一般情况下使用默认值即可,有关这些值的具体作用以及区别请查看中文文档的详细内容。 
22         introspectedColumnImpl:该参数可以指定扩展org.mybatis.generator.api.IntrospectedColumn该类的实现类。该属性的作用可以查看扩展MyBatis 
23         Generator。 -->
24     <context id="testTables" targetRuntime="MyBatis3">
25 
26         <!-- <property name="" value=""/> autoDelimitKeywords :当表名或者字段名为SQL关键字的时候,可以设置该属性为true,MBG会自动给表名或字段名添加分隔符。 
27             beginningDelimiter :由于beginningDelimiter和endingDelimiter的默认值为双引号("),在Mysql中不能这么写,所以还要将这两个默认值改为**反单引号(`)**, 
28             endingDelimiter :<property name="beginningDelimiter" value="`"/> <property 
29             name="endingDelimiter" value="`"/> javaFileEncoding :属性javaFileEncoding设置要使用的Java文件的编码,默认使用当前平台的编码,只有当生产的编码需要特殊指定时才需要使用,一般用不到。 
30             javaFormatter :最后两个javaFormatter和xmlFormatter属性**可能会**很有用,如果你想使用模板来定制生成的java文件和xml文件的样式,你可以通过指定这两个属性的值来实现。 
31             xmlFormatter :最后两个javaFormatter和xmlFormatter属性**可能会**很有用,如果你想使用模板来定制生成的java文件和xml文件的样式,你可以通过指定这两个属性的值来实现。 -->
32 
33         <!-- <plugin> 元素用来定义一个插件。插件用于扩展或修改通过MyBatis Generator (MBG)代码生成器生成的代码。插件将按在配置中配置的顺序执行。 -->
34 
35         <!-- 生成注释信息 -->
36         <commentGenerator>
37             <!-- suppressAllComments:阻止生成注释,默认为false -->
38             <!-- suppressDate:阻止生成的注释包含时间戳,默认为false -->
39             <!-- 是否去除自动生成的注释 true:是 : false:否 -->
40             <property name="suppressAllComments" value="true" />
41             <property name="suppressDate" value="true" />
42         </commentGenerator>
43 
44         <!--<<jdbcConnection> 用于指定数据库连接信息,该元素必选,并且只能有一个。 -->
45         <!--数据库连接的信息:驱动类、连接地址、用户名、密码 -->
46         <jdbcConnection driverClass="com.mysql.jdbc.Driver"
47             connectionURL="jdbc:mysql://localhost:3306/ssi" userId="root"
48             password="root">
49         </jdbcConnection>
50 
51 
52         <!-- 这个元素的配置用来指定JDBC类型和Java类型如何转换。 -->
53         <!-- 默认false,把JDBC DECIMAL 和 NUMERIC 类型解析为 Integer,为 true时把JDBC DECIMAL 
54             和 NUMERIC 类型解析为java.math.BigDecimal -->
55         <javaTypeResolver>
56             <property name="forceBigDecimals" value="false" />
57         </javaTypeResolver>
58 
59         <!-- targetProject:生成POJO类的位置 targetPackage:生成实体类存放的包名,一般就是放在该包下。实际还会受到其他配置的影响(<table>中会提到)。 
60             targetProject:指定目标项目路径,使用的是文件系统的绝对路径。 -->
61         <javaModelGenerator targetPackage="com.mybatis.pojo"
62             targetProject="src/main/java">
63             <!-- constructorBased:该属性只对MyBatis3有效,如果true就会使用构造方法入参,如果false就会使用setter方式。默认为false 
64                 enableSubPackages:如果true,MBG会根据catalog和schema来生成子包。如果false就会直接用targetPackage属性。默认为false。 
65                 immutable:该属性用来配置实体类属性是否可变,如果设置为true,那么constructorBased不管设置成什么,都会使用构造方法入参,并且不会生成setter方法。如果为false,实体类属性就可以改变。默认为false。 
66                 rootClass:设置所有实体类的基类。如果设置,需要使用类的全限定名称。并且如果MBG能够加载rootClass,那么MBG不会覆盖和父类中完全匹配的属性。匹配规则: 
67                 属性名完全相同 属性类型相同 属性有getter方法 属性有setter方法 trimStrings:是否对数据库查询结果进行trim操作,如果设置为true就会生成类似这样public 
68                 void setUsername(String username) {this.username = username == null ? null 
69                 : username.trim();}的setter方法。默认值为false -->
70             <!-- enableSubPackages:是否让schema作为包的后缀 -->
71             <property name="enableSubPackages" value="false" />
72             <!-- 从数据库返回的值被清理前后的空格 -->
73             <property name="trimStrings" value="true" />
74         </javaModelGenerator>
75 
76         <!-- targetProject:mapper映射文件生成的位置 -->
77         <sqlMapGenerator targetPackage="com.mybatis.mapper" targetProject="src/main/java">
78             <!-- enableSubPackages:是否让schema作为包的后缀 -->
79             <property name="enableSubPackages" value="false" />
80         </sqlMapGenerator>
81 
82         <!-- targetPackage:mapper接口生成的位置 -->
83         <javaClientGenerator type="XMLMAPPER" targetPackage="com.mybatis.mapper" targetProject="src/main/java">
84             <!-- enableSubPackages:是否让schema作为包的后缀 -->
85             <property name="enableSubPackages" value="false" />
86         </javaClientGenerator>
87         <!-- 指定数据库表 -->
88 
89         <table domainObjectName="User"  tableName="tb_user"></table>
90         <table domainObjectName="Order"   tableName="tb_order"></table>
91         <table domainObjectName="OrderdDetail"   tableName="tb_orderdetail"></table>
92         <table domainObjectName="Item"   tableName="tb_item"></table>
93     </context>
94 
95 </generatorConfiguration>

 

MBGenerator.java

 1 package com.mybatis.generator;
 2 
 3 import java.io.File;
 4 import java.io.IOException;
 5 import java.sql.SQLException;
 6 import java.util.ArrayList;
 7 import java.util.List;
 8 
 9 import org.apache.ibatis.io.Resources;
10 import org.mybatis.generator.api.MyBatisGenerator;
11 import org.mybatis.generator.config.Configuration;
12 import org.mybatis.generator.config.xml.ConfigurationParser;
13 import org.mybatis.generator.exception.InvalidConfigurationException;
14 import org.mybatis.generator.exception.XMLParserException;
15 import org.mybatis.generator.internal.DefaultShellCallback;
16 
17 public class MBGenerator {
18     
19     public static void main(String[] args) throws IOException, XMLParserException, InvalidConfigurationException, SQLException, InterruptedException {
20         List<String> warnings = new ArrayList<String>();
21         boolean overwrite = true;
22         File configFile = Resources.getResourceAsFile("generatorConfig.xml");
23         ConfigurationParser cp = new ConfigurationParser(warnings);
24         Configuration config = cp.parseConfiguration(configFile);
25         DefaultShellCallback callback = new DefaultShellCallback(overwrite);
26         MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, callback, warnings);
27         myBatisGenerator.generate(null);
28     }
29     
30     
31 }

 

MyBatis3 Generator 详解

标签:

原文地址:http://www.cnblogs.com/cunix/p/4544305.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!