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类型解读。
  • 二、数据库连接池的理解
    • 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:
  • 三、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:目前我暂时不需要看。后续需要可以学习一下。
  • 四、结束:后续需要会同步保持更新。



以上是关于Myibaits的学习与理解,使用的主要内容,如果未能解决你的问题,请参考以下文章

如何快速定位到系统中某一功能的具体实现

Spring框架学习AOP技术理解与使用

第11章 特征学习与稀疏学习理解记录

三维点云深度学习与语义理解方法及关键技术

三维点云深度学习与语义理解方法及关键技术

理解学习与使用 Java 中的 Optional