myBatis 体系结构源码解读

381 阅读3分钟
原文链接: mp.weixin.qq.com

myBatis 体系结构源码解读

数据库访问层的4种实现方案对比

jdbc 执行时序图

JdbcTemplate 执行时序图

hibernate 执行流程

myBatis 执行流程

总结:
myBatis 的定位

myBatis 专注于sql 本身,其为sql 映谢而非完整的ORM,需要自己编写sql 语句,这是其优点也是缺点。优点是:优化方便,可更好利用sql编写经验。缺点是当数据修改之后调整麻烦耗费时间长.

试用场景

适用于对性能要求较高,有大批量的查询修改,并且业务实现没有过多依懒数据关系模型,比如:电商、O2O等互联网项目。

互联网项目对DAO层的要求:
  • 对数据库的访问更新纯粹

  • 尽可能不要使用数据库做运算

  • SQL语句可以针对性的优化(减少查询字段、查条件排序例 、查询条件尽可能命中索引)

myBatis关键类图

myBatis 应用知识结构图:

Config 上下文配置

1、属性配置
<properties resource="app.properties">
    <property name="jdbc.driver" value="com.mysql.jdbc.Driver"/></properties>

三种设置方式:

  1. 构建sessionFactory 时传递 (优先级:高)

  2. 基于resource 属性加载 或 url 加载 (优先级:中)

  3. 基于 <propertite> 属性设置 (优先级:低)

2、全局参数配置
<settings>    <setting name="mapUnderscoreToCamelCase" value="true" /></settings>具体参考:http://www.mybatis.org/mybatis-3/zh/configuration.html#settings
3、环境配置
<environments default="development">
    <environment id="development">
        <transactionManager type="JDBC" />
        <dataSource type="POOLED" >
        <property name="driver" value="${jdbc.driver}" />
        <property name="url" value="${jdbc.url}" />
        <property name="username" value="${jdbc.username}" />
        <property name="password" value="${jdbc.password}" />
        </dataSource>
    </environment></environments>事物管理器:JDBC|MANAGED
4、数据源:
unpooled 普通连接,每次获取时都会重新建立一个新的连接.属性下如下:
  • driver :数据库驱动类

  • url: URL地址

  • username:用户名。

  • password :登录数据库的密码。

pooled: 连接池模式,所有连接从连接池当中获取,由连接池来来进行连接的建立与回收关于等操作,除支持unpooled属性外还支持属性如下:
  • poolMaximumActiveConnections : 最大活跃数,默认值:10

  • poolMaximumIdleConnections :最大空闲连接数

  • poolMaximumCheckoutTime :获取连接超时等待最大(checked out)时间,默认值:20000 毫秒

  • poolTimeToWait : 单次获取连接 最大等待时间 默认:20000 毫秒(即 20 秒)。

  • poolMaximumLocalBadConnectionTolerance 获取连接重试次数 默认:3

  • poolPingQuery 用于检测连接是否断开的测试 语句

  • poolPingEnabled 是否通过执行poolPingQuery 语句做检测,默认值:false。

  • poolPingConnectionsNotUsedFor 连接检测间隔时间 ,默认60000。

5 、typeAliases 别名配置
<typeAliases>
    <typeAlias type="com.tuling.dao"/>
    <typeAlias type="com.tuling.dao.UserInfo" alias="UserInfo"/></typeAliases>
6、mappers 文件引入
<mappers>
    <mapper resource="userInfo.xml" />
    <package name="com.tuling.dao"/></mappers>基于 mapper 引入指定资源文件: resource| url |class基于package 引入:扫描指定包路径当下的url

mapper 映谢文件配置

mapper 常用元素
  • select – 映射查询语

  • insert – 映射插入语句

  • update – 映射更新语句

  • sql – 可被其他语句引用的可重用语句块。

  • delete – 映射删除语句

  • resultMap 用来描述如何从数据库结果集中来加载对象。

  • cache – 给定命名空间的缓存配置。

  • cache-ref – 其他命名空间缓存配置的引用。

推荐阅读

【资源分享】Docker核心技术视频教程

docker安装和常用命令&操作

使用jenkins发布应用到tomcat详细过程

Java视频资料大全

【资源分享】Netty视频教程

Springmvc源码解析总结

Spring IOC体系图和AOP知识脑图

本公众号会不定期给大家发福利,包括学习资源等,敬请期待吧!

推送内容如果现在工作用不上,可以先转发朋友圈或收藏,用的时候方便找。

另外欢迎公众号回复 微信 ,添加微信好友,互相学习交流。