• 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="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逆向工程,请大家参考

  • 相关阅读:
    一步一步做高性能服务器(C++) -- Day 3
    一步一步做高性能服务器(C++) -- Day 2
    一步一步做高性能服务器(C++) -- Day 1
    一步一步做高性能服务器(C++) -- Day 0
    HDU ACMSTEPS 1.3.4
    铭记
    子窗口与主窗口分开处理
    autoit小贴士
    autoit使用WMIC获取硬件信息
    Windows WMIC命令使用详解
  • 原文地址:https://www.cnblogs.com/yujiwei/p/7257882.html
Copyright © 2020-2023  润新知