Mybatis的逆向工程(原理+详细操作)
逆向工程
- 一、概念与机制
- 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的逆向工程(原理+详细操作)相关推荐
- Mybatis与Hibernate的详细对比
转载自 Mybatis与Hibernate的详细对比 前言 这篇博文我们重点分析一下Mybatis与Hibernate的区别,当然在前面的博文中我们已经深入的研究了Mybatis和Hibernate ...
- 五分钟,带你彻底掌握 MyBatis缓存 工作原理
作者:双子孤狼 blog.csdn.net/zwx900102/article/details/108696005 前言 在计算机的世界中,缓存无处不在,操作系统有操作系统的缓存,数据库也会有数据库的 ...
- 【持久化框架】Mybatis与Hibernate的详细对比
前言 这篇博文我们重点分析一下Mybatis与Hibernate的区别,当然在前面的博文中我们已经深入的研究了Mybatis和Hibernate的原理. Mybatis [持久化框架]Mybatis简 ...
- MyBatis 源码阅读 -- 核心操作篇
核心操作包是 MyBatis 进行数据库查询和对象关系映射等工作的包.该包中的类能完成参数解析.数据库查询.结果映射等主要功能.在主要功能的执行过程中还会涉及缓存.懒加载.鉴别器处理.主键自增.插件支 ...
- MyBatis动态代理原理
1. MyBatis核心组件 在详细探究MyBatis中动态代理机制之前,先来补充一下基础知识,认识一下MyBatis的核心组件. SqlSessionFactoryBuilder(构造器): 它可以 ...
- MyBatis基本工作原理介绍
1.MyBatis基本工作原理介绍 计算机的基本工作就是存储和计算,而MyBatis是存储领域的利器.MyBatis的基本工作原理就是:先封装SQL,接着调用JDBC操作数据库,最后把数据库返回的表结 ...
- Mybatis 的工作原理及流程
1.介绍 MyBatis的底层操作封装了JDBC的API,MyBatis的工作原理以及核心流程与JDBC的使用步骤一脉相承,MyBatis的核心对象(SqlSession,Executor)与JDBC ...
- 12.mybatis核心架构原理
课程标题<2022超详细mybatis框架源码解读> 课程内容: 1.mybatis环境搭建 2.mybatis使用哪些设计模式 3.mybatis大致运行原理 4.mybatis建造者模 ...
- Nginx反向绑定域名方法和详细操作应用实例:Google和Gravatar
2019独角兽企业重金招聘Python工程师标准>>> 反向绑定域名,即将域名B绑定到域名A上,用户只要访问B就等同于进入A,内容都是由A提供,它有点像建立了一个A的镜像.什么时候要 ...
最新文章
- Maven——第1章 Maven 介绍
- IT项目需求分析的注意事项
- 机器人瓦力 配乐_《WALL-E》机器人小王子
- QT的QTextLayout类的使用
- Spark(1)——spark基本原理与启动
- VC+MO2.0连接ArcSDE并且读出SDE中的空间数据(三)
- mysql统计功能和数据库information_schema/performance_schema
- 安装Linux系统的一些问题记载
- fatal error LNK1104: 无法打开***.exe的错误
- 各国“未雨绸缪”致网络安全陷入困境 安全防御诱发“防御性入侵”
- linux中的各种$号 位置参数变量
- 【机器学习】CART决策树原理及python实现
- Access操作必须使用一个可更新的查询
- 室内定位算法_室内外定位技术的几种常用的技术与算法你都知道吗?
- Yarn的任务推测执行机制
- java版Spring Cloud+SpringBoot+mybatis+uniapp b2b2c 多商户入驻商城 直播 电子商务之全渠道线上线下会员引流协同
- 实验记录 | scATAC-seq数据的比对(一)
- Java开发进阶10本必备书单
- 对标阿里p6 - 看看自己什么水平!
- 使用nohup指令将linux服务器进程运行在后台的方法
热门文章
- Python配置处理ini文件-configparser
- Flash不同版本的下载安装及必要的系统组件未正常运行的解决办法
- 3A+ISP之AE篇
- 软件工程与计算II-6-需求分析方法
- 斯蒂芬·钦(Stephen Chin)骑着自行车在欧洲巡游
- C语言中malloc函数及free函数用法
- “三天打鱼俩天晒网”
- Spring Cloud GateWay系列(三):路由规则动态刷新
- 游戏设计模式阅读笔记8——序列模式(游戏循环)
- mysql分库分表 ppt_数据库分库分表中间件架构解析.ppt