随笔分类 -  数据访问 / MyBatis

对一些使用过的知识的总结:主干加树枝的方式是一个有效的方式(至少对本人)。比如对于mybatis,其主要解决什么问题?主要解决JDBC在实际应用中的缺陷(重复链接,事务管理等)。其他辅助的功能比如缓存、延迟加载、插件等都是依附于主要功能的点缀。辅助功能研究功能之前也探究一下其是如何像树枝一样长在树干上的。
三(2)、MyBatis基础配置之映射文件Mapper.xml(均为单表查询示例)
摘要:一)动态if 需求:多条件组合查询。 二)动态foreach 需求:多值查询。 三)动态抽取 阅读全文
posted @ 2024-03-10 17:09 池塘里洗澡的鸭子 阅读(9) 评论(0) 推荐(0) 编辑
Mybatis整合Spring
摘要:需求:查询tb_resume中所有人的简历。 分析:不使用Spring,只使用mybatis实现这个功能并不困难,可参考一、Mybatis快速入门 - 池塘里洗澡的鸭子 - 博客园 (cnblogs.com)。 使用Spring,将main主函数中关于没有Mybatis的部分交给Spring管理应该 阅读全文
posted @ 2021-11-18 00:38 池塘里洗澡的鸭子 阅读(41) 评论(0) 推荐(0) 编辑
MyBatis功能点之二(1):MyBatis提供的拦截器平台
摘要:前面关于MyBatis功能点二plugin已经介绍了一些应用及其实现的底层代码(参考https://www.cnblogs.com/ilovebath/p/14510697.html),本文总结MyBatis提供的拦截器平台框架体系。 通过MyBatis功能点二:从责任链设计模式的角度理解插件实现技 阅读全文
posted @ 2021-11-10 12:34 池塘里洗澡的鸭子 阅读(61) 评论(0) 推荐(0) 编辑
MyBatis功能点二应用:第三方分页插件使用
摘要:pageHelper分⻚插件使用 在前面文章MyBatis功能点二:plugins插件使用 - 池塘里洗澡的鸭子 - 博客园 (cnblogs.com)中介绍了自定义插件的使用,本文介绍第三方插件pageHelper的使用,生成中比较常用。 一、加载PageHelper坐标 二、核心配置文件添加插件 阅读全文
posted @ 2021-04-04 13:22 池塘里洗澡的鸭子 阅读(69) 评论(0) 推荐(0) 编辑
MyBatis功能点一应用:二级缓存整合redis
摘要:Mybatis提供了默认的cache实现PerpetualCache,那为什么还要整合第三方的框架redis?因为Mybatis提供的cache实现为单机版,无法实现分布式存储同时为什么是二级缓存整合redis而不是一级缓存?因为一级缓存不跨session(单机版不需要)。 关于Redis,可查看相 阅读全文
posted @ 2021-04-03 15:44 池塘里洗澡的鸭子 阅读(120) 评论(0) 推荐(0) 编辑
MyBatis功能点之一(2):二级缓存cache
摘要:对于Mybatis缓存分作用域等维度区别一、二级缓存特点如下图: 对于缓存的作用域,之前文章五、MyBatis缓存初体验 - 池塘里洗澡的鸭子 - 博客园 (cnblogs.com)中已经验证,sqlsesion.close()仅对一级缓存有影响,而update等对一/二级缓存均有影响。那从sess 阅读全文
posted @ 2021-04-03 15:13 池塘里洗澡的鸭子 阅读(239) 评论(0) 推荐(0) 编辑
五(补充三)MyBatis封装JDBC具体实现
摘要:通过https://www.cnblogs.com/ilovebath/p/14531263.html,实现了类似Mybatis的基本框架,对于Mybatis的框架应该有了比较直观的了解。对于Mybatis的具体实现当然相对复杂,但是万变不离其宗:关于xml等解析的工具基本均包含在org.apach 阅读全文
posted @ 2021-04-03 11:38 池塘里洗澡的鸭子 阅读(526) 评论(0) 推荐(0) 编辑
五、仿MyBatis自定义的持久层如何添加增删查改功能
摘要:熟练使用mybatis后,有没有考虑类似的自定义一个持久层呢?实现参考代码https://gitee.com/duckinpool/homework_2021/tree/master/1.1_mybatis/code。持久层目录如下: 首先实现自定义持久层后,测试查询功能。如下: 关于持久层实现思路 阅读全文
posted @ 2021-03-14 02:56 池塘里洗澡的鸭子 阅读(8) 评论(0) 推荐(0) 编辑
五(补充一)、Mybatis中Mapper代理方式
摘要:从五、仿MyBatis自定义的持久层如何添加增删查改功能中可以知道Mybatis的实现核心就是Mapper代理执行sql获取业务数据。在测试案例中,使用如下代码即可得到相应业务数据。 通过Mybatis源码分析可以知道自定义实现完全体现的Mybatis的核心本质实现:mapper通过XMLConfi 阅读全文
posted @ 2021-03-10 17:49 池塘里洗澡的鸭子 阅读(115) 评论(0) 推荐(0) 编辑
五(补充二)MyBatis中执行器Executor框架
摘要:在五、仿MyBatis自定义的持久层如何添加增删查改功能中,自定义了一个Executor,实现具体执行sql语句。MyBatis实际就是提供了一套Executor框架——但是比自定义的Executor复杂,具体如下图: 其为Mybatis提供与数据库交互的功能,是一个典型的装饰器模式(参考一、装饰器 阅读全文
posted @ 2021-03-10 13:58 池塘里洗澡的鸭子 阅读(70) 评论(0) 推荐(0) 编辑
MyBatis功能点之二(2):从责任链设计模式的角度理解插件实现技术
摘要:MyBatis允许对其四大组件(Executor,StatementHandler,ParameterHandler, ResultSetHandler)进行增强处理。在创建四大组件对象的时候 1、每个对象创建处理都不是直接返回,而是使用拦截器链拦截处理(interceptorChain.plugi 阅读全文
posted @ 2021-03-09 15:36 池塘里洗澡的鸭子 阅读(113) 评论(0) 推荐(0) 编辑
MyBatis功能点之二:plugins插件使用
摘要:MyBatis自定义插件使用步骤(已有pojo及mapper的基础上) 一、自定义插件,实现Interceptor接口 红框中注解说明了对四大组件中的那个组件生效。 二、核心配置文件sqlMapConfig.xml文件增加插件相关内容 测试 测试结果: 阅读全文
posted @ 2021-03-09 10:46 池塘里洗澡的鸭子 阅读(208) 评论(0) 推荐(0) 编辑
MyBatis功能点之一(补充):MyBatis缓存Cache包
摘要:从MyBatis功能点之一(1):MyBatis缓存初体验中,可知二级缓存是跨session的,而一级缓存不是。为什么呢?通过Mybatis源码分析,一级缓存默认使用底层数据结构为PerpetualCache为数据查询提供效率。同时MyBatis不止实现了PerpetualCache,还有其他实现提 阅读全文
posted @ 2021-03-07 19:33 池塘里洗澡的鸭子 阅读(68) 评论(0) 推荐(0) 编辑
MyBatis功能点之一(1):MyBatis缓存初体验
摘要:在五(补充二)MyBatis中执行器Executor框架中展示了MyBatis中使用Executor默认为CacheExecutor,即默认提供对SQL执行结果提供缓存功能。 一级缓存初体验(session,默认打开) 同一查询执行两次以上:select * from student where i 阅读全文
posted @ 2021-03-07 18:01 池塘里洗澡的鸭子 阅读(47) 评论(0) 推荐(0) 编辑
四、MyBatis注解开发
摘要:MyBatis中提供注解有: @Insert:实现新增 @Update:实现更新 @Delete:实现删除 @Select:实现查询 @Result:实现结果集封装 @Results:可以与@Result 一起使用,封装多个结果集 @One:实现一对一结果集封装 @Many:实现一对多结果集封装 @ 阅读全文
posted @ 2021-03-06 17:04 池塘里洗澡的鸭子 阅读(54) 评论(0) 推荐(0) 编辑
二、Mybatis复杂映射开发
摘要:Mybatis针对SQL查询结果的复杂性,实现了一下三种复杂查询: 1)一对一查询 实现语句:select * from neworder o, user u where o.uid = u.id 实体Order: 接口: 配置: 关注点:此时mapper文件中resultMap已经不是实体类,而是 阅读全文
posted @ 2021-03-06 13:08 池塘里洗澡的鸭子 阅读(55) 评论(0) 推荐(0) 编辑
三(1)、MyBatis基础配置之核⼼配置⽂件SqlMapConfig.xml
摘要:Mybatis核心配置文件层级关系 1)environments标签 2)mapper标签 eg: 3)properties标签 数据源配置参数抽取至jdbc.properties 修改sqlMapConfig.xml中数据源相关配置 4)typeAliases标签 对于下图中红框部分值太长可以使用 阅读全文
posted @ 2021-03-06 12:13 池塘里洗澡的鸭子 阅读(51) 评论(0) 推荐(0) 编辑
一、Mybatis开发流程初体验
摘要:本文章中所有操作均在idea2019中实现。 快速入门步骤: 1)添加Mybatis包 2)创建实体类User(对应数据库操作提前已准备,参考随笔tip1:学习使用mybatis中使用mysql数据库的基本操作) 3)编写映射文件UserMapper.xml 4)编写核心文件配置sqlMapConf 阅读全文
posted @ 2021-03-05 19:33 池塘里洗澡的鸭子 阅读(60) 评论(0) 推荐(0) 编辑