首页 > 代码库 > MyBatis之逆向工程

MyBatis之逆向工程

  MyBatis的逆向工程是MyBatis插件的一种,可以从数据库直接映射到工程中,生成dao层的接口和xml文件映射以及普通javabean的实体类,但是表连接、存储过程等这些复杂sql的定义需要我们手工编写下面让我们来看一下逆向工程的配置过程。

 

? 官方文档地址
http://www.mybatis.org/generator/
? 官方工程地址
https://github.com/mybatis/generator/releases

 

 

  MBG使用
? 使用步骤:
1)编写MBG的配置文件(重要几处配置)
1)jdbcConnection配置数据库连接信息
2)javaModelGenerator配置javaBean的生成策略
3)sqlMapGenerator 配置sql映射文件生成策略
4)javaClientGenerator配置Mapper接口的生成策略
5)table 配置要逆向解析的数据表
tableName:表名
domainObjectName:对应的javaBean名
2)运行代码生成器生成代码
? 注意:
Context标签
targetRuntime=“MyBatis3“可以生成带条件的增删改查
targetRuntime=“MyBatis3Simple“可以生成基本的增删改查
如果再次生成,建议将之前生成的数据删除,避免xml向后追加内容出现的问
题。

 

MBG配置文件

 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 <generatorConfiguration>
 6 
 7     <!-- 
 8         targetRuntime="MyBatis3Simple":生成简单版的CRUD
 9         MyBatis3:豪华版
10     
11      -->
12   <context id="DB2Tables" targetRuntime="MyBatis3">
13       <!-- jdbcConnection:指定如何连接到目标数据库 -->
14     <jdbcConnection driverClass="com.mysql.jdbc.Driver"
15         connectionURL="jdbc:mysql://localhost:3306/mybatis?allowMultiQueries=true"
16         userId="root"
17         password="123456">
18     </jdbcConnection>
19 
20     <!--  -->
21     <javaTypeResolver >
22       <property name="forceBigDecimals" value="http://www.mamicode.com/false" />
23     </javaTypeResolver>
24 
25     <!-- javaModelGenerator:指定javaBean的生成策略 
26     targetPackage="test.model":目标包名
27     targetProject="\MBGTestProject\src":目标工程
28     -->
29     <javaModelGenerator targetPackage="com.atguigu.mybatis.bean" 
30             targetProject=".\src">
31       <property name="enableSubPackages" value="http://www.mamicode.com/true" />
32       <property name="trimStrings" value="http://www.mamicode.com/true" />
33     </javaModelGenerator>
34 
35     <!-- sqlMapGenerator:sql映射生成策略: -->
36     <sqlMapGenerator targetPackage="com.atguigu.mybatis.dao"  
37         targetProject=".\conf">
38       <property name="enableSubPackages" value="http://www.mamicode.com/true" />
39     </sqlMapGenerator>
40 
41     <!-- javaClientGenerator:指定mapper接口所在的位置 -->
42     <javaClientGenerator type="XMLMAPPER" targetPackage="com.atguigu.mybatis.dao"  
43         targetProject=".\src">
44       <property name="enableSubPackages" value="http://www.mamicode.com/true" />
45     </javaClientGenerator>
46 
47     <!-- 指定要逆向分析哪些表:根据表要创建javaBean -->
48     <table tableName="tbl_dept" domainObjectName="Department"></table>
49     <table tableName="tbl_employee" domainObjectName="Employee"></table>
50   </context>
51 </generatorConfiguration>

 

 

 1 生成器代码
 2 public static void main(String[] args) throws Exception {
 3 List<String> warnings = new ArrayList<String>();
 4 boolean overwrite = true;
 5 File configFile = new File("mbg.xml");
 6 ConfigurationParser cp = new ConfigurationParser(warnings);
 7 Configuration config = cp.parseConfiguration(configFile);
 8 DefaultShellCallback callback = new DefaultShellCallback(overwrite);
 9 MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config,
10 callback, warnings);
11 myBatisGenerator.generate(null);
12 }

 

 

 

 1 测试查询:
 2 QBC风格的带条件查询
 3 @Test
 4 public void test01(){
 5 SqlSession openSession = build.openSession();
 6 DeptMapper mapper = openSession.getMapper(DeptMapper.class);
 7 DeptExample example = new DeptExample();
 8 //所有的条件都在example中封装
 9 Criteria criteria = example.createCriteria();
10 //select id, deptName, locAdd from tbl_dept WHERE
11 //( deptName like ? and id > ? )
12 criteria.andDeptnameLike("%部%");
13 criteria.andIdGreaterThan(2);
14 List<Dept> list = mapper.selectByExample(example);
15 for (Dept dept : list) {
16 System.out.println(dept);
17 }
18 }

 

 

最后送大家一张MyBatis的工作原理图

技术分享

 

 MyBatis逆向工程,请大家参考

MyBatis之逆向工程