随笔分类 - Mybatis
摘要:当调用 Mapper 接口的方法时,实际上调用的是代理对象的方法。由于代理对象是通过 JDK 动态代理生成的,因此方法调用会被转发给 InvocationHandler 的 invoke 方法。 1 MapperProxy.invoke() 的源码分析 MapperProxy 是 Invocatio
阅读全文
摘要:sqlSession.getMapper() 获取到的是 Mapper 接口的代理对象。这个代理对象是由 MyBatis 通过 JDK 动态代理 生成的,核心类是 MapperProxy。 1 sqlSession.getMapper() 的源码分析 sqlSession.getMapper() 是
阅读全文
摘要:knownMappers 是 MyBatis 中 MapperRegistry 的一个核心属性,用于存储所有注册的 Mapper 接口和对应的 MapperProxyFactory。它的初始化过程涉及 MyBatis 的配置解析和 Mapper 接口的注册。下面我们从源码级别详细分析 knownMa
阅读全文
摘要:1. 使用示例 // 加载全局配置⽂件 InputStream resourceAsStream = Resources.getResourceAsStream("myabtis-config.xml"); // 获得 sqlSession ⼯⼚对象 SqlSessionFactory sqlSes
阅读全文
摘要:MyBatis 的级联查询(Cascade Query)是指在一个查询中,通过关联多个表,将查询结果映射到包含嵌套对象的复杂数据结构中。MyBatis 提供了强大的级联查询支持,可以通过 resultMap 和 association、collection 等标签来实现。 下面我们详细讲解 MyBa
阅读全文
摘要:MyBatis 拦截器(Interceptor)是 MyBatis 提供的一个强大的扩展机制,允许开发者在 SQL 执行过程中插入自定义逻辑。通过拦截器,你可以在 SQL 执行前后、参数处理、结果集处理等阶段进行干预,从而实现诸如 SQL 日志记录、分页、权限控制、性能监控等功能。 没有插件的运行图
阅读全文
摘要:MyBatis 缓存是用来减少数据库查询次数,提高性能的一种机制。MyBatis 提供了两级缓存:一级缓存和二级缓存。 1. 一级缓存(Session级缓存) 作用范围:一级缓存是 MyBatis 默认开启的缓存,作用于一个 SqlSession 内部,查询结果会缓存到 SqlSession 的本地
阅读全文
摘要:符号 mybatis 转义字符 " " & & < < > > 还可以用 <![CDATA[ ]]> 表示 <!-- where age >= 18 --> select * from t_user where age >= 18; select * from t
阅读全文
摘要:java 实体 @Data public class CodeTree{ private Long id; private String pid; private String code; private String name; private List<CodeTree> children; }
阅读全文
摘要:MyBatis 提供了强大的动态 SQL 功能,可以根据条件动态生成 SQL 语句。常用的动态 SQL 标签包括: if:条件判断。 where:动态生成 WHERE 子句。 set:动态生成 SET 子句。 trim:自定义字符串截取。 choose、when、otherwise:多条件选择。 f
阅读全文
摘要:在 MyBatis 中,返回值处理是非常重要的一部分。Mapper 接口方法的返回值可以是基本类型、对象类型、集合类型(如 List、Set),甚至是 Map 类型。MyBatis 会根据方法的返回值类型和 XML 文件中的配置,自动将查询结果映射到返回值中。 下面我们详细讲解 MyBatis 中返
阅读全文
摘要:在 MyBatis 中,XML 文件用于定义 SQL 语句,而参数处理是 MyBatis 中非常重要的一部分。MyBatis 支持多种参数类型,包括单参数、多参数、对象类型、List 类型、Map 类型等。此外,MyBatis 还提供了 #{} 和 ${} 两种不同的参数占位符。下面详细说明这些内容
阅读全文
摘要:1. 全局配置文件 <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "https://mybatis.org/dtd/mybatis
阅读全文