关于缓存的测试
<?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 的缓存分为一级缓存和二级缓存。一级缓存是SqlSession级别的,同一SqlSession内的多次相同查询会复用...
本项目“图片加载缓存测试”旨在探讨和实现一个高效、灵活的图片加载和缓存机制,以优化用户体验并减少服务器负载。以下是相关的知识点详解: 1. **图片加载**:图片加载通常涉及网络请求,如使用`NSURLConnection`...
分布式缓存测试框架RadarGun是一个专为数据网格和分布式缓存系统设计的性能基准测试工具,主要用于评估和比较这些系统的性能和可扩展性。在Java开发领域,它扮演着重要角色,帮助开发者和运维人员确保所选的分布式...
在这个特定的场景下,我们关注的是“Loadrunner负载测试中的浏览器缓存设置”。了解如何在LoadRunner中正确设置浏览器缓存对于获取真实用户行为的数据至关重要,因为这直接影响到测试结果的准确性。 浏览器缓存是...
在这个小测试中,我们将探讨页面缓存的基本概念,以及如何利用开源工具实现缓存功能。本文以OSCache为例,一个广泛使用的Java缓存框架。 首先,理解页面缓存的原理至关重要。页面缓存的工作方式是在用户首次请求某...
本分享主要涵盖了Redis作为缓存的使用及其测试项目。 首先,让我们深入了解一下Redis的核心特性。Redis支持多种数据类型,如字符串(Strings)、哈希(Hashes)、列表(Lists)、集合(Sets)和有序集合(Sorted ...
三种高速缓存测试代码,c#源码
标题与描述均提到了“Net内建缓存测试代码”,这指向了.NET框架中的缓存机制测试。在.NET中,缓存是提升应用程序性能的重要手段之一,它通过存储经常访问的数据来减少对数据库或其他资源的请求,从而提高响应速度。...
使用vs2017的opengl缓存测试
当我们谈论“先锋缓存类-测试可用”时,这通常是指一个特定的ASP(Active Server Pages)开发的缓存管理类库,它可以帮助优化asp页面的加载和处理速度。 在ASP编程中,缓存机制允许我们将频繁访问的数据存储在内存...
本测试用例DEMO主要关注Service Worker的运用,这是PWA实现离线缓存、后台更新以及网络请求优化的关键组件。 一、Service Worker简介 Service Worker是运行在浏览器后台的脚本,它独立于网页,可以处理网络请求、...
买硬盘,有些JS在缓存上作文章,看你是个菜鸟,明明是个3M的缓存(打个比方,可能没有3M缓存的硬盘),他偏要跟你说是8M的,离谱点的还说是16M的,而硬盘缓存这东西在外部的说明文件中是没有说出来的,只有它的型号能...
标题中的“u_cache_test.rar_The Test”暗示我们这是一个关于缓存测试的项目,可能包含一个用于测试缓存性能的程序。描述指出这个程序会反复地进行插入和检索操作,这是缓存系统中最常见的功能,旨在优化数据访问...
本篇文章将深入探讨Redis的基本原理,以及如何预防和模拟测试缓存中的异常情况,如缓存穿透、击穿和雪崩。 首先,我们来理解Redis的基本原理。Redis基于内存存储,数据读取速度远超传统的磁盘存储。它支持多种数据...
6. **测试与调试**:文件名为`testbuf`,暗示了存在一个测试程序来验证环形缓存的功能。测试应覆盖各种情况,包括但不限于空缓冲区、满缓冲区、并发访问等,确保其在各种场景下都能正确工作。 总的来说,环形缓存...
EHCache缓存的说明文档是到处找来的内容,都有参考链接指向原地址。有三个测试项目也在里面:一个整合了Struts2或Hibernate,一个整合了MyBatis3,这两个是我做的;另一个ehcachetest是下载了別人的。
spark一个Linux下使用C++学习编写的并发服务器,使用redis作为缓存和MySQL作为数据库,并利用GoogleTest编写单元测试和webbench进行压力测试。.zipspark一个Linux下使用C++学习编写的并发服务器,使用redis作为缓存...
文件缓存接口是一种重要的软件设计模式,特别是在处理大数据量或者高并发访问的系统中,它能够显著提升程序的运行效率。文件缓存主要是通过将频繁访问的文件存储在内存中,减少磁盘I/O操作,从而加快数据读取速度。...
测试代码:在测试代码中,我们使用了 JUnit 来测试缓存的实现。我们首先创建了一个 Jedis 对象,并使用了它来连接 Redis 服务器。然后,我们使用了 callback 函数来测试缓存的实现。测试结果表明,缓存的实现是正确...
通过运行测试,我们可以观察到不同缓存机制如何工作,比如一级缓存如何避免重复的数据库访问,二级缓存如何在多个Session间共享数据,以及查询缓存如何提高重复查询的性能。 总的来说,理解和合理使用Hibernate的...