![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Mybatis
文章平均质量分 78
CoderLi_
微信搜一搜:CoderLi
展开
-
Mybatis SqlSource
ublic interface SqlSource { BoundSql getBoundSql(Object parameterObject);}BoundSql 包含了解析之后的 SQL 语句(sql 字段)、每个“#{}”占位符的属性信息(parameterMappings 字段 ,List 类型)、实参信息(parameterObject 字段)以及 DynamicContext 中记录的 KV 信息(additionalParameters 集合,Map<String, O.原创 2022-05-14 08:15:00 · 572 阅读 · 0 评论 -
Mybatis 解释配置文件
我们知道 Mybatis 的入口是 SqlSessionFactoryBuilderpublic SqlSessionFactory build(InputStream inputStream, String environment, Properties properties) { try { XMLConfigBuilder parser = new XMLConfigBuilder(inputStream, environment, properties); return bu.原创 2022-05-12 22:53:47 · 300 阅读 · 0 评论 -
Mybatis 解释 mapper 文件
我们知道 Mybatis 在解释配置文件的时候使用的是 XMLConfigBuilder、在解释 mapper 标签的时候、为每个 Mapper.xml 文件创建一个 XMLMapperBuilder 实例解释 mapper 文件。public void parse() { if (!configuration.isResourceLoaded(resource)) { configurationElement(parser.evalNode("/mapper")); configu.原创 2022-05-13 10:00:00 · 767 阅读 · 0 评论 -
Mybatis SqlNode
我们在以前的文章中曾经介绍过 OGNL 强大的表达式引擎我们知道在 BaseExecutor#query 中@Overridepublic <E> List<E> query(MappedStatement ms, Object parameter, RowBounds rowBounds, ResultHandler resultHandler) throws SQLException { BoundSql boundSql = ms.getBoundSql(param.原创 2022-05-13 08:30:00 · 336 阅读 · 0 评论 -
Mybatis 缓存与装饰模式
装饰模式是一种结构型设计模式、允许你通过将对象放入包含行为的特殊封装对象中来为原来帝乡绑定新的行为。俗称套娃。装饰模式中、封装器实现了与其封装对象相同的接口、封装器的成员变量可以是该接口的任意实现。Mybatis 中的装饰模式Cache 接口是 Mybatis 缓存中顶层的抽象接口、定义了 Mybatis 缓存最核心最基础的行为public interface Cache { String getId(); void putObject(Object key, Object va.原创 2022-05-12 22:51:20 · 177 阅读 · 0 评论 -
Mapper 文件与接口的映射
我们在使用 Mybatis 的时候、只需要定义一个 Mapper xml 文件和一个对应的 Mapper 接口、并需要实现该接口、即可在程序中使用该 Mapper 接口、调用里面的方法对其进行查询(当然 xml 中的 namespace 要关联接口)。那么这个功能是怎么实现的呢 ?MapperRegistry我们知道在使用 Mybatis 的时候都会去创建一个 Configuration 类、而在这个类中、则会创建一个 MapperRegistrypublic class MapperRegist.原创 2022-05-12 22:50:28 · 1269 阅读 · 0 评论 -
Mybatis 与 代理模式
我们经常在工作中使用到 AOP 、在设计模式中、它属于代理模式。代理模式属于一种结构性设计模式、让你能够提供对象的替代品或占位符。代理控制着对于远对象的访问、并允许在将请求提交给对象前后进行一些处理。JDK 中的动态代理核心类就是 InvocationHandlerMybatis 中代理模式也是在日志模块中、这些代理类从其名字中可以猜测出其用来打印日志public final class ConnectionLogger extends BaseJdbcLogger implemen.原创 2022-05-12 22:49:33 · 659 阅读 · 0 评论 -
Mybatis 日志与设计模式
原有系统已经从各个供应商中获取到航班数据、格式为 XML、并且将该数据传输给一个智能分析系统中做统计分析。最近业务改动、对接了一个新的智能分析系统、但是对方的输入格式为 Json、这个时候我们该怎么办?我们可以创建一个适配器、该适配器实现原来的智能分析接口、在适配器里面做 XML 到 JSON 的转换、然后再真正的调用新的智能分析系统。对于应用系统而言、甚至可以不改动代码。Mybatis 的适配器模式现存主流的日志框架有 Logback、Log4j、Log4j2 等、但是大部分都是先使用 SLF..原创 2022-05-12 22:48:56 · 208 阅读 · 0 评论 -
Mybatis 整体架构
Mybatis 分为三层架构基础支撑层核心处理层接口层基础支撑层类型转换模块微信公众号:CoderLiJDBC类型与 Java 类型之间的相互转换、不管是入参还是结果集的转换、都是这个模块职责。还有一个功能就是类型别名、这个有点类似 Spring 的别名、为了引用的时候名称更加简短日志模块Mybatis 的日志模块通过适配器模式可以集成主流的各种日志框架、Log4J、Logback等反射工具模块Mybatis 的反射工具、如 MetaObject 提供了一些更加灵活的 API.原创 2022-04-02 07:52:53 · 889 阅读 · 0 评论 -
Mybatis 类型处理与别名
TypeHandler微信公众号:CoderLi数据库类型和 Java 类型之间的映射、在 Mybatis 中使用 TypeHandler 做这个转换public interface TypeHandler<T> { void setParameter(PreparedStatement ps, int i, T parameter, JdbcType jdbcType) throws SQLException; T getResult(ResultSet rs, Stri.原创 2022-04-02 07:51:46 · 368 阅读 · 0 评论 -
Java 持久层概述
JDBCJava Database Connectivity 是一系列接口规范。Java 程序都是通过 JDBC 连接数据库的、然后通过其执行SQL、对数据库进行操作。DBC 只是 Sun 公司定义的接口规范、具体实现是交由各个数据库厂商去实现的、因为每个数据库都有其特殊性、这些是 Java 规范没办法确定的import java.sql.*;import java.util.logging.Level;import java.util.logging.Logger;public clas.原创 2022-03-29 07:34:06 · 2242 阅读 · 0 评论