标签:适用于 ati 根据 一级缓存 oid junit with url new
存在于内存中的临时数据。
经常查询并且不经常改变的数据,数据的正确与否对结果影响不大的。
经常改变的数据,数据的正确性对最终结果影响很大的(商品库存,银行汇率。。。)。
指的是mybatis的SqlSession对象的缓存。当我们执行查询之后,查询的结果会同时存入到SqlSession为我们提供的一块区域中,该区域的结构是一个HashMap,key为hashcode+statementId+sql语句。Value为查询出来的结果集映射成的java对象。 当我们再次拿到同样的数据时,mybatis会先去SqlSession中查询是否有,有就拿出来用。
当SqlSession对象消失时,mybatis的一级缓存也就消失了。
SqlSession执行insert、update、delete等操作commit后会清空该SQLSession缓存。(我的mybatis)
指的是Myabtis中SqlSessionFactory对象的缓存,由同一个SqlSessionFactory对象创建的SqlSession共享其缓存。
二级缓存使用步骤:
让mybatis框架支持二级缓存,主配置文件SqlMapConfig配置。
让当前的配置映射文件支持二级缓存,IUserDao.xml配置文件配置。
让当前的操作支持二级缓存,在select标签中配置,
package com.itheima.domain;
?
import java.io.Serializable;
import java.util.Date;
import java.util.List;
?
/**
* @Author: lijiahao
* @Description:
* @Data: Create in 21:37 2020/2/22
* @Modified By:
*/
public class User implements Serializable {
private Integer id;
private String username;
private Date birthday;
private String sex;
private String address;
?
public Integer getId() {
return id;
}
?
public void setId(Integer id) {
this.id = id;
}
?
public String getUsername() {
return username;
}
?
public void setUsername(String username) {
this.username = username;
}
?
public Date getBirthday() {
return birthday;
}
?
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
?
public String getSex() {
return sex;
}
?
public void setSex(String sex) {
this.sex = sex;
}
?
public String getAddress() {
return address;
}
?
public void setAddress(String address) {
this.address = address;
}
?
}
?
package com.itheima.dao;
?
import com.itheima.domain.User;
?
import java.util.List;
?
/**
* @Author: lijiahao
* @Description: 用户的持久层接口
* @Data: Create in 21:42 2020/2/22
* @Modified By:
*/
public interface IUserDao {
?
//查询所有用户,同时获取到用户下所有账户的信息
List<User> findAll();
?
//根据id查询用户信息
User findById(Integer userId);
?
//更新用户信息
void updateUser(User user);
?
}
?
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
?
<!--mybatis的主配置文件-->
<configuration>
?
<properties resource="jdbcConfig.properties"/>
?
<!--配置支持二级缓存-->
<settings>
<setting name="cacheEnabled" value="true"/>
</settings>
?
<!--配置别名 类名就是别名,不区分大小写-->
<typeAliases>
<package name="com.itheima.domain" ></package>
</typeAliases>
?
<!--配置环境-->
<environments default="mysql">
<!--配置mysql的环境-->
<environment id="mysql">
<!--配置事务的类型-->
<transactionManager type="JDBC"></transactionManager>
<!--配置数据源(连接池)-->
<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>
?
<!--指定映射配置文件的位置,映射配置文件指的是每个dao独立的配置文件-->
<mappers>
<package name="com.itheima.dao"></package>
</mappers>
</configuration>
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
?
<mapper namespace="com.itheima.dao.IUserDao">
<!--开启user支持二级缓存-->
<cache/>
?
<select id="findAll" resultType="user">
select * from user
</select>
?
<!--根据id查找一个用户的信息-->
<select id="findById" parameterType="INT" resultType="user" useCache="true">
select * from user where id = #{id}
</select>
?
<!--更新用户的信息-->
<select id="updateUser" parameterType="user">
update user set username = #{username},address = #{address} where id = #{id}
</select>
</mapper>
package com.itheima;
?
import com.itheima.dao.IUserDao;
import com.itheima.domain.User;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
?
import java.io.IOException;
import java.io.InputStream;
?
/**
* @Author: lijiahao
* @Description:
* @Data: Create in 22:56 2020/2/22
* @Modified By:
*/
public class SecondLevelCache {
?
private InputStream in;
private SqlSessionFactory sqlSessionFactory;
?
标签:适用于 ati 根据 一级缓存 oid junit with url new
原文地址:https://www.cnblogs.com/lijiahaoAA/p/12373566.html