逆向工程

  • 一、概念与机制
    • 1、概念
    • 2、基本原理
  • 二、操作
    • 1、配置POM
    • 2、MBG配置文件
    • 3、执行MBG插件的generate目标
    • 4、效果
  • 三、QBC查询
    • 1、 概念
    • 2、 例子

一、概念与机制

1、概念

  • 正向工程:先创建Java实体类,由框架负责根据实体类生成数据库表。Hibernate是支持正向工程的。

  • 逆向工程:先创建数据库表,由框架负责根据数据库表,反向生成如下资源:
    Java实体类
    Mapper接口
    Mapper配置文件

2、基本原理

二、操作

1、配置POM

<!-- 依赖MyBatis核心包 -->
<dependencies><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.7</version></dependency>
</dependencies><!-- 控制Maven在构建过程中相关配置 -->
<build><!-- 构建过程中用到的插件 --><plugins><!-- 具体插件,逆向工程的操作是以构建过程中插件形式出现的 --><plugin><groupId>org.mybatis.generator</groupId><artifactId>mybatis-generator-maven-plugin</artifactId><version>1.3.0</version><!-- 插件的依赖 --><dependencies><!-- 逆向工程的核心依赖 --><dependency><groupId>org.mybatis.generator</groupId><artifactId>mybatis-generator-core</artifactId><version>1.3.2</version></dependency><!-- 数据库连接池 --><dependency><groupId>com.mchange</groupId><artifactId>c3p0</artifactId><version>0.9.2</version></dependency><!-- MySQL驱动 --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.8</version></dependency></dependencies></plugin></plugins>
</build>

2、MBG配置文件

文件名必须是:generatorConfig.xml


内容为:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfigurationPUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN""http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
<generatorConfiguration><!--targetRuntime: 执行生成的逆向工程的版本MyBatis3Simple: 生成基本的CRUD(清新简洁版)MyBatis3: 生成带条件的CRUD(奢华尊享版)--><context id="DB2Tables" targetRuntime="MyBatis3"><!-- 数据库的连接信息 --><jdbcConnection driverClass="com.mysql.jdbc.Driver"connectionURL="jdbc:mysql://localhost:3306/mybatis-example"userId="root"password="mysql"></jdbcConnection><!-- javaBean的生成策略--><javaModelGenerator targetPackage="com.zengchuiyu.mybatis.entity" targetProject=".\src\main\java"><property name="enableSubPackages" value="true" /><property name="trimStrings" value="true" /></javaModelGenerator><!-- SQL映射文件的生成策略 --><sqlMapGenerator targetPackage="com.zengchuiyu.mybatis.mapper"  targetProject=".\src\main\java"><property name="enableSubPackages" value="true" /></sqlMapGenerator><!-- Mapper接口的生成策略 --><javaClientGenerator type="XMLMAPPER" targetPackage="com.zengchuiyu.mybatis.mapper"  targetProject=".\src\main\java"><property name="enableSubPackages" value="true" /></javaClientGenerator><!-- 逆向分析的表 --><!-- tableName设置为*号,可以对应所有表,此时不写domainObjectName --><!-- domainObjectName属性指定生成出来的实体类的类名 --><table tableName="t_emp" domainObjectName="Employee"/><table tableName="t_customer" domainObjectName="Customer"/><table tableName="t_order" domainObjectName="Order"/></context>
</generatorConfiguration>

注意:自己配置具体的信息,如数据库连接、包名、对应的表

3、执行MBG插件的generate目标

4、效果

三、QBC查询

1、 概念

QBC:Query By Criteria


QBC查询最大的特点就是将SQL语句中的WHERE子句进行了组件化的封装,让我们可以通过调用Criteria对象的方法自由的拼装查询条件。

2、 例子

/*** @author zengchuiyu* @create 2021-10-11 0:43*/
public class QBCTest {private SqlSessionFactory factory;@Beforepublic void init() throws IOException {factory = new SqlSessionFactoryBuilder().build(Resources.getResourceAsStream("mybatis-config.xml"));}@Testpublic void test1(){// 1.创建EmployeeExample对象EmployeeExample example = new EmployeeExample();// 2.通过example对象创建Criteria对象EmployeeExample.Criteria criteria01 = example.createCriteria();//3.在criteria对象中封装查询条件criteria01.andEmpSalaryLessThan(1000.00).andEmpNameLike("%o%");SqlSession session = factory.openSession();EmployeeMapper mapper = session.getMapper(EmployeeMapper.class);//4. 基于Criteria对象进行查询List<Employee> employeeList = mapper.selectByExample(example);for (Employee employee : employeeList) {System.out.println("employee = " + employee);}session.close();}}

最终效果:

Preparing: select emp_id, emp_name, emp_salary from t_emp WHERE (
emp_salary < ? and emp_name like ? )
[==> Parameters: 1000.0(Double), %o%(String)]

通过逆向工程以及QBC查询可以大大提高开发效率,动态组装我们需要的查询条件。

Mybatis的逆向工程(原理+详细操作)相关推荐

  1. Mybatis与Hibernate的详细对比

    转载自  Mybatis与Hibernate的详细对比 前言 这篇博文我们重点分析一下Mybatis与Hibernate的区别,当然在前面的博文中我们已经深入的研究了Mybatis和Hibernate ...

  2. 五分钟,带你彻底掌握 MyBatis缓存 工作原理

    作者:双子孤狼 blog.csdn.net/zwx900102/article/details/108696005 前言 在计算机的世界中,缓存无处不在,操作系统有操作系统的缓存,数据库也会有数据库的 ...

  3. 【持久化框架】Mybatis与Hibernate的详细对比

    前言 这篇博文我们重点分析一下Mybatis与Hibernate的区别,当然在前面的博文中我们已经深入的研究了Mybatis和Hibernate的原理. Mybatis [持久化框架]Mybatis简 ...

  4. MyBatis 源码阅读 -- 核心操作篇

    核心操作包是 MyBatis 进行数据库查询和对象关系映射等工作的包.该包中的类能完成参数解析.数据库查询.结果映射等主要功能.在主要功能的执行过程中还会涉及缓存.懒加载.鉴别器处理.主键自增.插件支 ...

  5. MyBatis动态代理原理

    1. MyBatis核心组件 在详细探究MyBatis中动态代理机制之前,先来补充一下基础知识,认识一下MyBatis的核心组件. SqlSessionFactoryBuilder(构造器): 它可以 ...

  6. MyBatis基本工作原理介绍

    1.MyBatis基本工作原理介绍 计算机的基本工作就是存储和计算,而MyBatis是存储领域的利器.MyBatis的基本工作原理就是:先封装SQL,接着调用JDBC操作数据库,最后把数据库返回的表结 ...

  7. Mybatis 的工作原理及流程

    1.介绍 MyBatis的底层操作封装了JDBC的API,MyBatis的工作原理以及核心流程与JDBC的使用步骤一脉相承,MyBatis的核心对象(SqlSession,Executor)与JDBC ...

  8. 12.mybatis核心架构原理

    课程标题<2022超详细mybatis框架源码解读> 课程内容: 1.mybatis环境搭建 2.mybatis使用哪些设计模式 3.mybatis大致运行原理 4.mybatis建造者模 ...

  9. Nginx反向绑定域名方法和详细操作应用实例:Google和Gravatar

    2019独角兽企业重金招聘Python工程师标准>>> 反向绑定域名,即将域名B绑定到域名A上,用户只要访问B就等同于进入A,内容都是由A提供,它有点像建立了一个A的镜像.什么时候要 ...

最新文章

  1. Maven——第1章 Maven 介绍
  2. IT项目需求分析的注意事项
  3. 机器人瓦力 配乐_《WALL-E》机器人小王子
  4. QT的QTextLayout类的使用
  5. Spark(1)——spark基本原理与启动
  6. VC+MO2.0连接ArcSDE并且读出SDE中的空间数据(三)
  7. mysql统计功能和数据库information_schema/performance_schema
  8. 安装Linux系统的一些问题记载
  9. fatal error LNK1104: 无法打开***.exe的错误
  10. 各国“未雨绸缪”致网络安全陷入困境 安全防御诱发“防御性入侵”
  11. linux中的各种$号 位置参数变量
  12. 【机器学习】CART决策树原理及python实现
  13. Access操作必须使用一个可更新的查询
  14. 室内定位算法_室内外定位技术的几种常用的技术与算法你都知道吗?
  15. Yarn的任务推测执行机制
  16. java版Spring Cloud+SpringBoot+mybatis+uniapp b2b2c 多商户入驻商城 直播 电子商务之全渠道线上线下会员引流协同
  17. 实验记录 | scATAC-seq数据的比对(一)
  18. Java开发进阶10本必备书单
  19. 对标阿里p6 - 看看自己什么水平!
  20. 使用nohup指令将linux服务器进程运行在后台的方法

热门文章

  1. Python配置处理ini文件-configparser
  2. Flash不同版本的下载安装及必要的系统组件未正常运行的解决办法
  3. 3A+ISP之AE篇
  4. 软件工程与计算II-6-需求分析方法
  5. 斯蒂芬·钦(Stephen Chin)骑着自行车在欧洲巡游
  6. C语言中malloc函数及free函数用法
  7. “三天打鱼俩天晒网”
  8. Spring Cloud GateWay系列(三):路由规则动态刷新
  9. 游戏设计模式阅读笔记8——序列模式(游戏循环)
  10. mysql分库分表 ppt_数据库分库分表中间件架构解析.ppt