持久层框架设计实现及Mybatis源码分析
文章平均质量分 81
痛冕
成长笔记
展开
-
Mybatis-Plus学习笔记(二)
Mybatis-Plus学习笔记(二)乐观锁插件主要适用场景**意图:**当要更新一条记录的时候,希望这条记录没有被别人更新乐观锁实现方式:取出记录时,获取当前version更新时,带上这个version执行更新时, set version = newVersion where version = oldVersion如果version不对,就更新失败插件配置Spring<beanclass="com.baomidou.mybatisplus.extension.plugi原创 2021-05-17 16:44:55 · 333 阅读 · 0 评论 -
Mybatis-Plus学习笔记(一)
Mybatis-PlusMybatis-Plus概念MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。Mybatis-Plus介绍https://mp.baomidou.com/或https://mp.baomidou.com/特性无侵入:只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑损耗小:启动即会自动注入基本 CURD,性能基本无损耗,直接面向对象操作强大的 CRUD 操作:内置原创 2021-05-17 16:04:35 · 362 阅读 · 1 评论 -
Mybatis源码中的设计模式
Mybatis源码中的设计模式虽然我们都知道有3类23种设计模式,但是大多停留在概念层面,Mybatis源码中使用了大量的设计模式,观察设计模式在其中的应用,能够更深入的理解设计模式Mybati s至少用到了以下的设计模式的使用:接下来对Builder构建者模式、工厂模式、代理模式进行解读,先介绍模式自身的知识,然后解读在Mybatis中怎样应用了该模式。Builder构建者模式Builder模式的定义是"将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。”,它属于创建原创 2021-05-17 14:51:42 · 96 阅读 · 1 评论 -
Mybatis源码剖析(二)
Mybatis源码剖析(二)延迟加载源码剖析什么是延迟加载?在开发过程中很多时候我们并不需要总是在加载用户信息时就一定要加载他的订单信息。此时就是我们所说的延迟加载。延迟加载就是在需要用到数据时才进行加载,不需要用到数据时就不加载数据。延迟加载也称懒加载。优点:先从单表查询,需要时再从关联表去关联查询,大大提高数据库性能,因为查询单表要比关联查询多张表速度要快。缺点:因为只有当需要用到数据时,才会进行数据库查询,这样在大批量数据查询时,因为查询工作也要消耗时间,所以可能造成用户等待时间变长原创 2021-05-17 14:36:24 · 101 阅读 · 0 评论 -
Mybatis源码剖析(一)
Mybatis源码剖析传统方式源码剖析:源码剖析-初始化InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");//开始初始话工作SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(inputStream);build方法public SqlSessionFactory build(InputStream input原创 2021-05-17 14:19:45 · 97 阅读 · 2 评论 -
Mybatis架构原理
Mybatis架构原理我们把Mybatis的功能架构分为三层:API接口层:提供给外部使用的接口 API,开发人员通过这些本地API来操纵数据库。接口层一接收到调用请求就会调用数据处理层来完成具体的数据处理。MyBatis和数据库的交互有两种方式:a. 使用传统的MyBatis提供的API ;b. 使用Mapper代理的方式数据处理层:负责具体的SQL查找、SQL解析、SQL执行和执行结果映射处理等。它主要的目的是根据调用的请求完成一次数据库操作。基础支撑层:负责最基础的功能支撑,包括连接原创 2021-05-17 12:46:30 · 232 阅读 · 3 评论 -
Mybatis通用mapper
Mybatis通用mapper什么是通用Mapper通用Mapper就是为了解决单表增删改查,基于Mybatis的插件机制。开发人员不需要编写SQL,不需要在DAO中增加方法,只要写好实体类,就能支持相应的增删改查方法如何使用首先在maven项目,在pom.xml中引入mapper的依赖<dependency><groupId>tk.mybatis</groupId><artifactId>mapper</artifactId>&l原创 2021-05-17 12:35:35 · 1277 阅读 · 1 评论 -
Mybatis插件
Mybatis插件插件简介一般情况下,开源框架都会提供插件或其他形式的拓展点,供开发者自行拓展。这样的好处是显而易见的,一是增加了框架的灵活性。二是开发者可以结合实际需求,对框架进行拓展,使其能够更好的工作。以MyBatis为例,我们可基于MyBatis插件机制实现分页、分表,监控等功能。由于插件和业务 无关,业务也无法感知插件的存在。因此可以无感植入插件,在无形中增强功能Mybatis插件介绍Mybatis作为一个应用广泛的优秀的ORM开源框架,这个框架具有强大的灵活性,在四大组件(Executo原创 2021-05-17 12:29:41 · 2541 阅读 · 3 评论 -
Mybatis缓存
Mybatis缓存缓存就是内存中的数据,常常来自对数据库查询结果保存,使用缓存,我们可以避免频繁的与数据库进行交互,进而提高响应速度Mybatis也提供了对缓存的支持,分为一级缓存和二级缓存,可以通过下图来理解:一级缓存是SqlSession级别的缓存。在操作数据库时需要构造sqlSession对象,在对象中有一个数据结构(HashMap)用于存储缓存数据。不同的sqlSession之间的缓存数据区域(HashMap)是互相不影响的二级缓存是mapper级别的缓存,多个SqlSession去操作原创 2021-05-17 11:42:44 · 133 阅读 · 4 评论 -
Mybatis注解开发笔记
Mybatis注解开发这几年来注解开发越来越流行,Mybatis也可以使用注解开发方式,这样我们就可以减少编写Mapper映射文件了。我们先围绕一些基本的CRUD来学习,再学习复杂映射多表操作。Mybatis的常用注解@Insert:实现新增@Update:实现修改@Delete:实现删除@Select:实现查询@Result:实现结果集封装@Results:可以与@Result一起使用,封装多个结果集@One:实现一对一结果集封装@Many:实现一对多结果集封装实现复杂关系映射之原创 2021-05-15 17:14:41 · 111 阅读 · 0 评论 -
Mybatis复杂映射开发
Mybatis复杂映射开发Mybatis复杂映射开发这里主要是针对一对一,一对多,多对多三种情况,多表联查这里使用了相应联合查询,也可以通过嵌套查询来进行实现,最后通过ResultMap标签完成结果的映射一对一一对一查询的模型用户表和订单表的关系为,一个用户有多个订单,一个订单只从属于一个用户一对一查询的需求:查询一个订单,与此同时查询出该订单所属的用户一对一查询的语句对应的sql语句:select * from orders o,user u where o.uid=u.id;查询的结果如原创 2021-05-15 17:00:24 · 98 阅读 · 0 评论 -
Mybatis配置文件
Mybatis配置文件核心配置文件sqlMapConfig.xml核心配置配置文件的层级关系如下:Mybatis常用配置解析environments标签数据库环境的配置,支持多环境配置注意事务管理器(transactionManager)类型有两种:JDBC:这个配置就是直接使用了JDBC 的提交和回滚设置,它依赖于从数据源得到的连接来管理事务作用域。MANAGED:这个配置几乎没做什么。它从来不提交或回滚一个连接,而是让容器来管理事务的整个生命周期(比如 JEE 应用服务器的上下文原创 2021-05-15 15:43:13 · 303 阅读 · 0 评论 -
Mybatis介绍及入门
Mybatis从概念原理到源码分析,Mybatis是一款优秀的基于ORM的半自动轻量级的持久层框架,它支持sql定制化,存储过程,以及高级映射。Mybatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。可以使用简单的XML或者注解来配置和映射原生类型,接口和Java的POJO(Plain Old Java Object即普通老式Java对象)为数据库中的记录。对象/关系数据库映射(ORM)ORM全称Object/Relation Mapping:表示对象-关系映射的缩写ORM完成面向原创 2021-05-15 14:51:31 · 116 阅读 · 0 评论 -
JDBC步骤及实现流程
JDBC具体步骤及实现流程Java数据库连接,(Java Database Connectivity,简称JDBC)是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。JDBC也是Sun Microsystems的商标。我们通常说的JDBC是面向关系型数据库的。加载数据库驱动在连接数据库之前,首先要加载想要连接的数据库的驱动加载到JVM,这通过java.lang.Class类的静态方法forName(String className)实现。Cl原创 2021-05-13 11:56:00 · 2090 阅读 · 1 评论 -
自定义持久层框架
DEMO自定义持久层框架的增删改查自定义持久层框架的设计思路使用端引入自定义持久层框架jar包,定义自定义持久层框架本身就是对JDBC代码进行封装,去解决或者规避原生JDBC在使用中的一些问题。JDBC问题分析以及在自定义框架的解决方式JDBC问题分析:数据库配置信息存在硬编码问题频繁创建和释放数据库链接SQL语句,设置参数,获取结果集参数存在硬编码问题手动封装结果集较为繁琐解决方式:使用配置文件配置数据库使用链接池使用映射配置文件反射,内省整体流程导包:<d原创 2021-05-09 16:08:29 · 125 阅读 · 0 评论