Mybatis
姜小衰
这个作者很懒,什么都没留下…
展开
-
[MyBatis源码分析系列] Discriminator
Discriminator简介鉴别器<discriminator javaType="int" column="draft"> <case value="1" resultType="DraftPost"/></discriminator>有时一个单独的数据库查询也许返回很多不同(但是希望有些关联)数据类型的结果集。鉴别器元素就是原创 2018-10-29 16:31:05 · 1534 阅读 · 0 评论 -
[MyBatis源码分析系列] DatabaseIdProvider
DatabaseIdProvider简介应该返回一个可以辨别数据库类型的id。此id可以用于稍后对于不数据库类型构建不同的查询。此机制可以支持多个vendors或版本。代码public interface DatabaseIdProvider { void setProperties(Properties p); String getDatabaseId(DataSource ...原创 2018-10-29 15:54:51 · 517 阅读 · 0 评论 -
[MyBatis源码分析系列] BoundSql
BoundSql简介从SqlSource得到的处理了动态内容的真正的SQL。这个SQL可以有?占位符和一系列参数。也可以是由动态语言(如loops,bind)创建的额外的参数。源码public class BoundSql { private final String sql; private final List<ParameterMapping> parameterM...转载 2018-10-29 15:41:27 · 770 阅读 · 0 评论 -
[MyBatis源码分析系列] SqlSession, DefaultSqlSession
SqlSession简介使用MyBatis工作时,主要的Java接口。通过此接口你可以执行命令,获取映射及管理事务。源码public interface SqlSession extends Closeable { <T> T selectOne(String statement); <T> T selectOne(String statement, Ob...原创 2018-11-01 17:14:19 · 980 阅读 · 0 评论 -
[MyBatis源码分析系列] Environment
Environment简介MyBatis 可以配置成适应多种环境,这种机制有助于将 SQL 映射应用于多种数据库之中, 现实情况下有多种理由需要这么做。例如,开发、测试和生产环境需要有不同的配置;或者共享相同 Schema 的多个生产数据库, 想使用相同的 SQL 映射。许多类似的用例。不过要记住:尽管可以配置多个环境,每个 SqlSessionFactory 实例只能选择其一。所以,如果...原创 2018-10-29 09:46:47 · 321 阅读 · 0 评论 -
[MyBatis源码分析系列] TransactionFactory
TransactionFactory简介创建Transaction实例。源码public interface TransactionFactory { /** 设置事务工厂自定义的属性 */ void setProperties(Properties props); /** 根据一个已建立的connection创建事务 */ Transaction newTransaction...原创 2018-10-29 09:21:17 · 1739 阅读 · 2 评论 -
[Mybatis源码分析系列] 01 解析mybatis-config.xml配制文件并返回SqlSessionFactory的类SqlSessionFactoryBuilder
前言公司一直在使用Jpa + Hibernate那一套东西,但是这套技术封装的太过后重。不利于开发人员掌握,而在优化sql方面也是蛋疼的很。所以在后台不是特别重要的项目中引入了MyBatis。当然光会使用,是满足不了本吊丝的胃口,所以走上了分析MyBatis源码的道路,并有了这一系列的文档,供志同道合的朋友参考和指证。解析配制文件并返回SqlSessionFacotory的类SqlSessio...原创 2018-10-15 13:53:16 · 229 阅读 · 0 评论 -
[XPath] XPath 节点
XPath 节点原文链接XPath 节点节点在XPath中,有七种类型的节点:元素、属性、文本、命名空间、处理指令、注解以及文档(根)节点。XML文档是被作为节点树来对待的。树的根被称为文档节点或者根节点。请看下面这个XML文档:<?xml version="1.0" encoding="UTF-8"?><bookstore> <book>...转载 2018-10-15 10:17:44 · 921 阅读 · 1 评论 -
[XPath]语法
XPath使用路径表达式来选取XML文档中的节点或节点集。节点是通过沿着路径(path)或者步(steps)来选取的XML实例文档&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&amp;gt;&amp;lt;bookstore&amp;gt;&amp;lt;book&转载 2018-10-15 11:08:13 · 118 阅读 · 0 评论 -
[Mybatis源码分析系列]]03 TypeAliasRegistry
TypeAliasRegistry负责注册,存储,获取MyBatis别名的类typeAliases(别名介绍)类型别名是为 Java 类型设置一个短的名字。它只和 XML 配置有关,存在的意义仅在于用来减少类完全限定名的冗余。例如:&lt;typeAliases&gt; &lt;typeAlias alias="Author" type="domain.blog.Author"原创 2018-10-15 17:25:11 · 166 阅读 · 0 评论 -
[MyBatis源码分析系列] Transaction
Transaction简介包装数据库的连接java.sql.Connection。处理连接的生命周期:创建,预编译,提交/回滚和关闭。源码public interface Transaction { Connection getConnection() throws SQLException; void commit() throws SQLException; void r...原创 2018-10-29 09:10:00 · 169 阅读 · 0 评论 -
[MyBatis源码分析系列] StatementType, ResultSetType, SqlCommandType, FetchType, ParameterMode等枚举类
StatementTypepublic enum StatementType{ STATEMENT, PREPARED, CALLABLE;}分别对应MySQL的普通语句,预处理语句,储存过程。SqlCommandTypepublic enum SqlCommandType { UNKNOWN, INSERT, UPDATE, DELETE, SELECT, FLUSH;}对...原创 2018-10-29 09:02:47 · 3911 阅读 · 1 评论 -
[MyBatis] 主要类的作用域和生命周期
主要类的作用域和生命周期SqlSessionFactoryBuilderSqlSessionFactorySqlSession映射器实例(Mapper Instances)理解以上类的不同作用域和生命周期类是至关重要的,因为错误的使用会导致非常严重的并发问题SqlSessionFactoryBuilder这个类可以被实例化、使用和丢弃,一旦创建了SqlSessionFactory...翻译 2018-10-10 11:05:57 · 232 阅读 · 0 评论 -
[MyBatis] Mapper.xml中的命名空间及命名解析
Mapper.xml相关使用命名空间(Namespaces)命名空间(Namespaces) 在之前版本的MyBatis中是可选的,这样容易引起混淆因此毫无益处。现在命名空间则是必须的,且易于简单地用更长的完完全限定名来隔离语句。命名空间使得你所见到的接口绑定成为可能,尽管你觉得这些东西未必用得上,你还是应该遵循这里的规定以防哪天你改变了主意。出于长远考虑,使用命名空间,并将它置于合适的J...原创 2018-10-10 10:14:25 · 12042 阅读 · 0 评论 -
[MyBatis源码分析系列] ResolverUtil
ResolverUtilResolverUtil用于查找在类路径可用并满足任意条件的类。最常见的两种情况是一个类继承或实现了另一个类,或者此类被指定的注解标记了。然而,通过使用Test类,可以满足任意条件的搜索。类加载器用于定位类路径下指定包下面的必要类,然后加载并检验他们。默认使用Thread.currentThread().getContextClassLoader(),但是在调用任何fi...原创 2018-10-17 13:45:40 · 1858 阅读 · 0 评论