mybatis 整合 mybatis-redis

SpringBoot整合Mybatis和Redis Java配置的方式 Spring从开始出现到现在,共经历了5个大的版本,并依次推出了3种配置方式:XML配置,注解配置和Java配置。 实现Java配置方式 示例:创建一个userBean: public class User { private Integer userId; private String userName; public User() { } @Override public String toString() { 阅读详情

 

1.pom文件

<dependencies>
		<dependency>
			<groupId>org.mybatis</groupId>
			<artifactId>mybatis</artifactId>
			<version>3.4.1</version>
		</dependency>

		<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<version>6.0.6</version>
		</dependency>
		
		<dependency>
			<groupId>org.mybatis.caches</groupId>
			<artifactId>mybatis-redis</artifactId>
			<version>1.0.0-beta2</version>
		</dependency>

		<!-- https://mvnrepository.com/artifact/log4j/log4j -->
		<dependency>
			<groupId>log4j</groupId>
			<artifactId>log4j</artifactId>
			<version>1.2.17</version>
		</dependency>

		<!-- https://mvnrepository.com/artifact/com.alibaba/fastjson -->
		<dependency>
			<groupId>com.alibaba</groupId>
			<artifactId>fastjson</artifactId>
			<version>1.2.46</version>
		</dependency>

	</dependencies>

2.模型

package com.testmybatis.model;

import java.io.Serializable;

public class Test implements Serializable{
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private int id;
	private String name;

	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 String toString(){
		return "id:"+id+" name:"+name;
	}

}

3.dao

package com.testmybatis.dao;

import java.util.List;

import com.testmybatis.model.Test;


public interface TestMapper {
	public List<Test> test();
}

4.配置文件

TestMapper.xml

<?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.testmybatis.dao.TestMapper">

	<cache type="org.mybatis.caches.redis.RedisCache" />

	<select id="test" resultType="com.testmybatis.model.Test" useCache="true">
		select * from test
	</select>

</mapper>

 mybatis-config.xml

<?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.cj.jdbc.Driver" />
				<property name="url"
					value="jdbc:mysql://127.0.0.1:3306/test?serverTimezone=UTC&amp;useUnicode=true&amp;characterEncoding=utf-8&amp;useSSL=true" />
				<property name="username" value="root" />
				<property name="password" value="HlztLhy" />
			</dataSource>
		</environment>
	</environments>
	
	<mappers>
		<mapper resource="com/testmybatis/dao/TestMapper.xml" />
	</mappers>
	
</configuration>

/src/main/resources/redis.properties

redis.host=localhost
redis.port=6379
redis.connectionTimeout=5000
redis.soTimeout=5000
redis.password=
redis.database=0
redis.clientName=

 

5.测试

package com.testmybatis;

import java.io.IOException;
import java.io.InputStream;
import java.util.List;

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.apache.log4j.Logger;

import com.alibaba.fastjson.JSON;
import com.testmybatis.dao.TestMapper;
import com.testmybatis.model.Test;

public class testlanjie {
	
	private static Logger log=Logger.getLogger(testlanjie.class);
	
	public static void main(String args[]){
		
		try {
			String resource = "com/testmybatis/mybatis-config.xml";
			InputStream inputStream = Resources.getResourceAsStream(resource);
			SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
			SqlSession session = sqlSessionFactory.openSession();
			try {
				TestMapper mapper=session.getMapper(TestMapper.class);
				List<Test> tests=mapper.test();
				session.commit();
				log.info(JSON.toJSONString(tests));
				
			} finally {
				session.close();
			}

		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}
	
}

第一次结果

2018-09-05 17:15:38 DEBUG [org.apache.ibatis.logging.LogFactory] Logging initialized using 'class org.apache.ibatis.logging.log4j.Log4jImpl' adapter.
2018-09-05 17:15:39 DEBUG [org.apache.ibatis.datasource.pooled.PooledDataSource] PooledDataSource forcefully closed/removed all connections.
2018-09-05 17:15:39 DEBUG [org.apache.ibatis.datasource.pooled.PooledDataSource] PooledDataSource forcefully closed/removed all connections.
2018-09-05 17:15:39 DEBUG [org.apache.ibatis.datasource.pooled.PooledDataSource] PooledDataSource forcefully closed/removed all connections.
2018-09-05 17:15:39 DEBUG [org.apache.ibatis.datasource.pooled.PooledDataSource] PooledDataSource forcefully closed/removed all connections.
2018-09-05 17:15:39 DEBUG [com.testmybatis.dao.TestMapper] Cache Hit Ratio [com.testmybatis.dao.TestMapper]: 0.0
2018-09-05 17:15:39 DEBUG [org.apache.ibatis.transaction.jdbc.JdbcTransaction] Opening JDBC Connection
2018-09-05 17:15:39 DEBUG [org.apache.ibatis.datasource.pooled.PooledDataSource] Created connection 680576081.
2018-09-05 17:15:39 DEBUG [org.apache.ibatis.transaction.jdbc.JdbcTransaction] Setting autocommit to false on JDBC Connection [com.mysql.cj.jdbc.ConnectionImpl@2890c451]
2018-09-05 17:15:39 DEBUG [com.testmybatis.dao.TestMapper.test] ==>  Preparing: select * from test 
2018-09-05 17:15:39 DEBUG [com.testmybatis.dao.TestMapper.test] ==> Parameters: 
2018-09-05 17:15:39 DEBUG [com.testmybatis.dao.TestMapper.test] <==      Total: 4
2018-09-05 17:15:39 INFO [com.testmybatis.testlanjie] [{"id":1,"name":"adb"},{"id":2,"name":"dafdsa"},{"id":3,"name":"dafa"},{"id":4,"name":"fffff"}]
2018-09-05 17:15:39 DEBUG [org.apache.ibatis.transaction.jdbc.JdbcTransaction] Resetting autocommit to true on JDBC Connection [com.mysql.cj.jdbc.ConnectionImpl@2890c451]
2018-09-05 17:15:39 DEBUG [org.apache.ibatis.transaction.jdbc.JdbcTransaction] Closing JDBC Connection [com.mysql.cj.jdbc.ConnectionImpl@2890c451]
2018-09-05 17:15:39 DEBUG [org.apache.ibatis.datasource.pooled.PooledDataSource] Returned connection 680576081 to pool.

第二次

2018-09-05 17:16:08 DEBUG [org.apache.ibatis.logging.LogFactory] Logging initialized using 'class org.apache.ibatis.logging.log4j.Log4jImpl' adapter.
2018-09-05 17:16:08 DEBUG [org.apache.ibatis.datasource.pooled.PooledDataSource] PooledDataSource forcefully closed/removed all connections.
2018-09-05 17:16:08 DEBUG [org.apache.ibatis.datasource.pooled.PooledDataSource] PooledDataSource forcefully closed/removed all connections.
2018-09-05 17:16:08 DEBUG [org.apache.ibatis.datasource.pooled.PooledDataSource] PooledDataSource forcefully closed/removed all connections.
2018-09-05 17:16:08 DEBUG [org.apache.ibatis.datasource.pooled.PooledDataSource] PooledDataSource forcefully closed/removed all connections.
2018-09-05 17:16:08 DEBUG [com.testmybatis.dao.TestMapper] Cache Hit Ratio [com.testmybatis.dao.TestMapper]: 1.0
2018-09-05 17:16:09 INFO [com.testmybatis.testlanjie] [{"id":1,"name":"adb"},{"id":2,"name":"dafdsa"},{"id":3,"name":"dafa"},{"id":4,"name":"fffff"}]

在redis中查看

127.0.0.1:6379> keys *
1) "com.testmybatis.dao.TestMapper"
127.0.0.1:6379> dump com.testmybatis.dao.TestMapper
"\x04\x01@f-1239684800:2518816703:com.testmybatis.dao.TestM47:select * from test:development\xc3@\xb4@\xc6\x1f\xac\xeda.util.ArrayListx\x81\xd2\x1d\x99\x14\xc7a\x9d\x03\x00\x01I0\x00\x04w\x04@\x05 4\x17\x1acom.testmybatis.model.T \x11 !\x02I\x00\x02idL\x00\x04namet\x00\x12L@i\x0c/lang/String;`Uq\x00~\x00\x02 :\t\x02t\x00\x06dafdsa\xe0\x00\x12\x03\x03t\x10\x04\x04t\x00\x05f \x00\x01fx\x06\x00\xea[W\xfal\xcblQ"

 

利用MyBatis自身本地缓存结合Redis实现分布式缓存 一、Redis分布式缓存的实现 1、什么是缓存? 计算机内存中的一段数据。 2、内存中数据特点 读写快 断电立即丢失 3、缓存解决了什么问题? 提高网站吞吐量(请求响应)提高, 网站运行效率快 缓存的存在是用来解决数据库访问压力 4、既然缓存能提高效率, 所有项目中都加缓存吗? 使用缓存时一定是数据库中数据极少发生修改, 更多用于查询情况, 比如地址, 省, 市, 等 5、本地缓存和分布式缓存的区别? 本地缓存 : 存在应用服务器内存中数据称之为本地缓存(Local Cache) 分布式缓 阅读详情

相关推荐

springboot+mybatis+redis整合

springBoot+mybatis+redis整合,这里搭建一个简单的框架是为了记录怎么使用redis做缓存。 一、构建一个springboot的maven项目,目录结构如下: 二、在pom.xml文件中引入依赖jar包 <dependencies> <dependency> <groupId>org.sprin...

qq_39660344的博客 1101

mybatis+redis使用

mybatis缓存机制和redis

qq_40453972的博客 1965

后端MyBatis与Redis结合的缓存优化

本文旨在为Java后端开发者提供一套完整的MyBatis与Redis结合的缓存优化方案。MyBatis原生缓存机制的分析Redis作为二级缓存的集成方案缓存一致性与失效策略性能优化与监控方案实际项目中的最佳实践首先介绍MyBatis缓存机制和Redis基础知识然后深入分析两者的结合方案接着通过实际案例展示具体实现最后探讨高级优化和未来发展趋势一级缓存:MyBatis默认的SqlSession级别的缓存,生命周期与SqlSession一致二级缓存。

欢迎来到我的优快云空间!这里聚焦AI大模型应用实战,分享前沿技术、实战案例与开发经验。 1149

Redis缓存和MyBaits整合

2.它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、 zset(sorted set --有序集合)和hash(哈希类型)。3.redis的出现,很大程度补偿了memcached这类key/value存储的不足,在部分场合可以对关系数据库(如MySQL)起到很好的补充作用。写一个程序,取值,如果缓存中有值,则从缓存中取,如果缓存中没值,则从数据库中取值,放入缓存中。4.它提供了Java,C/C++,C#,PHP,JavaScript等客户端,使用很方便。

fyr6103032003的博客 1396

基于51单片机的多功能计算器全套设计

当今社会,随着人们物质生活的不断提高,电子产品已经走进了家家户户,无论是生活或学习,还是娱乐和消遣几乎样样都离不开电子产品,大型复杂的计算能力是人脑所不能胜任的,而且人脑比较容易出错。计算器作为一种快速通用的计算工具方便了用户的使用。计算器可谓是我们最亲密的电子伙伴之一。本设计着重在于分析计算器设计开发过程中的环节和步骤,并从实践经验出发对计算器设计做了详细的分析和研究。 本设计是以STC89C52单片机为核心的计算器模拟系统设计,输入采用5×8矩阵键盘,可以进行加、减、乘、除等十几种数字运算,同时支持括号

runweipa的博客 1742

高速DAC时钟与配置实战:DAC5681Z硬件设计与寄存器编程详解

在高速数据转换系统中,时钟信号是决定系统性能的核心要素,其稳定性和纯净度直接影响数模转换器(DAC)的输出频谱纯度与动态范围。时钟电路的设计原理涉及信号完整性、阻抗匹配与直流偏置,而内部锁相环(PLL)和延迟锁相环(DLL)的配置则是实现精确时序控制的关键技术。这些技术的价值在于,它们共同保障了高速通信、雷达和任意波形生成等应用对信号实时性与精度的严苛要求。本文聚焦于德州仪器(TI)的DAC5681Z,深入解析其外部时钟输入电路的硬件设计要点,包括端接电阻的计算与选型,并详细拆解通过串行外设接口(SPI)对

weixin_30342363的博客 186

MyBatis 使用 Redis 缓存

在上一文中,我们介绍了 MyBatis 的多级缓存。MyBatis 的二级缓存可在多个会话中共享缓存,但是这也加大了内存的使用空间,如果二级缓存空间占有量过多势必会导致程序运行空间的不足,因此我们需要将二级缓存转移到专业的缓存服务器上。Redis 是一个高性能的 kv 数据库,被广泛的使用在缓存服务上,MyBatis 项目开发者提供了 Redis 缓存的实现。本小节我们将一起来学习如何在 MyBatis 中集成 Redis 缓存。

很酷的站长的博客 1112

MiFlash Prime免授权刷机实战:解锁小米9008 EDL救砖新方案

MiFlash Prime作为免授权刷机工具,有效解决了小米设备在9008 EDL模式下因账号验证无法救砖的难题。本文详细介绍了从驱动安装、进入EDL模式到固件刷写的完整流程,帮助用户安全快速地恢复变砖设备,是维修人员和极客的实用解决方案。

5f4d3s2a1q的博客 2875

mybatis与redis整合

redis与ehcache都是专业的缓存框架,redis与mybatis的整合方式与ehcache类似,不同的是,redis需要先搭建自己的redis服务,用来存放缓存数据。 这里主要演示mybatis与redis的整合过程,redis服务的搭建可以参考 Java连接redis简单demo示例,这里使用本地的Windows环境的redis服务,与mybatis进行整合。 1、添加redis依赖...

蜗牛学习笔记 8390

水与光的奇妙“切割之舞”:水导激光切割技术探秘

水导激光切割技术的诞生,是材料加工领域不断追求高精度、高质量加工的成果。传统激光切割技术在加工过程中,材料会因瞬间高温而产生热变形、热影响区大以及切割面粗糙等问题,这些弊端在对一些高精度、热敏性材料的加工中尤为突出 ,迫切需要一种新的技术来克服这些难题。水导激光切割技术的起源可以追溯到 20 世纪 80 年代。1986 年,德国公司 Aesculap-Werke AG 首次提出了将水流引入激光切割过程的创新想法,并制造出首代水导激光设备。不过,当时的技术尚处于雏形阶段,仅仅是在光纤出口添加了一小柱水流,激光

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 1673

ABAP CDS Time Functions 全面解析:用 TIMS_IS_VALID 护航时刻字段的正确性

摘要:本文深入解析ABAP CDS时间函数TIMS_IS_VALID的应用,重点介绍其在企业系统时间字段校验中的关键作用。文章指出无效时间数据会导致业务流程混乱,而CDS层校验能有效减少重复逻辑。详细说明TIMS类型格式要求、空值处理规则,并提供两种工程实现方案:在CDS视图中直接派生校验列,或通过ABAP SQL在内存表中批量验证。最后给出可直接运行的代码示例,包括一个ABAP报表演示内存表验证,以及一个CDS View Entity实现系统时间自动映射与校验,帮助开发者在业务场景中快速落地时间校验功能。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 193

spring整合mybatis Redis mybiats-pluse mybist-public整合redis

Controller是一个SpringMVC定义控制器的注解,处理传统的Web请求/响应模型——HTTP请求,处理请求中的逻辑,返回一个视图(即HTML页面)给客户端;可排序的set集合 排序 不可重复 ,因为SortedSet的可排序特性,经常被用来实现排行榜这样的功能。@RestController是@Controller的特殊形式,是用于创建 RESTful Web 服务的控制器类,而非传统的Web形式;这些标识符可以是任何合法的Java标识符,通常用单个大写字母表示,以表它们是参数类型。

qq_70786441的博客 1159

HTML粉色爱心(完整代码)

HTML语言实现粉色爱心的完整代码。

AIGC 1105

mybatis整合redis

mybatis整合redis步骤 1.添加redis相关依赖           redis与spring的整合依赖           log4j2配置:Log4j2 + Slf4j            jackson     2.spring + redis 集成实现缓存功能(与mybatis无关)           添加两个redis的配置文件,并将redis.properties和s...

Soul717的博客 1781

DTI-ALPS 指标计算(附代码),评估脑类淋巴系统功能

DTI-ALPS 指标计算(附代码),评估脑类淋巴系统功能

xxx 1048

innovus:NRDB-2276 special net route layer与NanoRouteMode route layer冲突问题解决方法

NanoRouteMode中设置绕线层次2-6,但是被动到的special net有8-11的preferred route layer,这个层次可能是create_route_type+set_ccopt_property -net_type 定义的。二者绕线层次范围有冲突,导致在调整过这条net后再绕线就会提示失败。然后再下route_design 等route命令去绕别的net。我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧?

m0_61544122的博客 1099

Redis整合MyBatis缓存实战指南

本文介绍了如何整合MyBatis与Redis实现缓存功能。主要包括:1)添加MyBatis和MyBatis-Redis-Cache依赖;2)配置Redis连接信息;3)在MyBatis配置中启用缓存;4)通过实现Cache接口自定义Redis缓存类,重点覆盖getId()、putObject()、getObject()和clear()四个核心方法。文章详细说明了缓存机制的工作原理,并提供了XML配置示例和自定义缓存类的实现代码。最后还讨论了Cache接口中可选方法的实现必要性,以及如何在项目中实际调用这些缓

Joy T的博客 773

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

springboot 整合 Mybatis、JPA、Redis

引言 在springboot 项目中,我们是用ORM 框架来操作数据库变的非常方便。下面我们分别整合mysql ,spring data jpa 以及redis 。让我们感受下快车道。 我们首先创建一个springboot 项目,创建好之后,我们来一步步的实践。 使用mybatis 引入依赖: <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis

程序员爱酸奶 1万+

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

myBatis整合redis

redis分布式缓存,mybatis提供了一个针对cache接口的redis实现类,该类存在mybatis-redis包 中 pom文件 <dependency> <groupId>org.mybatis.caches</groupId> <artifactId>mybatis-redis</artifactId> <version>1.0.0-beta2</version> </dependency> 2

javahhhhhh的博客 2014

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

SpringBoot整合Mybatis和Redis案例

项目结构: 一、引入相关jar <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-cache</artifactId> </dependency> <depende...

hq.zheng的博客 977

springboot整合mybatis和redis

关于SpringBoot介绍 所谓SpringBoot并不是对于spring技术的扩展.其实它的出现就是为了让我们更好的使用spring技术,简化了我们的开发,让我们使用spring技术开发项目变得更加方便快捷. SpringBoot的特点 == 起步依赖== 所谓起步依赖就是说我们在项目开始的时候导入一些坐标,这里导入一个坐标就相当于我们在spring中导入许多坐标,大大的简化了我们导入坐标的操作. == 自动配置== 所谓自动配置就是说我们在使用spring的时候,通常会写大量的配置文件,但是spri

qq_44334291的博客 360

Spring Boot整合 MyBatis 和 Redis

Spring Boot整合 MyBatis 和 Redis 1.Java配置的方式 1.1初识 Java 配置的方式 spring从开始出现到现在,共经历了5个大的版本,并一次推出了3种配置方式: XML配置方式 优点:便于阅读、与业务代码解耦 缺点:解析XML影响性能、开发工作量大,编译器不可校验配置正确性 注解配置方式 优点:开发便捷、编译期可校验配置正确性 缺点:注解与代码绑定,配置分散,不利于统一处理 Java配置方式 优点:编译期可校验配置正确性、配置简单,方便维护和管理、可以使

m0_61311086的博客 1997

Springboot整合Redis作为Mybatis的二级缓存

文章转载声明:转载请附带原文链接 0. 环境准备 以下是我本机的环境: SpringBoot2.3.x Mybatis3.x Redis5.x 本机或者服务器中搭建好redis环境,并启动成功!这里我用的是阿里云学生机上部署的redis5.x IDEA2020.x ,Eclipse2020也是可以的,编辑器选择无所谓! 1. 新版本springboot和IDEA编辑器踩坑(可以直接跳过该章节,遇到类似的错误再回头看) 如果您在实操过程中,使用的是IDEA2020 和springboot2.3.x 版.

兴趣使然的草帽路飞 1万+

SpringBoot整合Mybatis 与 Redis

1.SpringBoot整合Mybatis 1.1导入依赖 <!-- mybatis --> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-st...

qq_44784185的博客 361

Mybatis整合Redis实现二级缓存

晓哥先别改,今晚写 晓哥先别改,今晚写 晓哥先别改,今晚写 晓哥先别改,今晚写 晓哥先别改,今晚写

qq_45177371的博客 155

redis,mybatis, spring整合

---维基百科:redis介绍 一般开发中用户状态使用session或者cookie,两种方式各种利弊。 Session:在InProc模式下容易丢失,并且引起并发问题。如果使用SQLServer或者SQLServer模式又消耗了性能 Cookie则容易将一些用户信息暴露,加解密同样也消耗了性能。 Redis采用这样的方案解决了几个问题, 1.Redis存取速度快。 2.用户数据不容易...

litter940505的博客 207
上一篇: springboot 整合redis
下一篇: springboot 整合mybatis和redis
knife1220
博客等级 码龄15年 33粉丝 176原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值