`

关于缓存的测试

 
阅读更多

关于缓存的测试

<?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.hous.day8.userMapper">
	<!-- 开启二级缓存 -->
	<cache></cache>
	
	<select id="getUser" parameterType="int" resultType="com.hous.day8.User">
		select * from users where id=#{id}
	</select>
	
	<update id="updateUser" parameterType="com.hous.day8.User">
		update users set name=#{name},age=#{age} where id=#{id}
	</update>
</mapper>

 

<?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">
<configuration>
	
	<environments default="development">
		<environment id="development">
			<transactionManager type="JDBC"/>
			<dataSource type="POOLED">
				<property name="driver" value="com.mysql.jdbc.Driver"/>
				<property name="url" value="jdbc:mysql://localhost:3306/mybatis"/>
				<property name="username" value="root" />
				<property name="password" value="root" />
			</dataSource>
		</environment>
	</environments>
	
	<mappers>
		<mapper resource="com/hous/day8/userMapper.xml" />
	</mappers>
</configuration>

 

package com.hous.day8;
import java.io.InputStream;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Before;
import org.junit.Test;

/**
 * 测试缓存
 * 1.一级缓存:session级缓存
 * 1)使用session.clearCache()清除缓存
 * 2)执行cud操作清除缓存
 * 3)使用不同的session
 * 
 * 2.二级缓存:映射文件级缓存
 * 
 */
public class MyTest {
	
	private SqlSessionFactory factory = null;
	
	@Before
	public void setUp() throws Exception {
		String resource = "day8/config.xml";
		InputStream config = MyTest.class.getClassLoader().getResourceAsStream(resource);
		factory = new SqlSessionFactoryBuilder().build(config);
	}

	@Test
	public void testCacheOne() {
		SqlSession session = factory.openSession();
		String statement = "com.hous.day8.userMapper.getUser";
		User user = session.selectOne(statement, 3);
		System.out.println("查询结果:" + user);
		System.out.println("====================");
		
		//第一种情况:使用session.clearCache()清除缓存
//		session.clearCache();
//		user = session.selectOne(statement, 3);
//		System.out.println("查询结果:" + user);
		
		//第二种情况:执行cud操作清除缓存
//		String updateStatement = "com.hous.day8.userMapper.updateUser";
//		session.update(updateStatement, new User(12,"genyang", new Random().nextInt(200)));
//		session.commit();
//		user = session.selectOne(statement, 3);
//		System.out.println("查询结果:" + user);
		
		//第三种情况:关闭session.close()
		session.close();
		user = session.selectOne(statement, 3);
		System.out.println("查询结果:" + user);
		
	}
	
	@Test
	public void testCacheTwo() {
		SqlSession session1 = factory.openSession();
		SqlSession session2 = factory.openSession();
		String statement = "com.hous.day8.userMapper.getUser";
		User user = session1.selectOne(statement, 3);
		session1.commit();
		System.out.println("查询结果:" + user);
		System.out.println("====================");
		
		user = session2.selectOne(statement, 3);
		session2.commit();
		System.out.println("查询结果:" + user);
	}

}

 

package com.hous.day8;

import java.io.Serializable;

public class User implements Serializable{
	private static final long serialVersionUID = 1L;
	private int id;
	private String name;
	private int age;

	public User() {
		super();
	}

	public User(int id, String name, int age) {
		super();
		this.id = id;
		this.name = name;
		this.age = age;
	}

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}

	@Override
	public String toString() {
		return "User [id=" + id + ", name=" + name + ", age=" + age + "]";
	}

}

 

分享到:
评论

相关推荐

    Mybatis缓存测试示例

    在这个“Mybatis缓存测试示例”中,我们将深入探讨Mybatis的缓存机制,以及如何在实际项目中进行测试。 Mybatis 的缓存分为一级缓存和二级缓存。一级缓存是SqlSession级别的,同一SqlSession内的多次相同查询会复用...

    图片加载缓存测试

    本项目“图片加载缓存测试”旨在探讨和实现一个高效、灵活的图片加载和缓存机制,以优化用户体验并减少服务器负载。以下是相关的知识点详解: 1. **图片加载**:图片加载通常涉及网络请求,如使用`NSURLConnection`...

    分布式缓存测试框架 RadarGun.zip

    分布式缓存测试框架RadarGun是一个专为数据网格和分布式缓存系统设计的性能基准测试工具,主要用于评估和比较这些系统的性能和可扩展性。在Java开发领域,它扮演着重要角色,帮助开发者和运维人员确保所选的分布式...

    Loadrunner负载测试 浏览器缓存设置

    在这个特定的场景下,我们关注的是“Loadrunner负载测试中的浏览器缓存设置”。了解如何在LoadRunner中正确设置浏览器缓存对于获取真实用户行为的数据至关重要,因为这直接影响到测试结果的准确性。 浏览器缓存是...

    页面缓存的小测试

    在这个小测试中,我们将探讨页面缓存的基本概念,以及如何利用开源工具实现缓存功能。本文以OSCache为例,一个广泛使用的Java缓存框架。 首先,理解页面缓存的原理至关重要。页面缓存的工作方式是在用户首次请求某...

    redis缓存分享,包含redis和redis测试的项目test

    本分享主要涵盖了Redis作为缓存的使用及其测试项目。 首先,让我们深入了解一下Redis的核心特性。Redis支持多种数据类型,如字符串(Strings)、哈希(Hashes)、列表(Lists)、集合(Sets)和有序集合(Sorted ...

    C#高速缓存测试源码

    三种高速缓存测试代码,c#源码

    Net内建缓存测试代码

    标题与描述均提到了“Net内建缓存测试代码”,这指向了.NET框架中的缓存机制测试。在.NET中,缓存是提升应用程序性能的重要手段之一,它通过存储经常访问的数据来减少对数据库或其他资源的请求,从而提高响应速度。...

    opengl缓存测试代码

    使用vs2017的opengl缓存测试

    先锋缓存类-测试可用

    当我们谈论“先锋缓存类-测试可用”时,这通常是指一个特定的ASP(Active Server Pages)开发的缓存管理类库,它可以帮助优化asp页面的加载和处理速度。 在ASP编程中,缓存机制允许我们将频繁访问的数据存储在内存...

    pwa的测试用例demo,包含serviceWorker创建,监听,缓存,请求拦截缓存

    本测试用例DEMO主要关注Service Worker的运用,这是PWA实现离线缓存、后台更新以及网络请求优化的关键组件。 一、Service Worker简介 Service Worker是运行在浏览器后台的脚本,它独立于网页,可以处理网络请求、...

    买电脑硬盘用到的硬盘缓存测试工具

    买硬盘,有些JS在缓存上作文章,看你是个菜鸟,明明是个3M的缓存(打个比方,可能没有3M缓存的硬盘),他偏要跟你说是8M的,离谱点的还说是16M的,而硬盘缓存这东西在外部的说明文件中是没有说出来的,只有它的型号能...

    u_cache_test.rar_The Test

    标题中的“u_cache_test.rar_The Test”暗示我们这是一个关于缓存测试的项目,可能包含一个用于测试缓存性能的程序。描述指出这个程序会反复地进行插入和检索操作,这是缓存系统中最常见的功能,旨在优化数据访问...

    一文看懂缓存测试--Redis 原理+(缓存穿透,击穿,雪崩)等异常预防和模拟测试.zip

    本篇文章将深入探讨Redis的基本原理,以及如何预防和模拟测试缓存中的异常情况,如缓存穿透、击穿和雪崩。 首先,我们来理解Redis的基本原理。Redis基于内存存储,数据读取速度远超传统的磁盘存储。它支持多种数据...

    环形缓存存储器功能测试

    6. **测试与调试**:文件名为`testbuf`,暗示了存在一个测试程序来验证环形缓存的功能。测试应覆盖各种情况,包括但不限于空缓冲区、满缓冲区、并发访问等,确保其在各种场景下都能正确工作。 总的来说,环形缓存...

    EHCache缓存的说明和测试

    EHCache缓存的说明文档是到处找来的内容,都有参考链接指向原地址。有三个测试项目也在里面:一个整合了Struts2或Hibernate,一个整合了MyBatis3,这两个是我做的;另一个ehcachetest是下载了別人的。

    Linux下使用C++编写的并发服务器,redis缓存和MySQL数据库,GoogleTest单元测试和webbench压力测试

    spark一个Linux下使用C++学习编写的并发服务器,使用redis作为缓存和MySQL作为数据库,并利用GoogleTest编写单元测试和webbench进行压力测试。.zipspark一个Linux下使用C++学习编写的并发服务器,使用redis作为缓存...

    文件缓存接口

    文件缓存接口是一种重要的软件设计模式,特别是在处理大数据量或者高并发访问的系统中,它能够显著提升程序的运行效率。文件缓存主要是通过将频繁访问的文件存储在内存中,减少磁盘I/O操作,从而加快数据读取速度。...

    redis页面缓存html使用redis实现页面缓存.docx

    测试代码:在测试代码中,我们使用了 JUnit 来测试缓存的实现。我们首先创建了一个 Jedis 对象,并使用了它来连接 Redis 服务器。然后,我们使用了 callback 函数来测试缓存的实现。测试结果表明,缓存的实现是正确...

    Hibernate一级缓存、二级缓存以及查询缓存实例

    通过运行测试,我们可以观察到不同缓存机制如何工作,比如一级缓存如何避免重复的数据库访问,二级缓存如何在多个Session间共享数据,以及查询缓存如何提高重复查询的性能。 总的来说,理解和合理使用Hibernate的...

Global site tag (gtag.js) - Google Analytics