Myibaits的学习与理解,使用
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Myibaits的学习与理解,使用相关的知识,希望对你有一定的参考价值。
Myibaits的学习、使用与理解
- 前言
- 最近看了MyIbatis的相关内容,因为项目中使用,需要自己有一定的理解。在网上找了不少教程,这是感觉对自己有用的。在这里整理一下,后续需要的话可以直接寻找。其他人如果需要学习,也可以参考一下~~
- 一、myibatis的项目+配置理解
- 1、关于MyBatis sqlSession的一点整理 - Realfighter的个人博客
https://my.oschina.net/realfighter/blog/363605- 总结:各个类的具体作用
- SqlSessionFactoryBuilder:build方法创建SqlSessionFactory实例。
- SqlSessionFactory:创建SqlSession实例的工厂。
- SqlSession:用于执行持久化操作的对象,类似于jdbc中的Connection。
- SqlSessionTemplate:MyBatis提供的持久层访问模板化的工具,线程安全,可通过构造参数或依赖注入SqlSessionFactory实例。
- SqlSessionUtils中getSession(方法)的源码分析
- 总结:各个类的具体作用
- 2、NyIbatia的一个实际项目+配置解读:
- 2.1 mybatis学习总结-mybatis初体验
http://ju.outofmemory.cn/entry/94632- 总结:
- 构建一个简单的MyIbatis的使用项目示例,以及对于项目的配置解读,可以看一看。
- 核心配置文件:mybatis-config.xml (配置:数据库地址、账户密码+mapper文件映射)
- 实体类:就是POJO模型(查询结果对象)
- mapper文件:即具体的SQL文件
- MyIbatis配置使用的逻辑:
- 从mybatis-config.xml中读取配置
- →用SqlSessionFactoryBuilder构建一个SqlSessionFactory对象
- →从SqlSessionFactory中获取sqlSession
- →调用sqlSession对应的方法
- →方法入参为sqlD+查询条件入参
- 总结:
- 2.2 mybatis学习总结-核心配置文件mybatis-config.xml(一) - 为程序员服务
http://ju.outofmemory.cn/entry/94633- 总结:
- 这篇文章主要是深入解读配置文件:
- 配置信息的优先级:
- 方法直接传递参数 > 通过resource、url引用的资源 > properties元素体内定义
- mybatis-config.xml文件里的属性
- setting设置:mybatis的主要设置解读,关系到mybatis运行时的行为方式。
- typeAliases的使用和理解。
- typeHandlers的理解:暂时没遇见过,不知道什么作用。
- 总结:
- 2.3 mybatis学习总结-核心配置文件mybatis-config.xml(二)
http://ju.outofmemory.cn/entry/94634- 总结:同上一篇
- environments元素:配置多个数据库(不同环境的数据源)
- transactionManager:配置解读,其type类型取值
- dataSource:属性,其type类型解读。
- 总结:同上一篇
- 2.1 mybatis学习总结-mybatis初体验
- 1、关于MyBatis sqlSession的一点整理 - Realfighter的个人博客
- 二、数据库连接池的理解
- 1、浅析数据库连接池(一) - CSDN博客
http://blog.csdn.net/wwh578867817/article/details/46451193 - 2、浅析数据库连接池(二) - CSDN博客
http://blog.csdn.net/wwh578867817/article/details/46459977 - 总结:
- 1、数据库的连接过程:
- 应用数据层向DataSource请求数据库连接
- →DataSource使用数据库Driver打开数据库连接
- →创建数据库连接,数据库内部可能创建线程,打开TCP socket
- →应用读/写数据库
- →如果该连接不再需要就关闭连接
- →关闭socket
- 2、连接占用资源,所以使用连接池
- 频繁创建(多个)线程和销毁线程的资源消耗是非常大(每个线程会分配栈空间,每个连接都会进行tcp3次握手和断开时的4次挥手,分配一些缓存之类的空间),所以使用连接池,避免了频繁的创建线程和销毁线程。
- 3、连接池的操作:
- 建立数据库连接池对象(服务器启动)
- →按照事先指定的参数创建初始数量的数据库连接(即:空闲连接数)
- →对于一个数据库访问请求,直接从连接池中得到一个连接。如果数据库连接池对象中没有空闲的连接,且连接数没有达到最大(即:最大活跃连接数),创建一个新的数据库连接
- →存取数据库
- →关闭数据库,释放所有数据库连接(此时的关闭数据库连接,并非真正关闭,而是将其放入空闲队列中。如实际空闲连接数大于初始空闲连接数则释放连接)
- →释放数据库连接池对象(服务器停止、维护期间,释放数据库连接池对象,并释放所有连接)。
- 4、连接池的使用:
- 连接池的速度要快于普通连接很多,很多不是指的二者差多少毫秒,而是倍数级的差别
- 5、连接池实现代码:
可以参考文章的第二篇- 从线程池对象中获取连接,用完之后归还连接。
- 6、最优连接池配置选择:参考概念理解。
- 最小连接数:连接池一直保持的数据库连接。
- 最大连接数:连接池的连接上限,
- 最大空闲时间MaxIdleTime:
- 1、数据库的连接过程:
- 1、浅析数据库连接池(一) - CSDN博客
- 三、MyIbatis的缓存理解:
- 1、MyBatis 缓存 - ZimZz - 博客园
http://www.cnblogs.com/zemliu/p/3239014.html- 总结:
- 一级缓存和二级缓存的区别:看原文
- 项目如何配置开启二级缓存:看原文即可
- 开启前后:console控制台输出的日志的不同(如何知道其成功开启)。
- 总结:
- 2、mybatis的缓存机制(一级缓存二级缓存和刷新缓存)和mybatis整合ehcache - CSDN博客
http://blog.csdn.net/u012373815/article/details/47069223- 总结:
- 2.1 一级缓存是SqlSession级别的缓存。
- 在操作数据库时需要构造 sqlSession对象,在对象中有一个(内存区域)数据结构(HashMap)用于存储缓存数据。
- 不同的sqlSession之间的缓存数据区域(HashMap)是互相不影响的。
- 一级缓存的作用域是同一个SqlSession,在同一个sqlSession中两次执行相同的sql语句,第一次执行完毕会将数据库中查询的数据写到缓存(内存),第二次会从缓存中获取数据将不再从数据库查询,从而提高查询效率。
- 当一个sqlSession结束后该sqlSession中的一级缓存也就不存在了。Mybatis默认开启一级缓存。
- 2.2 二级缓存是mapper级别的缓存。
- 多个SqlSession去操作同一个Mapper的sql语句,多个SqlSession去操作数据库得到数据会存在二级缓存区域,多个SqlSession可以共用二级缓存,二级缓存是跨SqlSession的。
- 2.3 一级缓存与二级缓存的原理+测试:参考原文即可
- 2.4 开启二级缓存的实战:
- 如何使用useCache配置禁用二级缓存
- 如何配置mybatis刷新缓存(就是清空缓存)
- 如何配置Mybatis Cache参数
- 2.5 mybatis整合ehcache:目前我暂时不需要看。后续需要可以学习一下。
- 2.1 一级缓存是SqlSession级别的缓存。
- 总结:
- 1、MyBatis 缓存 - ZimZz - 博客园
- 四、结束:后续需要会同步保持更新。
以上是关于Myibaits的学习与理解,使用的主要内容,如果未能解决你的问题,请参考以下文章