mybatis
文章平均质量分 89
王老狮
现500强企业担任核心技术骨干,有多年的技术开发和管理经验。曾在公司主导过开放平台系统架构的设计,大数据平台架构设计。现主要负责公司数据中台体系的从0到1的建设,擅长分布式,高并发,大数据等技术领域。在系统安全、微服务、技术架构等领域输出多篇技术专利。对新技术有着极高的热情,喜欢钻研和研究未知的领域,善于分享,输出技术文章全网阅读200W左右。善于目标驱动,抛弃过往的经验,回到问题的本质。
展开
-
阿里内部资料,10W字总结JAVA面试题-Mybatis篇
目录1、什么是MyBatis2、说说MyBatis的优点和缺点3、#{}和${}的区别是什么?4、当实体类中的属性名和表中的字段名不一样 ,怎么办 ?5、Mybatis是如何进行分页的?分页插件的原理是什么?6、Mybatis是如何将sql执行结果封装为目标对象并返回的?都有哪些映射形式?7、 如何执行批量插入?8、Xml映射文件中,除了常见的select|insert|updae|delete标签之外,还有哪些标签?9、MyBatis实现一对一有几种方式?具体怎么操作.原创 2021-11-11 08:30:00 · 168 阅读 · 11 评论 -
Myabtis源码分析终篇-Mybatis是如何访问数据的?
一、 核心组件Executor分析1、Executor介绍在上一篇文章中我们了解到,提到 Sqlsession 的功能都是基于 Executor 来实现的,Executor 是MyBaits 核心接口之一,定义了数据库操作最基本的方法,在其内部遵循 JDBC 规范完成对数据库的访问;Executor 类继承机构如下图所示:Executor: MyBaits核心接口之一,定义了数据库操作最基本的方法; CacheingExecutor:使用装饰器模式,对真正提供数据库查询的E...原创 2021-10-24 11:11:21 · 2826 阅读 · 14 评论 -
Myabtis源码分析六-代理对象Mapper的创建流程分析
目录一、Mybatis 的接口层1、SqlSession介绍2、SqlSessionFactory二、binding 模块分析1、bindling模块介绍2、bindling模块核心类3、binding 模块运行流程 //--------------------第二部,创建代理对象--------------------------- // 2.获取sqlSession SqlSession sqlSession = sqlSessionFactory....原创 2021-10-21 08:30:00 · 399 阅读 · 11 评论 -
Myabtis源码分析五-Mybatis配置加载完全图解,建造者模式的使用
一、Mybatis运行流程概述为了熟悉Mybatis的运行流程,我们先看一段代码public class MybatisDemo { private SqlSessionFactory sqlSessionFactory; @Before public void init() throws IOException { //--------------------第一步:加载配置--------------------------- // 1.读取mybatis配置文件原创 2021-10-19 08:30:00 · 386 阅读 · 21 评论 -
Myabtis源码分析四-缓存模块分析 ,装饰模式的使用
缓存模块分析4.1 需求分析MyBatis 缓存模块需满足如下需求: 1. MyBatis 缓存的实现是基于 Map 的,从缓存里面读写数据是缓存模块的核心基础功能;2. 除核心功能之外,有很多额外的附加功能,如:防止缓存击穿,添加缓存清空策略(fifo、 lru)、序列化功能、日志能力、定时清空能力等; 3. 附加功能可以以任意的组合附加到核心基础功能之上; 基于 Map 核心缓存能力,将阻塞、清空策略、序列化、日志等等能力以任意组合的方式优 雅的增强是 Mybatis 缓存模块实现最大的难题...原创 2021-10-17 10:40:19 · 915 阅读 · 21 评论 -
Mybatis源码分析三-数据源模块分析,工厂模式的使用
数据源是指数据库应用程序所使用的数据库或者数据库服务器,一般我们程序中可能会用到一个或者多个数据源,那么mybatis是怎么创建和维护这些数据源的呢?我们今天数据源模块重点讲下数据源的创建和数据库连接池的实现;一、数据源的创建数据源对象是比较复杂的对象,其创建过程相对比较复杂,对于 MyBatis 创建一个数据源, 具体来讲有如下难点:常见的数据源组件都实现了 javax.sql.DataSource 接口; MyBatis 不但要能集成第三方的数据源组件,自身也提供了数据源的实现; 一般.原创 2021-10-11 08:30:00 · 831 阅读 · 14 评论 -
Mybatis源码分析二-如何优雅的使用主体日志
日志模块是mybatis中很重要的一个模块,在我们查询问题和分析sql的时候,经常会将mybatis打印sql的功能打开,但是mybatis并没有给我们提供打印日志的能力,那它是如何使用我们系统支持的日志模块进行日志打印的呢?今天我们来一探究竟。一、日志模块需求分析如果我们作为产品经理或者架构师,提供给开发者一个jar包1. MyBatis 没有提供日志的实现类,需要接入第三方的日志组件,但第三方日志组件都有 各自的 Log 级别,且各不相同,而 MyBatis 统一提供了 trace、debu原创 2021-09-13 22:40:23 · 371 阅读 · 2 评论 -
Mybatis源码分析一-Mybatis基础架构以及设计模式
目录一、Mybatis源码导入1、mybatis源码下载地址2、源码包导入过程:二、Mybatis源码整体架构1、源码整体架构2、为什么mybatis设计要分层?3、外观模式(门面模式)三、设计模式六大理念mybatis的源码层次结构清晰,并且用到了多种设计模式,学习mybatis的源码对于我们提高模块设计能力有很大的帮助。今天开始,我们一起看下mybatis的源码骨架到底是什么样子的把。一、Mybatis源码导入1、mybatis源码下载地址MyBatis源原创 2021-06-29 09:38:04 · 555 阅读 · 33 评论 -
Mybatis开发要点-为什么不用二级缓存
一级缓存MyBatis 包含一个非常强大的查询缓存特性,使用缓存可以使应用更快地获取数据,避免频繁的数据库交互 ;一级缓存 (也叫应用缓存): 一级缓存默认会启用,想要关闭一级缓存可以在select标签上配置flushCache=“true”; 一级缓存存在于 SqlSession 的生命周期中,在同一个 SqlSession 中查询时, MyBatis 会把执行的方法和参数通过算法生成缓存的键值,将键值和查询结果存入一个 Map对象中。如果同一个 SqlSession 中执行的方法和参数完全原创 2021-03-18 20:07:37 · 1852 阅读 · 13 评论 -
mybatis开发要点-insert主键ID获取和多参数传递
目录一、插入数据主键ID获取1、Insert/update1.1、属性解释1.2、代码示例2、selectKey1.1、属性解释1.2、代码示例二、查询如何传入多个参数1、使用map传递参数;2、使用注解传递参数;3、使用Java Bean的方式传递参数;一、插入数据主键ID获取一般我们在做业务开发时,经常会遇到插入一条数据并使用到插入数据的ID情况。如果先插入在查询的话需要多一次sql查询,未免效率太低。因此mybatis也有提供插入数据并返回主键.原创 2021-03-10 14:09:22 · 3712 阅读 · 21 评论 -
Mybatis开发要点-resultType和resultMap的区别?
目录一、resultType1、resultType介绍2、映射规则3、自动映射注意事项4、代码演示1、t_user_test.sql准备2、实体类3、Mapper接口类4、Mapper xml5、配置文件6、启动测试类7、执行结果二、resultMap1、resultMap 介绍2、resultMap属性3、使用场景4、resultMap子元素属性5、代码演示1、mapper接口2、Mapper.xml3、启动测试4.原创 2021-03-01 16:31:15 · 2050 阅读 · 6 评论 -
为什么要使用ORM框架-Mybatis介绍
一、传统的JDBC连接方式首先我们先看下传统的jdbc取数据的步骤和流程public class JdbcDemo { static final String JDBC_DRIVER = "com.mysql.jdbc.Driver"; static final String DB_URL = "jdbc:mysql://ip:3306/test?useUnicode=true&characterEncoding=utf8&allowMultiQueries=t.原创 2021-02-24 15:06:43 · 493 阅读 · 2 评论