![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Mybatis
天乔巴夏丶
这个作者很懒,什么都没留下…
展开
-
Invalid bound statement (not found):mybatis的xml文件加载问题解决
org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)出错分析Mapper接口存在的路径是com\atguigu\eduService\mapper\EduChapterMapper.java,且指定了一个根据courseId查询章节对象和小节对象封装的List。public interface EduChapterMapper extends BaseMapper<EduChapter>原创 2020-07-28 19:23:23 · 1398 阅读 · 0 评论 -
mybatis源码学习:插件定义+执行流程责任链+pagehelper
文章目录一、自定义插件流程二、测试插件三、源码分析1、inteceptor在Configuration中的注册2、基于责任链的设计模式3、基于动态代理的plugin4、拦截方法的intercept(invocation)四、插件开发插件pagehelper1、引入相关依赖2、全局配置3、测试分页五、插件总结一、自定义插件流程自定义插件,实现Interceptor接口。实现interc...原创 2020-04-25 19:44:31 · 275 阅读 · 0 评论 -
mybatis源码学习:基于动态代理的查询
User user1 = userDao1.findById(41);一、动态代理:执行代理对象的方法时拦截,进行方法增强。 /** * 作用:执行被代理对象的任何接口方法都会经过该方法 * @param proxy : 代理对象的引用 * @param method : 当前执行的方法 * @param args : 当前执行方法所需的参数 * @return : 和被代理对象有...原创 2020-04-25 14:55:12 · 899 阅读 · 2 评论 -
IDEA+Maven的mybatis逆向工程的建立(插件+java代码)
文章目录一、导入需要的依赖坐标二、建立相应的目录结构三、编写mbg的XML配置四、选择启动方式五、执行成功,工程生成六、主配置文件的简单配置六、测试基础的增删改查七、测试多条件一、导入需要的依赖坐标<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0"...原创 2020-04-25 11:54:12 · 456 阅读 · 0 评论 -
mybatis查漏补缺
文章目录一、mybatis处理参数源码二、占位符比较三、多表查询四、鉴别器五、trim标签六、动态sql 内置参数+bind七、缓存相关本篇文章算是对mybatis的查漏补缺,第一次过的时候没有注意到的知识点,在此做一些整理。一、mybatis处理参数源码单个参数:mybatis不会做特殊处理。#{参数名/任意名}:取出参数值。多个参数:mybatis会做特殊处理。多个参...原创 2020-04-24 10:50:12 · 292 阅读 · 0 评论 -
Mybatis整合第三方缓存库ehcache
一、引入相关日志包依赖 <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.7.30</version>...原创 2020-04-21 10:16:03 · 326 阅读 · 0 评论 -
Mybatis源码学习:一级缓存和二级缓存分析
文章目录零、一级缓存和二级缓存的流程一级缓存总结二级缓存总结一、缓存接口Cache及其实现类二、cache标签解析源码三、CacheKey缓存项的key四、二级缓存TransactionCache五、二级缓存测试六、一级缓存源码解析七、测试一级缓存零、一级缓存和二级缓存的流程以这里的查询语句为例。一级缓存总结以下两种情况会直接在一级缓存中查找数据主配置文件或映射文件没有配置二级...原创 2020-04-19 18:02:06 · 546 阅读 · 0 评论 -
Mybatis源码学习:getMapper获取代理对象
下面这句话意思非常明了,就是通过传入接口类型对象,获取接口代理对象。IUserDao userDao1 = sqlSession1.getMapper(IUserDao.class);具体的过程如下:一、首先,调用SqlSession的实现类DefaultSqlSession的getMapper方法,其实是在该方法内调用configuration的getMapper方法,将接口类对象以及当前...原创 2020-04-19 17:56:55 · 493 阅读 · 0 评论 -
Mybatis源码学习:创建sqlSession实现类
一、调用SqlSessionFactory对象的openSession方法,其实是调用private SqlSession openSessionFromDataSource(ExecutorType execType, TransactionIsolationLevel level, boolean autoCommit)方法,通过参数就可以知道,分别是执行器的类型,事务隔离级别和设置是否自动提...原创 2020-04-19 17:54:34 · 355 阅读 · 0 评论 -
Mybatis源码学习:根据配置文件创建sqlSessionFactory
一、首先读取类路径下的配置文件,获取其字节输入流。二、创建SqlSessionFactoryBuilder对象,调用内部的build方法。factory = new SqlSessionFactoryBuilder().build(in);三、根据字节输入流创建XMLConfigBuilder即解析器对象parser。XMLConfigBuilder parser = new XMLConfi...原创 2020-04-19 17:52:04 · 559 阅读 · 0 评论 -
Mybatis延迟加载的配置
前篇学习了多表查询,能够满足我们在复杂的场景下的查询,但不可否认的是,单表查询在数据库查询的性能上是要优于多表查询的。因此,如果单表查询可以满足我们的需求,我们就应该查询单表,当需要关联多表信息的时候,再进行关联查询,这就是一个延迟加载的策略。延迟加载的启动配置我们需要在主配置文件中<setting>中配置lazyLoadingEnabled和aggressiveLazyLoad...原创 2020-04-17 15:00:01 · 516 阅读 · 0 评论 -
Mybatis多表查询学习笔记
数据库多表查询设计一对一:在任意一方设计外键保存另一张表的主键,以维持两表关系。一对多:在多的一方设计外键保存一的一方的主键,以维持两表关系。多对多:建立第三方表,存储两张表主键的对应关系,将多对多拆分为两个一对多。数据库多表查询的几种方式参考:多表查询笛卡尔积查询:SELECT * FROM dept,emp WHERE emp.dept_id = dept.id;内连接...原创 2020-04-17 13:54:57 · 313 阅读 · 0 评论 -
Mybatis动态sql语句
where和if标签 <!--根据条件查询--> <select id="findUserByCondition" resultMap="userMap"> select * from user <where> <if test="userName != null"> ...原创 2020-04-15 21:12:07 · 170 阅读 · 0 评论 -
Mybatis:类型别名+占位符+结果映射
文章目录typeAliases类型别名结果映射占位符ognl表达式Mybatis事务获取新增用户id的返回值typeAliases类型别名别名的意思很好理解,就是起一个更加简短的名称,降低全限定类名的抒写冗余。Mybatis内置已经定义了许多的别名与映射的类型,比如int对应Integer等等,具体可以查看官方文档。当然,我们也可以自定义类型别名,告别冗余:比如,我们之前如果要写一条根据id...原创 2020-04-15 14:23:20 · 989 阅读 · 0 评论 -
Maven构建MyBatis项目入门+MybatisUtil工具类
文章目录一、基于XML配置1、导入Maven依赖2、主配置3、配置映射4、获取sqlSession操作数据库二、基于注解配置三、MybatisUtil.java工具类一、基于XML配置1、导入Maven依赖<!-- MyBatis依赖 --><dependency> <groupId>org.mybatis</groupId> ...原创 2020-04-09 12:50:56 · 550 阅读 · 2 评论