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

这是一个包含springboot、redis、mybatis和restTemplate的实战项目,提供了完整的代码和配置。项目包含两个子工程,service-a负责写入mysql并调用service-b将数据写入redis,service-b提供redis缓存服务。详细介绍了如何配置和使用这些技术,并提供了快速部署mysql和redis的docker命令。
摘要由CSDN通过智能技术生成

关于这个demo工程

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

demo的功能简介

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

整个服务如下图所示:写操作:用户通过浏览器向service-a发起请求,通过service-a将数据写入mysql,然后service-a会调用service-b的接口,将数据写入redis;

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

版本信息参考操作系统:CentOS Linux release 7.7.1908

docker:Community 19.03.2

springboot:2.0.5.RELEASE

mysql:5.7.27

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文件夹下,如下图红框所示:

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

docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=888888 -idt mysql:5.7.27创建数据库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

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

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

4.0.0

service-a

service-b

org.springframework.boot

spring-boot-starter-parent

2.0.5.RELEASE

com.bolingcavalry

pinpoint185demo

1.0-SNAPSHOT

pom

1.8

UTF-8

UTF-8

1.8

2.0.5.RELEASE

org.apache.maven.plugins

maven-compiler-plugin

${java.version}

${java.version}

${project.build.sourceEncoding}

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

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">

4.0.0

com.bolingcavalry

pinpoint185demo

1.0-SNAPSHOT

service-a

service-a

服务a

1.8

org.springframework.boot

spring-boot-starter-web

org.mybatis.spring.boot

mybatis-spring-boot-starter

1.3.2

mysql

mysql-connector-java

com.alibaba

fastjson

1.2.28

org.apache.commons

commons-lang3

3.9

org.springframework.boot

spring-boot-maven-plugin

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

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

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

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

d. commons-lang3、fastjson作为工具类,在代码中会用到它们的API;service-a的系统配置application.yml内容如下,注意数据库和mybaits的配置:

server:

port: 8080

spring:

datasource:

username: root

password: 888888

url: jdbc:mysql://192.168.121.143:3306/demo?useUnicode=true&characterEncoding=utf-8&serverTimezone=UTC driver-class-name: com.mysql.jdbc.Driver

mybatis:

mapper-locations: classpath:mapping/*Mapping.xml

type-aliases-package: com.bolingcavalry.servicea.entity

logging:

level:

com:

bolingcavalry:

servicea: debug

# service-b的服务url

serviceb:

baseurl: http://localhost:8081/mybatis的mapping文件在src\main\resources\mapping目录,名为StudentMapping.xml,对应student表的定义和操作:

select * from student where id = #{id}

insert into student (id, name) values (#{id,jdbcType=INTEGER}, #{name,jdbcType=VARCHAR})

student表对应的实体类:

package com.bolingcavalry.servicea.entity;

/*** @Description: student entity* @author: willzhao E-mail: zq2599@gmail.com* @date: 2019/10/3 9:55*/

public class Student {

private Integer id;

private String name;

public Integer getId() {

return id;

}

public void setId(Integer id) {

this.id = id;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

}student对应的mapper接口:

package com.bolingcavalry.servicea.mapper;

import com.bolingcavalry.servicea.entity.Student;

import org.springframework.stereotype.Repository;

/*** @Description: mybatis mapper* @author: willzhao E-mail: zq2599@gmail.com* @date: 2019/10/3 9:58*/

@Repository

public interface StudentMapper {

Student getById(Integer id);

void insert(Student student);

}由于要用到restTemplate访问service-b,因此要增加对应的配置类:

package com.bolingcavalry.servicea.config;

import org.springframework.context.annotation.Bean;

import org.springframework.context.annotation.Configuration;

import org.springframework.http.client.ClientHttpRequestFactory;

import org.springframework.http.client.SimpleClientHttpRequestFactory;

import org.springframework.web.client.RestTemplate;

/*** @Description: 远程请求的配置* @author: willzhao E-mail: zq2599@gmail.com* @date: 2019/10/3 11:45*/

@Configuration

public class RestTemplateConfig {

@Bean

public RestTemplate restTemplate(ClientHttpRequestFactory factory){

return new RestTemplate(factory);

}

@Bean

public ClientHttpRequestFactory simpleClientHttpRequestFactory(){

SimpleClientHttpRequestFactory factory = ne

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Boot是一个用于快速构建基于Spring框架的Java应用程序的开发框架。它简化了Spring应用程序的配置和部署过程,提供了一种快速开发的方式。 MyBatis是一个持久层框架,它可以将Java对象与数据库表进行映射,并提供了灵活的SQL查询和更新操作。MyBatis通过XML或注解的方式来配置SQL语句和映射关系。 Redis是一个开源的内存数据库,它支持多种数据结构(如字符串、哈希、列表、集合、有序集合等),并提供了丰富的操作命令。Redis具有高性能、高可用性和可扩展性的特点,常用于缓存、消息队列、计数器等场景。 MySQL是一个开源的关系型数据库管理系统,它支持多用户、多线程和多表操作。MySQL具有良好的性能和稳定性,并且拥有丰富的功能和工具。 将Spring Boot、MyBatisRedisMySQL结合使用可以实现一个完整的Java应用程序。Spring Boot提供了便捷的配置和集成方式,可以轻松地将MyBatisMySQL集成到应用程序中。同时,通过使用Redis作为缓存,可以提高应用程序的性能和响应速度。 具体来说,可以使用Spring Boot的自动配置功能来集成MyBatisMySQL。通过配置数据源和MyBatis的Mapper接口,可以实现对数据库的访问和操作。同时,可以使用Redis作为缓存,提高数据的读取速度和响应性能。 总结起来,Spring Boot+MyBatis+Redis+MySQL的组合可以实现一个高性能、可扩展的Java应用程序,提供了方便的开发和部署方式,适用于各种类型的应用场景。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值