BeatShadow's blog 
  • Home
  • Archives
  • Categories
  • Tags
  • About
  •     
git_clone提速

git_clone提速

git_clone提速 此文转载自:https://blog.csdn.net/havedoor/article/details/83350768 1. host重定向通过http://tool.chinaz.com/dns寻找github.com最高效地址,就是TTL最短的IP地址。 寻找github.com的TTL最短的IP地址 寻找github.global.ssl.fastly.net的TTL最短的IP地址 配置hosts vim /etc/hosts13.229.188.59 github.com 31.13.83.8 github.global.ssl.fastly.net 2. 通过码云中转在码云上新建一个项目,然后选“导入已有项目”,把github上要clone的工程放进去,一般需要十几分钟完成创建。 3. 通过代理方式这种方式需要有VPN代理,本人使用的是Lantern收费版的,感觉甚是不错。 查看自己VPN的proxy端口 点击Lantern的显示蓝灯,如下所示: 弹出浏览器页面,在地址栏可以看到代理端口,如下所示: 设置代理
 2019-12-08   编程技巧    编程技巧 
接口层

接口层

接口层
 2019-12-01   Mybatis源码分析  核心处理层    Mybatis源码分析 
ResultSetHandler

ResultSetHandler

ResultSetHandler
 2019-12-01   Mybatis源码分析  核心处理层    Mybatis源码分析 
StatementHandler

StatementHandler

StatementHandlerStatementHandler接口是Mybatis的核心接口之一,它完成了Mybatis中最核心的一部分工作,也是后面介绍的Executor接口实现的基础。 StatementHandler接口中的功能很多,例如创建Statement对象,为SQL语句绑定实参,执行select、update、insert、delete等多种类型的SQL语句,批量执行SQL语句,将结果集映射成结果对象。 StatementHandler接口的定义如下: /** * StatementHandler接口中的功能很多,例如创建Statement对象,为SQL语句绑定实参, * 执行select、update、insert、delete等多种类型的SQL语句,批量执行SQL语句,将结果集映射成结果对象。 * 语句处理器 * @author Clinton Begin */ public interface StatementHandler { /** * 从连接中获取一个Statement */ Statement prepare(Connec
 2019-12-01   Mybatis源码分析  核心处理层    Mybatis源码分析 
SqlNode&SqlSource

SqlNode&SqlSource

SqlNode&SqlSource根据Mybatis初始化过程可知,映射配置文件中定义的SQL节点会被解析成MapperStatement对象,其中的SQL语句会被解析成SqlSource对象,SQL语句中定义的动态SQL节点、文本节点等,则有SqlNode接口的相应实现表示,示例如下所示: <select id="selectByAuthorById" resultMap="authorResultMap"> select * from tb_author <if test="list != null and list.size() != 0"> where author_id in <foreach collection="list" item="item" index="index" open="(" separator="," close=&
 2019-12-01   Mybatis源码分析  核心处理层    Mybatis源码分析 
Mybatis初始化(二)——5.Mapper映射配置文件解析总结

Mybatis初始化(二)——5.Mapper映射配置文件解析总结

Mapper映射配置文件解析总结其实在完成以上解析之后,还有绑定Mapper接口和处理incomplete*结合两步,只不过绑定Mapper接口在binding模块章节就描述过,所以这里不再阐述,而incomplete*也很简单,所以也不再描述。 至此解析Mapper映射配置文件的工作也就完成了,流程如下所示:
 2019-11-30   Mybatis源码分析  核心处理层    Mybatis源码分析 
Mybatis初始化(二)——4.构建语句

Mybatis初始化(二)——4.构建语句

构建语句在进行解析Mapper映射配置文件的时候,还有一类比较重要的节点需要解析,也就是本节将要介绍的SQL节点。这些SQL节点主要用于定义SQL语句,它们不在有XMLMapperBuilder进行解析,而是有XMLStatementBuilder负责进行解析。 1. XMLStatementBuilder下面开始分析其解析SQL相关节点的过程,XMLStatementBuilder.parseStatementNode()方法是解析SQL节点的入口函数,其具体实现如下所示,我将会按照图中标记的步骤分析: 步骤1:首先判断Configuration.databaseId和select、update、insert、delete标签中配置的databaseId是否一致,如果一致就进行下面的步骤,如果不一致就直接跳出,说白了就是:Mapper映射配置文件都会被加载,但是Mapper映射配置文件的节点有可能不会被解析,这些节点是select、update、insert、delete还有上节说的sql,涉及到的代码如下所示: String id = context.getStrin
 2019-11-30   Mybatis源码分析  核心处理层    Mybatis源码分析 
缓存模块

缓存模块

缓存模块Mybatis作为一个强大的持久层框架,缓存是其必不可少的功能之一。Mybatis中的缓存是两层结构的,分为一级缓存、二级缓存,但在本质上是相同的,它们使用的都是Cache接口的实现。 1. 装饰者模式2. Cache接口及其实现Mybatis中缓存模块相应的代码位于cache包下,其中Cache接口是缓存模块中最核心的接口,它定义了所以缓存的基本行为,Cache接口的定义如下: public interface Cache { /** * 该缓存对象的ID * @return The identifier of this cache */ String getId(); /** * 向缓存中添加数据,一般情况下key是{@link CacheKey} ,value是查询结果 * @param key Can be any object but usually it is a {@link CacheKey} * @param value The result of a select. */ void putObje
 2019-11-29   Mybatis源码分析  基础支持层    Mybatis源码分析 
binding模块

binding模块

binding模块在iBatis(Mybatis的前身)中,在查询一个Blog对象的时候会调用SqlSession.queryForObject("selectBlog",blogId)方法。其中,SqlSession.queryForObject()方法会执行指定的SQL语句进行查询并返回一个结果对象,第一个参数“selectBlog”指明了具体执行的SQL语句的id,该SQL语句定义在相应的映射配置文件中。如果我们错将“selectBlog”写成了“selectBlog1”,在初始化过程中,Mybatis是无法提示该错误的,而在实际调用queryForObject("selectBlog1",blogId)方法时才会抛出异常,开发人员才能知道该错误。 Mybatis提供了binding模块用于解决上述问题,我们可以定义一个接口(Mapper接口),该示例中为TbBlogMapper接口,具体代码如下所指示。注意,这里的TbBlogMapper接口并不需要去继承任何其它接口,而且开发人员不需要提供该接口的实现。 /** * @author :
 2019-11-29   Mybatis源码分析  基础支持层    Mybatis源码分析 
Transaction

Transaction

Transaction1. Transcation在实践开发中,控制数据库事务是一件非常重要的工作,Mybatis使用Transaction接口对数据库事务进行了抽象,Transcation接口的定义如下: public interface Transaction { /** * 获取对应的数据库连接对象 * Retrieve inner database connection. * @return DataBase connection * @throws SQLException */ Connection getConnection() throws SQLException; /** * 提交事务 * Commit inner database connection. * @throws SQLException */ void commit() throws SQLException; /** * 回滚事务 * Rollback inner database connection.
 2019-11-29   Mybatis源码分析  基础支持层    Mybatis源码分析 
123

搜索

Contact me at :
© Blog 2018 powered by Hexo, made by gnehcgnaw.
 总访问量 次   总访客数 人