[toc]
概述
- 官网提供的mapper自动生成工具mybatis-generator-core-1.3.6.jar
- 可以生成 po类,mapper映射文件,mapper接口
- 支持单表查询(简单查询,条件查询,1.3.6提供动态sql)
- 官网MyBatis Generator使用文档:http://www.mybatis.org/generator/index.html
mybatis-generator逆向工程
如何搭建
jar包
- log4j
- mybatis核心
- mybatis-generator-core-1.3.6.jar
- 数据库连接jar
generatorConfig.xml
Code1
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<?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://10.211.55.6:3306/mybatis?characterEncoding=utf-8"
userId="machine"
password="4869">
</jdbcConnection>
<!-- 如使用oracle参考如下 -->
<!--
<jdbcConnection
driverClass="oracle.jdbc.driver.OracleDriver"
connectionURL="jdbc:oracle:thin:@127.0.0.1:1521:orcl"
userId="scott"
password="wcy675600920">
</jdbcConnection> -->
<!--
false(默认): 把JDBC DECIMAL 和 NUMERIC 类型解析为 Integer,
true: 把JDBC DECIMAL 和 NUMERIC 类型解析为java.math.BigDecimal
-->
<javaTypeResolver >
<property name="forceBigDecimals" value="false" />
</javaTypeResolver>
<!--targetProject: 生成 PO类 的位置-->
<!--
mac下路径是./src
windows 路径是.\src
-->
<javaModelGenerator targetPackage="com.machine.pro.pojo" targetProject="./src">
<!-- enableSubPackages:是否让schema作为包的后缀 -->
<property name="enableSubPackages" value="false" />
<!-- 从数据库返回的值 被清理前后的空格 -->
<property name="trimStrings" value="true" />
</javaModelGenerator>
<!-- targetProject: 生成 mapper映射文件 的位置 -->
<sqlMapGenerator targetPackage="com.machine.pro.mapper" targetProject="./src">
<!-- enableSubPackages:是否让schema作为包的后缀 -->
<property name="enableSubPackages" value="false" />
</sqlMapGenerator>
<!-- targetPackage:mapper接口生成的位置 -->
<javaClientGenerator type="XMLMAPPER" targetPackage="com.machine.pro.mapper" targetProject="./src">
<!-- enableSubPackages:是否让schema作为包的后缀 -->
<property name="enableSubPackages" value="false" />
</javaClientGenerator>
<!--指定要生成的 数据库表-->
<table tableName="user" />
<table tableName="orders" />
<!--table更多细节-->
<!--
<table tableName="" domainObjectName="">
<columnOverride column="" javaType="" />
</table>
-->
</context>
</generatorConfiguration>GeneratorSqlMap.java
Code1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26public class GeneratorSqlMap {
public void generator() throws Exception{
List<String> warnings = new ArrayList<String>();
boolean overwrite = true;
//指定逆向工程配置文件
File configFile = new File("config/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);
}
public static void main(String[] args) {
try {
GeneratorSqlMap generator = new GeneratorSqlMap();
generator.generator();
} catch (Exception e) {
e.printStackTrace();
}
}
}- 运行main可生成相应代码
附录:我的代码地址
https://github.com/Machine4869/MyCode/tree/master/Mybatis逆向工程/
一些映射 生成规则
- 如表的creat_time字段 会映射成 pojo的craeteTime属性(去下划线大写)
- user表 会映射成 User类
- tb_user表会映射成 TbUser类
Mapper接口测试与使用
(法一)采用Example进行条件查询
配置:targetRuntime=”MyBatis3”
Code
1 | <context id="testTables" targetRuntime="MyBatis3"> |
常用接口
Code
1 | //按id 查询 |
条件查询:
java
1 |
|
(法二)MyBatis Dynamic SQL(用where子句进行条件查询)
概述:
- generator 使用为MyBatis3DynamicSQL生成代码,这些类依赖于MyBatis Dynamic SQL
- MyBatis Dynamic SQL 是生成动态 SQL 语句的框架,可以配合为MyBatis Generator使用
- MyBatis Dynamic SQL 使用WHERE子句(可以用任意组合的and和or来创建)进行条件查询
- MyBatis Dynamic SQL lib下载地址
准备工作
jar包 :mybatis-dynamic-sql-1.0.0.jar
配置:targetRuntime=”MyBatis3”
Code1
<context id="testTables" targetRuntime="MyBatis3DynamicSQL">
使用:
前提:import静态支持类
Code
1 | import static com.machine.pro.mapper.UserDynamicSqlSupport.*; // import 自动生成的 "support" 类 |
使用案例:
java
1 |
|




