![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
MyBatis
ConstXiong
记录编程实践...
展开
-
Spring 中如何配置 MyBatis?
单纯使用 spring-context 和 spring-jdbc 集成 MyBatis,配置步骤:加载 spring-context、spring-jdbc、MyBatis、MyBatis-Spring 的 jar 包 spring 集成 MyBatis 的 xml 配置文件,配置 dataSource、sqlSessionFactory、Mapper 接口包扫描路径 Mapper 接口代理 bean 直接从 spring ioc 容器中获得使用即可最核心的就是 spring 的配置文件,如下原创 2020-10-28 09:08:33 · 1320 阅读 · 0 评论 -
MyBatis 插件的运行原理是什么?
MyBatis插件的运行是基于JDK 动态代理 + 拦截器链实现Interceptor 是拦截器,可以拦截 Executor, StatementHandle, ResultSetHandler, ParameterHandler 四个接口 InterceptorChain 是拦截器链,对象定义在 Configuration 类中 Invocation 是对方法、方法参数、执行对象和方法的执行的封装拦截器的解析是在XMLConfigBuilder对象的 parseConfiguration...原创 2020-10-27 19:17:28 · 888 阅读 · 0 评论 -
MyBatis 如何编写一个自定义插件?
先看如何自定义一个插件1、新建类实现 Interceptor 接口,并指定想要拦截的方法签名/** * MyBatis 插件 */@Intercepts({@Signature(type = Executor.class, method = "query", args = {MappedStatement.class, Object.class, RowBounds.class, ResultHandler.class})})public class ExamplePlugin imple原创 2020-10-26 21:02:17 · 2379 阅读 · 0 评论 -
MyBatis 如何进行 1对1 和 1对多 的关联查询?
在 Mapper xml 中的标签里使用可以完成 1对1 关联查询 在 Mapper xml 中的标签里使用可以完成 1对多 关联查询 //sqlcreate table user (id int primary key,name varchar(400));insert user info VALUES(1, 'ConstXiong1');create table info (user_id int primary key,name varchar(400));i..原创 2020-10-13 21:35:59 · 556 阅读 · 0 评论 -
什么是 MyBatis 的接口绑定?有哪些实现方式?
接口绑定就是把接口里的方法与对应执行的 SQL 进行绑定,以及 SQL 执行的结果与方法的返回值进行转换匹配。方式: 接口与对应 namespace 的 xml 进行绑定,接口方法名与 xml 中< select>、< delete>、< update>、< delete> 标签的 id 参数值进行绑定 接口方法与方法上的 @Select 或 @Update 或 @Delete 或 @Insert 的注解及注解里 SQL 进行绑定 .原创 2020-10-13 21:36:52 · 1623 阅读 · 0 评论 -
MyBatis 中注册 Mapper 有哪些方式?
方式一:在配置文件 mybatis-config.xml 中添加及其子标签,编写对应的 Mapper 接口与 XML< mappers> < mapper resource="constxiong/mapper/UserMapper.xml"/>< /mappers>方式二、硬编码方式在 configuration 对象中注册 Mapper 接口//配置Configuration configuration = new Configura.原创 2020-10-13 21:38:38 · 643 阅读 · 0 评论 -
MyBatis 的 SQL 执行日志如何开启?
在配置文件的<setting>标签上设置 logImpl 参数值(SLF4J | LOG4J | LOG4J2 | JDK_LOGGING | COMMONS_LOGGING | STDOUT_LOGGING | NO_LOGGING),指定 MyBatis 所用日志的具体实现,未指定时将自动查找。如 MyBatis实现的标准输出的配置< settings> < setting name="logImpl" value="STDOUT_LOGGIN...原创 2020-10-13 21:37:45 · 1610 阅读 · 0 评论 -
MyBatis 如何支持延迟加载?现实原理是什么?
支持延迟加载的配置:在配置文件的标签内设置参数 lazyLoadingEnabled:延迟加载的全局开关。当开启时,所有关联对象都会延迟加载。特定关联关系中可通过设置 fetchType 属性来覆盖该项的开关状态 aggressiveLazyLoading:开启时,任一方法的调用都会加载该对象的所有延迟加载属性。否则,每个延迟加载属性会按需加载 lazyLoadTriggerMethods:指定对象的哪些方法触发一次延迟加载 resultMap 中配置 <associat原创 2020-10-13 21:39:31 · 839 阅读 · 0 评论 -
MyBatis 中的本地缓存和二级缓存的作用是什么?怎么实现的?
本地缓存作用:SqlSession 级别的缓存,默认开启,在 MyBatis 配置文件中可以修改 MyBatis 文件中 < setting> 标签 localCacheScope 参数值改变缓存的作用域。statementId、boundSql.getSql() 执行 sql、查询参数、RowBounds 都相同,即认为是同一次查询,返回缓存值。实现原理:每个 SqlSession 对象包含一个 Executor 对象,Executor 对象中 localCache 属性使用原创 2020-10-13 21:40:24 · 2059 阅读 · 0 评论 -
MyBatis 的源码中的核心类有哪些?如何实现框架功能的?
Configuration: 配置类 Environment: 环境信息 SqlSessionFactoryBuilder: SqlSessionFactory 构造者类 SqlSessionFactory: SqlSession 工厂类 SqlSession: 执行 SQL 的一次会话 XMLConfigBuilder: MyBatis xml 配置文件构造者类 XMLMapperBuilder: Mapper xml 配置文件构造者类 ..原创 2020-10-13 21:41:17 · 462 阅读 · 0 评论