![](https://img-blog.csdnimg.cn/20190918140213434.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
MyBatis
文章平均质量分 92
mybits学习笔记等
tobebetter9527
这个作者很懒,什么都没留下…
展开
-
mybatis如何生成和执行动态sql
include> 标签由XMLIncludeTransformer.applyIncludes()处理,同时还会处理 标签下的标签和“${}"占位符。作用是引入由标签定义的sql片段,实际在XMLMapperBuilder.sqlElement()解析。在CachingExecutor.query()生成真正待执行的sql。进入getBoundSql(),原创 2023-08-12 14:53:54 · 617 阅读 · 0 评论 -
Spring Boot如何整合mybatisplus
MapperScannerConfigurer实现了BeanDefinitionRegistryPostProcessor。方法postProcessBeanDefinitionRegistry可以修改beanDefinition信息。这里用MybatisSqlSessionFactoryBean来创建sqlSessionFactory。主要为MapperScannerConfigurer定制beanDefinition。打断点到MybatisMapperRegistry。原创 2023-08-06 18:42:14 · 720 阅读 · 0 评论 -
Spring Boot如何整合mybatis
MapperScannerConfigurer实现了BeanDefinitionRegistryPostProcessor。方法postProcessBeanDefinitionRegistry可以修改beanDefinition信息。这里还是利用SqlSessionFactoryBean来创建sqlSessionFactory的bean对象。主要是为MapperScannerConfigurer定制bean信息。进入processBeanDefinitions方法。按照代码的执行顺序。原创 2023-08-06 15:57:27 · 403 阅读 · 0 评论 -
Mybatis插件
**// 执行拦截逻辑的方法 Object intercept(Invocation invocation) throws Throwable;// 决定是否触发 intercept()方法 default Object plugin(Object target) {} // 根据配置 初始化 Intercept 对象 default void setProperties(Properties properties) {// NOP } }定义一个实现类。/**原创 2023-07-30 21:56:57 · 934 阅读 · 0 评论 -
MyBatis基础模块-类型转换模块
执行sql,在PreparedStatement设置参数时,需要把java类型转换成jdbc类型,而从结果集中获取数据时,需要把jdbc类型转换为java类型。所有类型转换器都继承这个接口。原创 2023-07-26 22:51:14 · 142 阅读 · 0 评论 -
Mybatis基础模块-反射模块
/ 检测该ReflectorFactory是否缓存了Reflector对象 boolean isClassCacheEnabled();// 设置是否缓存Reflector对象 void setClassCacheEnabled(boolean classCacheEnabled);// 创建指定了Class的Reflector对象 Reflector findForClass(Class type);原创 2023-07-24 21:54:18 · 96 阅读 · 0 评论 -
Mybatis基础模块-日志管理
配置值包括:SLF4J , LOG4J(deprecated since 3.5.9) , LOG4J2 , JDK_LOGGING |,COMMONS_LOGGING , STDOUT_LOGGING , NO_LOGGING。Java的日志框架有很多,Log4j,Log4j2,Apache Commons Log,java.util.logging,slf4j等,接口不尽相同,Mybatis为了统一匹配这些框架,使用到了适配器模式。问题:mybatis是如何选择日志框架的。原创 2023-07-23 20:19:56 · 617 阅读 · 0 评论 -
Mybatis基础模块-缓存管理
mybatis的缓存模块在org.apache.ibatis.cache包下,包括如下接口和类。原创 2023-07-19 23:08:22 · 96 阅读 · 0 评论 -
Mybatis执行SQL过程
2)调用sqlSession的insert()、update()、delete()、selectOne ()方法。总结:创建会话的过程,我们获得了一个DefaultSqlSession,里面包含了一个Executor,Executor是SQL的实际执行对象。由于所有的Mapper都是JDK动态代理对象,所以任意的方法都是执行触发管理类MapperProxy的invoke()方法。Executor是第二步openSession的时候创建的,创建了执行器基本类型之后,依次执行了二级缓存装饰,和插件包装。原创 2023-07-16 22:06:34 · 360 阅读 · 0 评论 -
Mybatis解析mybatis-config.xml过程
在 mybatis-config.xml 配置文件中,我们可以通过 标签定义需要支持的全部数据库的 DatabaseId,在后续编写 Mapper 映射配置文件的时候,就可以为同一个业务场景定义不同的 SQL 语句(带有不同的 DataSourceId),来支持不同的数据库,这里就是靠 DatabaseId 来确定哪个 SQL 语句支持哪个数据库的。在 MyBatis 中编写的都是原生的 SQL 语句,而很多数据库产品都会有一些 SQL 方言,这些方言与标准 SQL 不兼容。原创 2023-07-16 12:57:34 · 734 阅读 · 0 评论 -
Mybatis架构简介
*它会根据运行时用户传入的实参,解析动态 SQL 中的标签,并形成 SQL 模板,然后处理 SQL 模板中的占位符,用运行时的实参填充占位符,得到数据库真正可执行的 SQL 语句。MyBatis 的反射工具箱是在 Java 反射的基础之上进行的一层封装,为上层使用方提供更加灵活、方便的 API 接口,同时缓存 Java 的原生反射相关的元数据,提升了反射代码执行的效率,优化了反射操作的性能。当框架原生能力不能满足某些场景的时候,就可以针对这些场景实现一些插件来满足需求,这样的框架才能有足够的生命力。原创 2023-07-15 15:54:55 · 2390 阅读 · 0 评论 -
2. JDBC连接池
文章目录1. JDBC连接池1.1 连接池概述1.2 自定义连接池1. JDBC连接池实际开发中,获得连接或释放连接是非常耗费系统资源的,我们采用连接池技术来解决性能问题。1.1 连接池概述概念用池来管理Connection,这样可以重复利用Connection。我们通过池来获取Connection,用完调用Connection的close(), 并不是真正的关闭,而是归还池。规范...原创 2019-11-13 22:48:27 · 266 阅读 · 0 评论 -
1. JDBC基础笔记
文章目录1.JDBC概述1.1 JDBC的概念1.2 为什么要使用JDBC2. 第一个jdbc程序2.1 数据库2.2 代码实现3. JDBC API详解3.1 java.sql.Drivermanager3.2 java.sql.Connection接口3.3 java.sql.Statement接口3.4 java.sql.ResultSet接口4. SQL注入问题解决:preparedSta...原创 2019-11-12 22:55:49 · 152 阅读 · 0 评论 -
mybatis是如何整合到spring的
SqlSessionFactory由SqlSessionFactoryBean创建,查看源码,发现SqlSessionFactoryBean实现了三个接口:FactoryBean,InitializingBean和ApplicationListener。mybatis-spring无缝整合mybatis和spring。只是整合mybatis和spring,不是springboot。接着看buildSqlSessionFactory方法。原创 2021-07-15 19:53:45 · 71 阅读 · 0 评论 -
手把手教你入门mybatis-入门看这一篇就够了
文章目录1 JDBC1.1 创建mysql数据库1.2 idea创建maven工程1.3 添加依赖1.4 需求1.5 JDBCTest1.6 缺点2 Mybatis2.1 特点2.2 整体架构1 JDBC1.1 创建mysql数据库执行目录DB的脚本mytatis_demo.sql。1.2 idea创建maven工程略1.3 添加依赖<dependency> &l...原创 2020-04-13 22:37:06 · 322 阅读 · 1 评论