上一篇博客(https://blog.csdn.net/cxh6863/article/details/103944108),我们讲了Mybatis的一些基础使用,
接下来我们再扩展下,了解了解连接池,延迟加载,缓存以及使用注解进行编写代码
采用传统的javax.sql.DataSource规范中 的连接池,Mybatis中有针对规范的实现
这种数据源的实现利用"池"的概念将 JDBC 连接对象组织起来,避免了创建新的连接实例时所必需的初始化和认证时间。 这是一种使得并发 Web 应用快速响应请求的流行处理方式。
采用传统的获取连接的方式,虽然也实现javax.sql.DataSource接口,但是并没有使用池的思想
这个数据源的实现只是每次被请求时打开和关闭连接
采用服务器体统的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();