
mybatis
文章平均质量分 86
乐只乐之
互联金融原生从业者,主营大后端;懂点前端、懂点网络、懂点AI;写点小诗、搞点摄影;远在远方的风比远方更远
展开
-
Mybatis—#{}与${}源码上的区别
Mybatis中存在#{}和${}两种占位符,二则最大的区别就是,使用#{}参数占位符时占位符内容会被替换成“?”,然后在SQL执行时通过PreparedStatement对象的setter方法为参数占位符赋值;${}参数占位符在SQL解析的时候就会直接替换成对应的值。原创 2023-02-19 21:15:33 · 160 阅读 · 0 评论 -
Mybatis从3.4.0版本到3.5.7版本的迭代历程
mybatis从3.4.0版本到3.5.7版本的迭代历程。原创 2023-02-10 00:13:11 · 2485 阅读 · 0 评论 -
Mybatis—解析SQL配置
Mybatis源代码中SqlSource描述XML文件或者Java注解配置的SQL信息,SqlNode描述动态SQL配置中的和等标签,LanguageDriver的职责就是负责将Mapper SQL配置进行解析,然后将SQL配置信息转换为SqlSource对象。从而可见LanguageDriver是解析SQL信息配置关键所在,即触发解析SQL信息配置的源头。原创 2022-11-20 17:05:28 · 1330 阅读 · 0 评论 -
Mybatis—SqlNode
SqlNode的主要职责就是描述Mapper文件中配置的SQL信息,在Mybatis源代码中随处都能看见其身影,可见SqlNode地位是相当高的。SqlNode接口只定义了一个apply方法,且该方法只有一个DynamicContext对象作为入参。DynamicContext对象中不仅封装了Mapper调用时传入的参数信息,还提供了MyBatis内置的_parameter和_databaseId参数。原创 2022-11-16 12:00:00 · 653 阅读 · 0 评论 -
Mybatis—LanguageDriver
LanguageDriver主要用于构造SqlSource和ParameterHandler,从LanguageDriver在Mybatis中调用链路来看,Configuration#newParameterHandler通过调用LanguageDriver#createParameterHandler完成构建ParameterHandler,通过调用LanguageDriver#createSqlSource来完成构建SqlSource。原创 2022-11-15 12:54:01 · 1546 阅读 · 1 评论 -
Mybatis—SqlSource与BoundSql
SqlSource用于描述通过@Select、@Insert、@Delete、@Update、@SelectProvider、@InsertProvider、@DeleteProvider和@UpdateProvider等注解配置的SQL信息,或者通过XML配置文件配置的SQL信息。SqlSource接口又定义了BoundSql getBoundSql(Object parameterObject)方法来获取对SQL信息进行封装的BoundSql实例。原创 2022-11-13 21:23:58 · 2014 阅读 · 0 评论 -
Mybatis—ParameterHandler
ParameterHandler的主要职责就是给参数占位符赋值,在赋值时又结合使用了TypeHandler来对目标参数进行Java和JDBC类型之间的转换。ParameterHandler相对于Mybatis其它的组件来讲是相比较简单的,其接口只定义了两个方法:1. getParameterObject,用于获取执行Mapper时传入的参数对象;2. setParameters,用于为PreparedStatement或者CallableStatement对象设置参数值。原创 2022-11-06 20:27:10 · 1331 阅读 · 0 评论 -
Mybatis—TypeHandler
TypeHandler使用模板方法设计模式,TypeHandler接口定义了相关设置参数和获取执行SQL语句完成后结果的一些方法,BaseTypeHandler抽象类实现了TypeHandler接口定义方法的默认实现,并重新定义了赋值和取值的方法,其实现逻辑交给具体实现类来实现。Mybatis提供了常规数据类型的TypeHandler,如果想要实现自定义TypeHandler,通过继承BaseTypeHandler抽象类即可。原创 2022-11-06 00:06:41 · 986 阅读 · 0 评论 -
Mybatis—StatementHandler
StatementHandler组件封装了对JDBC Statement的操作,其中包括设置Statement对象的fetchSize属性、设置查询超时时间、调用JDBC Statement与数据库交互。原创 2022-10-23 14:56:38 · 733 阅读 · 0 评论 -
Mybatis—MappedStatement
Mybatis通过MappedStatement来描述XML中和@Select、@Update等注解配置的SQL信息,Mybatis在解析XML配置构造Configuration的时候一并解析构造好了MappedStatement,以XMLConfigBuilder#parse为切入点,一起来分析下Mybatis是如何完成构造MappedStatement。原创 2022-10-05 21:32:10 · 1911 阅读 · 0 评论 -
Mybaits-Executor
Executor接口中定义了操作shujuk的增删改查方法,其中query和queryCursor方法用于执行查询类SQL,update方法用于执行插入、删除和修改类SQL。原创 2022-09-25 13:48:03 · 493 阅读 · 0 评论 -
Mybatis主配置—Configuration
Mybatis配置信息主要分为Mybatis项目级配置信息(Configuration)和执行SQL语句的Mapper配置文件,那么什么是Mybatis项目级配置信息Configuration呐?Configuration的主要职责就是用于描述Mybatis的配置信息,其内部定义了大量用于控制Mybatis运行时行为的属性。其它组件可以通过调用Configuration对象的形式来获取配置信息。原创 2022-09-19 22:01:58 · 4048 阅读 · 0 评论 -
Mybatis引子—Mybatis简单使用
在Mybatis启动解析配置文件的过程中,首先会根据当前的环境变量参数获取到其对应的数据库连接信息,然后依次解析配置文件中各个配置项,最后所有解析校验无误将所有解析得到的数据用于构造SqlSessionFactory,以便后续操作使用。原创 2022-09-19 21:46:01 · 466 阅读 · 0 评论 -
Mybatis工具—对象工厂(ObjectFactory)
ObjectFactory是一个定义了创建新对象的接口,即如其名称得上是一个对象工厂。Mybatis每次在创建Mapper映射结果对象实例的时候,就会使用ObjectFactory来完成对象实例。原创 2022-09-01 11:00:00 · 1123 阅读 · 0 评论 -
Mybatis工具—反射工具(MetaClass)
MetaClass同MetaObject一样,是Mybatis中的反射工具类。这个类主要的职责就是获取目标类相关信息。MetaClass与MetaObject二者主要区别在于:MetaObject用于获取和设置对象的属性值,MetaClass则用于获取类的相关信息。...原创 2022-08-28 22:24:13 · 510 阅读 · 0 评论 -
Mybatis工具—反射工具(MetaObject)
MetaObject是Mybatis中的反射工具类,其位于Mybatis源码包中的org.apache.ibatis.reflection。从MetaObject的命名和所处的位置不难看出,该类主要的工作就是获取和设置对象的属性值。原创 2022-08-17 08:00:00 · 1795 阅读 · 0 评论 -
Mybatis工具—数据库操作器(SqlRunner)
MyBatis提供了一个用于操作数据库的SqlRunner工具类,对JDBC做了很好的封装。结合工具类SQL,能够很方便地通过Java代码执行SQL语句并检索SQL执行结果。原创 2022-07-24 22:00:49 · 9287 阅读 · 0 评论 -
Mybatis工具—SQL执行器(ScriptRunner)
Mybatis为了统一读取SQL脚本文件中的SQL语句并执行,所以提供了ScriptRunner工具类(org.apache.ibatis.jdbc.ScriptRunner),使用该类可以读取和执行SQL脚本。原创 2022-07-11 07:30:00 · 6154 阅读 · 0 评论 -
Mybatis工具—SQL构造器(SQL类)
Mybatis为了提高构建SQL语句的统一性和便捷性,提供了一个构建SQL语句的工具类——SQL(org.apache.ibatis.jdbc.SQL),是的,你没看错它就叫SQL,使用这个工具类可以很方便地在Java代码中动态构建SQL语句。...原创 2022-07-04 08:00:00 · 3597 阅读 · 0 评论