![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
mybatis
文章平均质量分 53
你的酒窝里有酒
加油!!!
展开
-
【记】自定义切面导致的事务失效问题
自定义切面导致的事务失效问题1、问题引出在本地测试中,发现在一段被@Transaction注解标注的方法即使抛出了RunTimeException,数据库依然会有新的记录产生,也就是事务没有回滚,代码如下:多次检查事务相关都没有的配置都没有问题,然后在Spring的事务方法中,打上断点,看下具体的执行逻辑:后来发现,retVal = invocation.proceedWithInvocation(); 执行完后,没有进cache代码块,而是直接进入commitTransactionAfterR原创 2021-12-01 23:58:12 · 2449 阅读 · 0 评论 -
mybatis源码分析 ----- Mybatis为什么只写接口就能执行sql?
Mybatis为什么只写接口就能执行sql?至于这个问题,也算是一个常见的面试题,基本都会答动态代理,那么动态代理到底是如何做的呢?Configuration对象Mybatis会将配置文件和映射文件中的所有信息保存在这个对象中。其中有一个属性为mapperRegistry。这个属性保存接口和它对应的代理工厂 // 接口和代理类的注册中心 protected final MapperRegistry mapperRegistry = new MapperRegistry(this);Mappe原创 2020-07-10 21:44:14 · 558 阅读 · 0 评论 -
mybatis源码 ----- 解析Settings节点
解析Settings节点<settings> <setting name="cacheEnabled" value="true"/> <setting name="lazyLoadingEnabled" value="true"/> <setting name="autoMappingBehavior" value="PARTIAL"/></settings>settings节点中的内容较多,用于一些全局性的配置。m原创 2020-07-10 21:27:16 · 142 阅读 · 0 评论 -
mybatis源码分析 ---- Properties节点解析
解析Properties节点Properties节点用来引入外部文件,或者存储一些配置的值。在后面可以通过${name}的值直接使用<!--<properties resource=""></properties>--><!--<properties url=""></properties>--><properties resource="db.properties"> <property name="原创 2020-07-10 21:26:21 · 184 阅读 · 0 评论 -
Mybatis缓存模块源码分析
Mybatis缓存模块源码分析Mybatis中提供了缓存机制,而且有很多中不同策略的缓存,如LRU,FIFO,Schedule等等,那么Mybatis如何设计这些功能繁多的缓存呢?1、装饰者模式设计缓存1.1 提供统一的Cache接口:public interface Cache { String getId(); void putObject(Object key, Object value); Object getObject(Object key); Object re原创 2020-06-06 17:01:03 · 169 阅读 · 0 评论 -
Mybatis日志源码分析
Mybatis的日志分析在使用Mybatis的时候,可以看到控制台的日志输出。有很多的日志框架,那么Mybatis如何与这些日志框架进行整合呢?优先级又如何确定?日志信息如何优雅的输出?1、统一日志标准使用接口进行标准统一。public interface Log { boolean isDebugEnabled(); boolean isTraceEnabled(); void error(String s, Throwable e); void error(String原创 2020-06-05 23:33:27 · 164 阅读 · 0 评论 -
mybatis学习笔记(5) ---- 动态Sql
mybatis学习笔记(5) ---- 动态Sqlmybatis中的一大特性就是动态sql,在传统的JDBC编程中,根据条件编写,拼接SQL语句很容易出错,因此mybatis引入了动态sql。动态Sql元素和JSTL(jSP标准标签库)很像。动态sql的本质就是对sql进行灵活拼接和组装。if标签if标签最常用到,在查询和删除更新数据的时候作判断时结合test属性使用。主要用来判断参数是否...原创 2019-08-18 15:38:22 · 127 阅读 · 0 评论 -
mybatis学习笔记(4)---- 注解开发
mybatis学习笔记(4)---- 注解开发开发方式使用xml配置,把sql和映射写在xml文件中。使用注解配置,把sql和映射写在Mapper接口中。两者都各有优缺点,虽然注解使用起来相对方便一些,但开发中sql往往很长,这样的话,在注解中就写起来就显得很恶心。步骤在核心配置文件中使用class,映射到相应的mapper接口,因为此时已经不需要或者说没有xml文件了。 &...原创 2019-08-17 10:08:03 · 142 阅读 · 0 评论 -
mybatis学习笔记(3)---- 结果映射
mybatis学习笔记(3)---- 结果映射结果映射都是针对查询而言的,因为只有查询才会有返回结果,才需要封装为pojo。resultType当表中的字段与类中的属性名称完全相同时,可以采用resultType。如果字段与属性值不一致是无法完成封装的,不匹配的属性的值为默认值。解决方案:查询的时候为每个字段设置别名,别名要和类中的属性名称一致。使用resultMapresul...原创 2019-08-17 09:37:05 · 154 阅读 · 0 评论 -
mybatis学习笔记(2) ---- 环境搭建与入门程序
mybatis学习笔记(2) ---- 环境搭建与入门程序环境搭建步骤新建maven工程pom.xml文件中引入相关的依赖,主要包含mybatis,mysql,log4j,单元测试junit准备数据库及表配置xml文件主配置文件SqlMapConfige.xml 名字随意,但最好具有一定的标识性。<?xml version="1.0" encoding="UTF-8" ...原创 2019-08-16 01:00:37 · 131 阅读 · 0 评论 -
mybatis学习笔记(1)---- 原生JDBC编程中存在的问题
mybatis学习笔记(一)---- 原生JDBC编程中存在的问题JDBC编程的步骤注册数据库驱动创建连接者对象(Connection)定义sql语句创建执行者对象(用Preparestatement,解决sql注入问题)执行sql语句(DML,DQL)处理结果释放资源问题分析数据库连接问题:原生JDBC每次连接数据库的时候,都会创建一个连接者对象,用完之后,就会释放这个...原创 2019-08-15 19:35:39 · 169 阅读 · 0 评论 -
mybatis学习笔记(6) ------ 缓存
mybatis学习笔记(6) ------ 缓存缓存缓存就是暂存数据的地方,mybatis提供缓存机制,将数据存储在缓存中,下次查询的时候,若缓存中存在需要的数据,就无需去数据库中查找,可以提升性能。一级缓存在SqlSession中维护一个HashMap,用来存放查找出来的数据,因此一级缓存只在同一个SqlSession对象中有效,不同的SqlSession都有属于自己的HashMap,...原创 2019-08-24 10:09:02 · 194 阅读 · 0 评论