选择生成的依赖

选择保存的工程路径

查询已经生成的依赖,并修改mysql的版本

 <dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.0</version>
</dependency>
<!--修改mysql的驱动版本-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.38</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>

pom.xml

项目结构如下:

编辑属性文件application.properties

 server.port=8080

 #spring.application.name=springboot-redis

 spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/kgc
spring.datasource.username=root
spring.datasource.password=ok #redis
#redis的服务所在的ip地址
spring.redis.host=192.168.117.143
#redis的端口号
spring.redis.port=6379
# redis数据库索引(默认为0) 密码默认是没有的,可以不写
spring.redis.database=0 #打印sql语句,改为自己的mapper包路径
logging.level.cn.kgc.mapper=debug

application.properties

创建持久化类Student.java

 package cn.kgc.vo;

 import java.io.Serializable;

 /**
* Created by Administrator on 2019/7/22.
*/
public class Student implements Serializable{
private Integer sid;
private String sname;
private String password;
private String subject;
private String result;
private Integer cid; public Student() {
} public Student(Integer sid, String sname, String password, String subject, String result, Integer cid) {
this.sid = sid;
this.sname = sname;
this.password = password;
this.subject = subject;
this.result = result;
this.cid = cid;
} public Integer getSid() {
return sid;
} public void setSid(Integer sid) {
this.sid = sid;
} public String getSname() {
return sname;
} public void setSname(String sname) {
this.sname = sname;
} public String getPassword() {
return password;
} public void setPassword(String password) {
this.password = password;
} public String getSubject() {
return subject;
} public void setSubject(String subject) {
this.subject = subject;
} public String getResult() {
return result;
} public void setResult(String result) {
this.result = result;
} public Integer getCid() {
return cid;
} public void setCid(Integer cid) {
this.cid = cid;
} @Override
public String toString() {
return "Student{" +
"sid=" + sid +
", sname='" + sname + '\'' +
", password='" + password + '\'' +
", subject='" + subject + '\'' +
", result='" + result + '\'' +
", cid=" + cid +
'}';
}
}

Student.java

创建数据访问层接口StudentMapper.java

 package cn.kgc.mapper;

 import cn.kgc.vo.Student;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update; import java.util.List; /**
* Created by Administrator on 2019/7/22.
*/
public interface StudentMapper {
@Select("select * from student")
List<Student> findAll(); @Select("select * from student where sid=#{sid}")
Student findBySid(Integer sid); @Delete("delete from student where sid=#{sid}")
int del(Integer sid); @Update("update student set sname=#{sname},password=#{password},subject=#{subject},result=#{result},cid=#{cid} where sid=#{sid}")
int modify(Student student); @Insert("insert into student(sname,password,subject,result,cid) values(#{sname},#{password},#{subject},#{result},#{cid})")
int add(Student student); }

StudentMapper.java

创建业务层接口StudentService.java

 package cn.kgc.service;

 import cn.kgc.vo.Student;

 import java.util.List;

 /**
* Created by Administrator on 2019/7/22.
*/
public interface StudentService {
List<Student> findAll(); Student findBySid(Integer sid); int del(Integer sid); int modify(Student student); int add(Student student);
}

StudentService.java

创建业务层接口实现类StudentServiceImpl.java

 package cn.kgc.service;

 import cn.kgc.mapper.StudentMapper;
import cn.kgc.vo.Student;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.ListOperations;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.ValueOperations;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import java.util.List; @Service
@Transactional
public class StudentServiceImpl implements StudentService{
@Autowired
StudentMapper studentMapper; @Autowired
RedisTemplate redisTemplate; @Override
public List<Student> findAll() {
String key="student";
ListOperations<String,Student> operations= redisTemplate.opsForList(); //缓存存在
if (redisTemplate.hasKey(key)){
return operations.range(key,0,-1);
}else{
//得到学生集合
List<Student> list=studentMapper.findAll();
operations.leftPushAll(key,list);
return list;
}
} @Override
public Student findBySid(Integer sid) {
String key = "student_" + sid;
ValueOperations<String, Student> operations = redisTemplate.opsForValue(); //缓存存在
if (redisTemplate.hasKey(key)) {
System.out.println("redis-siddata");
return operations.get(key);
} else {
//得到学生对象
Student student = studentMapper.findBySid(sid);
//添加到缓存
operations.set(key, student);
System.out.println("student-siddata");
return student;
}
} @Override
public int del(Integer sid) {
//删除数据库中的数据
int count = studentMapper.del(sid); //缓存存在
String key = "student_" + sid;
if (redisTemplate.hasKey(key)) {
//删除对应缓存
redisTemplate.delete(key);
}
return count;
} @Override
public int modify(Student student) {
//修改数据库中的数据
int count = studentMapper.modify(student); ValueOperations operations = redisTemplate.opsForValue();
//缓存存在
String key = "student_" + student.getSid();
if (redisTemplate.hasKey(key)) {
//更新缓存
Student stu = studentMapper.findBySid(student.getSid());
operations.set(key, stu);
}
return count;
} @Override
public int add(Student student) {
//添加数据
int count = studentMapper.add(student);
return count;
}
}

StudentServiceImpl.java

创建控制层StudentController.java

 package cn.kgc.controller;

 import cn.kgc.service.StudentService;
import cn.kgc.vo.Student;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import java.util.List; @RestController
public class StudentController { @Autowired
StudentService studentService; @GetMapping("/student")
public List<Student> findAll() {
return studentService.findAll();
} /* @GetMapping("/student/{sid}")
public Student findById(@PathVariable("sid") Integer sid) {
return studentService.findBySid(sid);
}
*/
@GetMapping("/findById")
public Student findById(Integer sid) {
return studentService.findBySid(sid);
} @PostMapping("/student/{sid}")
public int del(@PathVariable("sid") Integer sid) {
return studentService.del(sid);
} @PutMapping("/student")
public int modify(Student student) {
return studentService.modify(student);
} }

StudentController.java

启动类

 package cn.kgc;

 import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
//指定要扫描的mapper包
@MapperScan("cn.kgc.mapper")
@SpringBootApplication
public class SpringbootMybatisRedisApplication { public static void main(String[] args) {
SpringApplication.run(SpringbootMybatisRedisApplication.class, args);
} }

启动类

测试如下:

第一次访问

查看redis

第二次访问

7.springboot+mybatis+redis整合的更多相关文章

  1. SpringBoot + Mybatis + Redis 整合入门项目

    这篇文章我决定一改以往的风格,以幽默风趣的故事博文来介绍如何整合 SpringBoot.Mybatis.Redis. 很久很久以前,森林里有一只可爱的小青蛙,他迈着沉重的步伐走向了找工作的道路,结果发 ...

  2. SpringCloud+MyBatis+Redis整合—— 超详细实例(二)

    2.SpringCloud+MyBatis+Redis redis①是一种nosql数据库,以键值对<key,value>的形式存储数据,其速度相比于MySQL之类的数据库,相当于内存读写 ...

  3. springboot + mybatis + mycat整合

    1.mycat服务 搭建mycat服务并启动,windows安装参照. 系列文章: [Mycat 简介] [Mycat 配置文件server.xml] [Mycat 配置文件schema.xml] [ ...

  4. SpringBoot+Mybatis+MybatisPlus整合实现基本的CRUD操作

    SpringBoot+Mybatis+MybatisPlus整合实现基本的CRUD操作 1> 数据准备 -- 创建测试表 CREATE TABLE `tb_user` ( `id` ) NOT ...

  5. redis(七)---- SpringBoot和redis整合

    SpringBoot和Redis整合非常简单 添加pom依赖 <dependency> <groupId>org.springframework.boot</groupI ...

  6. springboot+mybatis+redis实现分布式缓存

    大家都知道springboot项目都是微服务部署,A服务和B服务分开部署,那么它们如何更新或者获取共有模块的缓存数据,或者给A服务做分布式集群负载,如何确保A服务的所有集群都能同步公共模块的缓存数据, ...

  7. SpringBoot日记——Redis整合

    上一篇文章,简单记录了一下缓存的使用方法,这篇文章将把我们熟悉的redis整合进来. 那么如何去整合呢?首先需要下载和安装,为了使用方便,也可以做环境变量的配置. 下载和安装的方法,之前有介绍,在do ...

  8. springboot和Redis整合

    springboot简化了许多的配置,大大提高了使用效率.下面介绍一下和Redis整合的一些注意事项. 首先介绍单机版的redis整合. 1.第一步当然是导入依赖 <dependency> ...

  9. Springboot Mybatis Redis 实现二级缓存

    前言 什么是mybatis二级缓存? 二级缓存是多个sqlsession共享的,其作用域是mapper的同一个namespace. 即,在不同的sqlsession中,相同的namespace下,相同 ...

随机推荐

  1. PE代码段中的数据

    PE代码段中可能包含一些数据,比如 optional header中的data directory会索引到一些数据,比如import/export table等等: 还有一些jump table/sw ...

  2. js导出复杂表头(多级表头)的excel

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  3. Django(十四)课程机构列表页数据展示,Django的modelform,关于urls的重新分发

    关于urls的重新分发: 如果所有url都配置在根路径的urls.py里,会特别多,而且也不易于修改,Django框架里支持urls的重新分发: 1.在根路径的urls配置上: PS:namespac ...

  4. Springboot循环依赖

    背景 最近在使用Springboot做项目的时候,遇到了一个循环依赖的 问题.那什么是循环依赖呢,常见的一种情形就是在ServiceA中注入了ServiceB,在ServiceB中也注入了Servic ...

  5. 标准 IO 测试 标准输出,输入,出错缓冲大小;全缓冲文本流大小

    例子:测试缓冲区大小 #include <stdio.h> int main(int argc, const char *argv[]) { //标准输入大小,没有输入内容时,标准输入缓冲 ...

  6. Eureka配置详解(转)

    Eureka客户端配置       1.RegistryFetchIntervalSeconds 从eureka服务器注册表中获取注册信息的时间间隔(s),默认为30秒 2.InstanceInfoR ...

  7. SQL登录报错

    在安装完SQL后,发现报出了error40和53的错误,作为小白的我也是一脸懵逼,明明一切都是按照默认加下一步安装的,为什么到了连接数据库的时候就出现了问题呢? 后来经过调查,发现需要将sql配置管理 ...

  8. day01 mysql认识 安装 配置 起服务 密码 字符集 用户授权

    day01 mysql      一.认识mysql     关系型数据库:         最流行的关系型数据库管理系统,支持大型数据库,处理上千万条记录         关系型: oracle,  ...

  9. 几种数据类型的常用API

    数字 int() 字符串 #==========join===========在字符串前后插入字符 li = 'alexericrain' new_li = '_'.join(li) print(ne ...

  10. .nett Core之路由配置

    //配置路由 app.UseMvc(buider => { buider.MapRoute("Default", "{controller=home}/{actio ...