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="false" /> 23 </javaTypeResolver> 24 25 <!-- javaModelGenerator:指定javaBean的生成策略 26 targetPackage="test.model":目标包名 27 targetProject="MBGTestProjectsrc":目标工程 28 --> 29 <javaModelGenerator targetPackage="com.atguigu.mybatis.bean" 30 targetProject=".src"> 31 <property name="enableSubPackages" value="true" /> 32 <property name="trimStrings" value="true" /> 33 </javaModelGenerator> 34 35 <!-- sqlMapGenerator:sql映射生成策略: --> 36 <sqlMapGenerator targetPackage="com.atguigu.mybatis.dao" 37 targetProject=".conf"> 38 <property name="enableSubPackages" value="true" /> 39 </sqlMapGenerator> 40 41 <!-- javaClientGenerator:指定mapper接口所在的位置 --> 42 <javaClientGenerator type="XMLMAPPER" targetPackage="com.atguigu.mybatis.dao" 43 targetProject=".src"> 44 <property name="enableSubPackages" value="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逆向工程,请大家参考