mybatis redis_立即可用的实战源码(springboot+redis+mybatis+restTemplate)

关于这个demo工程

开发springboot应用的时候,经常用到redis、mybatis、restTemplate这些技术,在此将常用代码和配置都整理出来,以后有需要就能直接拿来用了;

demo的功能简介

此demo是个父子结构的maven工程,两个子工程特点如下:

035f719e3457bb134934d47af2aefc2e.png

整个服务如下图所示:

  1. 写操作:用户通过浏览器向service-a发起请求,通过service-a将数据写入mysql,然后service-a会调用service-b的接口,将数据写入redis;
  2. 读操作:用户通过浏览器向service-a发起请求,service-a会调用service-b的接口从redis中取数据,如果取到了就返回给浏览器,如果取不到,就从mysql中取,如果从mysql中能取到,就先通过service-b写入redis,再返回给浏览器,如果mysql中也没有,就返回无数据;

0021bc07d8a66ddfe669a0e672118ad7.png

版本信息参考

  1. 操作系统:CentOS Linux release 7.7.1908
  2. docker:Community 19.03.2
  3. springboot:2.0.5.RELEASE
  4. mysql:5.7.27
  5. redis:5.0.6

demo源码下载

如果您不想编码,可以直接从GitHub下载完整的demo工程源码,地址和链接信息如下表所示:

项目主页 https:// github.com/zq2599/blog_ demos
该项目在GitHub上的主页
git仓库地址
(https) https:// github.com/zq2599/blog_ demos.git
该项目源码的仓库地址,https协议
git仓库地址(ssh)
git@github.com:zq2599/blog_demos.git
该项目源码的仓库地址,ssh协议

这个git项目中有多个文件夹,本章的应用在pinpoint185demo文件夹下,如下图红框所示:

e36a669d7fff2673fc0ea1ae3b1ca909.png

快速部署mysql

  1. 为了快速准备好mysql服务用来测试,我这里是用docker来完成的,一行命令即可:
docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=888888 -idt mysql:5.7.27
  1. 创建数据库demo和表student,表结构非常简单:
CREATE DATABASE demo;
USE demo;
CREATE TABLE student (id INT(11), name VARCHAR(128));

快速部署redis

为了快速准备好redis服务用来测试,我这里是用docker来完成的,一行命令即可:

docker run --name redis -p 6379:6379 -idt redis:5.0.6 redis-server --appendonly yes

父工程

  1. 首先创建名为pinpoint185demo的maven工程,pom.xml内容如下:
<?

子工程service-a编码

  1. 在此工程下创建子工程service-a,其pom.xml内容如下:
<?

以上内容有几点需要注意:

a. 要提供web服务,所以依赖了spring-boot-starter-web;

b. 要使用mybaits,所以依赖了mybatis-spring-boot-starter;

c. 要连接mysql,所以依赖了mysql-connector-java;

d. commons-lang3、fastjson作为工具类,在代码中会用到它们的API;

  1. service-a的系统配置application.yml内容如下,注意数据库和mybaits的配置:
server:
  
  1. mybatis的mapping文件在srcmainresourcesmapping目录,名为StudentMapping.xml,对应student表的定义和操作:
<?
  1. student表对应的实体类:
package 
  1. student对应的mapper接口:
package 
  1. 由于要用到restTemplate访问service-b,因此要增加对应的配置类:
package 
  1. 接下来是提供web服务的controller:
package 
  1. 整个应用的启动类,增加了MapperScan注解:
package 

以上就是service-a的全部源码了,包括mybatis和restTmeplate操作;

service-b源码

  1. 创建名为service-b的子工程,pom.xml如下,要注意的是依赖了spring-boot-starter-data-redis和commons-pool2:
<?
  1. 应用的配置文件application.properties内容如下:
server
  1. redis的配置类:
package 
  1. redis的工具类:
package 
  1. 保存student数据的实体类:
package 
  1. 提供http服务的controller类:
package 
  1. 最后是应用启动类:
package 

以上就是整个demo的所有代码,接下来验证服务

验证

1、先调用service-a的add接口写数据:http://localhost:8080/add/1/tom :

cbee51cf07ebc8623a1c840f892e0478.png

2、检查数据库,写入成功:

mysql> select * from student;
+------+------+
| id   | name |
+------+------+
|    1 | tom  |
+------+------+
1 row in set (0.00 sec)

3、检查redis,写入成功(注意:千万不要在生产环境使用keys命令!!!):

127.0.0.1:6379> keys *
1) "student:1"
127.0.0.1:6379> get "student:1"
"["com.example.serviceb.entity.Student",{"id":1,"name":"tom"}]"

4、等待超过30秒,调用读接口试试:http://localhost:8080/get/1 ,由于redis中的数据只有30秒有效期,所以此时页面提示数据来自mysql

d233b16f2ffefab5fddbd58990f5e6f2.png

5、立即再调用读接口,由于前面的一次读接口会将数据写入redis,所以此时页面提示数据来自redis:

8c62b70c41eb0b0524d3d8864229a637.png

至此,整个demo已经完成开发和验证,希望你在着手开发一个数据、缓存相关的springboot应用时,此demo能给你提供一些参考。

参考并致谢

本文的源码中,RedisConfig和RedisUtil这两个类参考了这篇文章的代码:https://www.jianshu.com/p/b9154316227e ,在此致谢作者;


原作者:程序员欣宸
原文链接:立即可用的实战源码(springboot+redis+mybatis+restTemplate)
原出处:公众号
侵删

1045356c3b47a0e1af49221d5c1163c8.gif
SpringBoot、Spring和MyBatis Redis是一种常见的技术组合,用于构建Java Web应用程序。以下是对每个技术的简要介绍: 1. Spring Boot:Spring Boot是一个用于简化Spring应用程序开发的框架。它通过提供自动配置和约定优于配置的方式,使得构建独立、可扩展的应用程序变得更加容易。Spring Boot提供了许多开箱即用的特性,包括内嵌的Servlet容器、自动配置的数据源和事务管理等。 2. Spring:Spring是一个轻量级的Java开发框架,提供了一系列的模块,用于处理不同方面的应用程序开发,例如依赖注入、面向切面编程、事务管理等。Spring框架可以与其他技术无缝集成,使得应用程序开发更加灵活和可扩展。 3. MyBatisMyBatis是一个持久层框架,用于与关系型数据库进行交互。它通过XML配置文件或注解的方式,将Java对象映射到数据库中的表结构,并提供了丰富的SQL查询和操作功能。MyBatis具有灵活性和易用性,适用于各种规模的项目。 4. RedisRedis是一个高性能的键值存储系统,常用于缓存、消息队列和会话管理等场景。它支持多种数据结构(如字符串、哈希、列表、集合、有序集合等),并提供了丰富的操作命令。在Spring Boot应用程序中使用Redis可以提高数据访问的性能和可靠性。 综上所述,Spring Boot、Spring、MyBatisRedis是一组常用的技术,它们可以协同工作,帮助开发人员构建高性能、可扩展的Java Web应用程序。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值