【Mybatis】Mybatis的连接池、延迟加载以及缓存

上一篇博客(https://blog.csdn.net/cxh6863/article/details/103944108),我们讲了Mybatis的一些基础使用,
接下来我们再扩展下,了解了解连接池,延迟加载,缓存以及使用注解进行编写代码

文章目录

  • 连接池
    • POOLED
    • UNPOOLED
    • JDDI
  • 延迟加载
    • 一对一的延迟加载
    • 一对多的延迟加载
  • 缓存
    • 一级缓存
    • 二级缓存 (存放的是数据,不是对象)
  • 注解

连接池

POOLED

采用传统的javax.sql.DataSource规范中 的连接池,Mybatis中有针对规范的实现
 这种数据源的实现利用"池"的概念将 JDBC 连接对象组织起来,避免了创建新的连接实例时所必需的初始化和认证时间。 这是一种使得并发 Web 应用快速响应请求的流行处理方式。

UNPOOLED

采用传统的获取连接的方式,虽然也实现javax.sql.DataSource接口,但是并没有使用池的思想
这个数据源的实现只是每次被请求时打开和关闭连接

JDDI

采用服务器体统的JNDI技术实现。来获取DataSource对象,不同服务器所能拿到的DataSource是不一样的。
注意:如果不是web或者maven的war工程,是不能使用的
这个数据源的实现是为了能在如 EJB 或应用服务器这类容器中使用,容器可以集中或在外部配置数据源,然后放置一个 JNDI 上下文的引用

延迟加载

一对多,多对多:通常采用延迟加载
多对一,一对一:通常采用立即加载

一对一的延迟加载

1association
一对一的关系映射:配置封装user的内容
select属性指定的内容:查询用户的唯一标识
column属性指定的内容:用户根据id查询时,所需要的参数的值


        
        
        
        
        

一对多的延迟加载

collection


        
        
        
        
        
        
        

缓存

缓存是存在于内存中的临时数据
目的:减少和数据库的交互次数,提高执行效率
使用情况:经常查询并且不经常改变;数据的正确与否对最终结果影响不大

一级缓存

他指的是Mybatis中SQLSession对象的缓存  是个map   sqlSession消失,缓存也消失
clear,关闭,更新语句都会清空缓存

二级缓存 (存放的是数据,不是对象)

他指的是Mybatis中SQLSessionFactory对象的缓冲。由同一个SqlSessionFactory对象创建的SqlSession共享其缓存
使用步骤

1.让Mybatis框架支持二级缓存(在SqlMapConfig.xml中配置)


		

12.让当前的映射文件支持二级缓存(在IUserDao.xml中配置)


	

13.让当前的操作支持二级缓存(在select标签中配置)
useCache=“true”


注解

查询:@Select
插入:@Insert
更新:@Update
删除:@Delete
结果字段映射:@Results @Result

示例:

@Select("select * from user")
@Results(value={
	@Result(id=true,column="id",property="userId"),
	@Result(column="username",property="userName"),
	@Result(column="address",property="userAddress"),
	@Result(column="sex",property="userSex"),
	@Result(column="birthday",property="userBirthday")
})
List findAll();

你可能感兴趣的:(MyBatis)