springboot集成mybatis-plus全過程
springboot集成mybatis-plus
環(huán)境:
- jdk 1.8
- springboot: 2.5.14
一、配置
1、maven依賴
<dependencies>
<!-- https://mvnrepository.com/artifact/com.baomidou/mybatis-plus-boot-starter -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.2</version>
</dependency>
</dependencies>
<!-- 數(shù)據(jù)庫驅動 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependencies>
<dependencyManagement>
<dependencies>
<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-dependencies -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.5.14</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>2、配置文件application.yaml
#數(shù)據(jù)源配置
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://1.13.152.218:3306/mp?useUnicode=true&useSSL=false&characterEncoding=utf8&serverTimezone=Asia/Shanghai
username: root
password: zhuang123
#數(shù)據(jù)庫名稱
project:
database: mysql
#mybatis-plus配置
mybatis-plus:
configuration:
#sql日志打印
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
#開啟駝峰命名匹配
map-underscore-to-camel-case: true
#mapper文件
mapper-locations: classpath:mapper/${project.database}/**/*.xml,classpath:mapper/*.xml
#數(shù)據(jù)庫實體類的包全路徑,方便在mapper.xml中不許使用實體類的全路徑,寫類名就行(不區(qū)分大小寫)
type-aliases-package: com.zhuang.mp.entity
global-config:
db-config:
#邏輯刪除
logic-delete-value: 0
logic-not-delete-value: 1
logic-delete-field: deleted二、創(chuàng)建過程
1.創(chuàng)建數(shù)據(jù)庫與java實體類
新建user表:

java實體類:
package com.zhuang.mp.entity;
import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonAlias;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Builder;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import java.util.Date;
@Data
@Builder
@TableName(value = "user")
public class User {
@TableId(type = IdType.AUTO)
private Long id;
@JsonAlias("user_name")
private String name;
@JsonAlias("user_age")
private Integer age;
@JsonAlias("user_email")
private String email = "862627527@qq.com";
@TableField(value = "create_time", fill = FieldFill.INSERT)
//后端傳給前端的時間格式
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
//前端傳給后端的時間格式
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonAlias("create_time")
private Date createTime;
@JsonAlias("update_time")
@TableField(value = "update_time" ,fill = FieldFill.INSERT_UPDATE)
private LocalDateTime updateTime;
}2.mapper或dao層
UserMapper接口:繼承BaseMapper<T>, T為實體類User,需要加上@Mapper注解,如果不加注解需要在啟動類上加@MapperScan注解
package com.zhuang.mp.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.zhuang.mp.entity.User;
import com.zhuang.mp.entity.UserVo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@Mapper
public interface UserMapper extends BaseMapper<User> {
List<User> searchByAges(@Param("ages") List<Long> ages);
List<UserVo> selectBynames(@Param("names") List<String> names);
}3.mapper.xml文件
一般放在類路徑下:src/main/resources/mapper/
設置命名空間 namespace
namespace=“com.zhuang.mp.mapper.UserMapper”
<?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.zhuang.mp.mapper.UserMapper">
<resultMap id="userResultMap" type="User">
<id property="id" column="id"/>
<result property="name" column="name"/>
<result property="age" column="age"/>
<result property="email" column="email"/>
<result property="createTime" column="create_time"/>
<result property="updateTime" column="update_time"/>
</resultMap>
<select id="searchByAges" resultType="com.zhuang.mp.entity.User">
select * from user where age in
<foreach collection="ages" item="age" open="(" close=")" separator=",">
#{age}
</foreach>
</select>
<select id="selectBynames" resultType="UserVo">
select name
from user where
<foreach collection="names" item="name" separator="or">
name like "%"#{name}"%"
</foreach>
</select>
</mapper>
4.service層
UserService接口:需要繼承IService<T>, T 為實體類User
package com.zhuang.mp.service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.zhuang.mp.entity.User;
import com.zhuang.mp.entity.UserVo;
import java.util.List;
/**
* @program: mp
* @description:
* @author: mrzhuang
* @create: 2022-12-15 00:48
**/
public interface UserService extends IService<User> {
int addUser(User user);
int updateUser(User user);
Page<User> searchPage(Page<User> page);
List<User> searchByAges(List<Long> ages);
List<UserVo> selectBynames(List<String> names);
}UsrServiceIpml實現(xiàn)類:需要繼承ServiceImpl<M extends BaseMapper, T>, M為接口UserMapper, T為實體類User,需要加上@Service注解
package com.zhuang.mp.service.impl;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.zhuang.mp.entity.User;
import com.zhuang.mp.entity.UserVo;
import com.zhuang.mp.mapper.UserMapper;
import com.zhuang.mp.service.UserService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.web.bind.annotation.RequestBody;
import javax.annotation.Resource;
import java.util.List;
/**
* @program: mp
* @description:
* @author: mrzhuang
* @create: 2022-12-15 00:49
**/
@DS("slave_1")
@Service
@Slf4j
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {
@Resource
private UserMapper userMapper;
@Override
public int addUser(User user) {
int insert = userMapper.insert(user);
return insert;
}
@Override
public int updateUser(@RequestBody User user) {
int update = userMapper.updateById(user);
return update;
}
@Override
public Page<User> searchPage(Page<User> page) {
Page<User> userPage = userMapper.selectPage(page, null);
return userPage;
}
@Override
public List<User> searchByAges(List<Long> ages) {
List<User> list = userMapper.searchByAges(ages);
return list;
}
@Override
public List<UserVo> selectBynames(List<String> names) {
return userMapper.selectBynames(names);
}
}5.controller層
UserController類:
package com.zhuang.mp.controller;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.zhuang.mp.entity.User;
import com.zhuang.mp.entity.UserVo;
import com.zhuang.mp.enums.CodeEnum;
import com.zhuang.mp.service.UserService;
import com.zhuang.mp.vo.PageVo;
import com.zhuang.mp.vo.ResponseVo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.List;
/**
* @program: mp
* @description:
* @author: mrzhuang
* @create: 2022-12-17 21:40
**/
@Slf4j
@Api(tags = "用戶接口")
@RestController
@RequestMapping("/user")
public class UserController {
@Resource
UserService userService;
@ApiOperation("用戶增加")
@RequestMapping("/add")
public ResponseVo<User> addUser(@RequestBody User user){
log.info("user: {}", user);
int insert = userService.addUser(user);
if (insert > 0){
log.info("插入成功!");
return new ResponseVo<>(CodeEnum.SUCESS.code, CodeEnum.SUCESS.message);
}
log.error("插入失敗!");
return new ResponseVo<>(CodeEnum.FAILUIRE.code, CodeEnum.FAILUIRE.message);
}
@RequestMapping("/update")
public ResponseVo<User> updateUser(@RequestBody User user){
log.info("user: {}", user);
int update = userService.updateUser(user);
if (update > 0){
log.info("更新成功!");
return new ResponseVo<>(CodeEnum.SUCESS.code, CodeEnum.SUCESS.message);
}
log.error("更新失?。?);
return new ResponseVo<>(CodeEnum.FAILUIRE.code, CodeEnum.FAILUIRE.message);
}
@PostMapping("/searchPage")
public ResponseVo<PageVo<User>> searchPage(@RequestBody Page<User> page){
Page<User> userPage = userService.searchPage(page);
PageVo<User> userPageVo = new PageVo<>();
BeanUtils.copyProperties(userPage, userPageVo);
return new ResponseVo<>(userPageVo);
}
@PostMapping("/searchByAges")
public ResponseVo<List<User>> searchByAges(@RequestBody List<Long> ages){
List<User> list = userService.searchByAges(ages);
return new ResponseVo<>(list);
}
@PostMapping("/searchByNames")
public ResponseVo<List<UserVo>> searchByNames(@RequestBody List<String> names){
List<UserVo> list = userService.selectBynames(names);
return new ResponseVo<>(list);
}
}三、設置時間自動填充
1.實體類日期類型設置
需要再實體類的日期屬性上使用@TableField(fill = FieldFill.INSERT)
FiledFill為枚舉類型
public enum FieldFill {
/**
* 默認不處理
*/
DEFAULT,
/**
* 插入時填充字段
*/
INSERT,
/**
* 更新時填充字段
*/
UPDATE,
/**
* 插入和更新時填充字段
*/
INSERT_UPDATE
}實體類:
@TableField(value = "create_time", fill = FieldFill.INSERT)
//后端傳給前端的時間格式
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
//前端傳給后端的時間格式
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonAlias("create_time")
private Date createTime;
@JsonAlias("update_time")
@TableField(value = "update_time" ,fill = FieldFill.INSERT_UPDATE)
private LocalDateTime updateTime;2.自定義元對象處理器
實現(xiàn) MetaObjectHandler接口
package com.zhuang.mp.handler;
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import lombok.extern.slf4j.Slf4j;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component;
import java.time.LocalDateTime;
import java.util.Date;
@Slf4j
@Component
public class MyMetaObjectHandler implements MetaObjectHandler {
@Override
public void insertFill(MetaObject metaObject) {
log.info("start insert fill ....");
this.strictInsertFill(metaObject, "createTime", Date.class, new Date()); // 起始版本 3.3.0(推薦使用)
this.strictInsertFill(metaObject, "updateTime", Date.class, new Date()); // 起始版本 3.3.0(推薦使用)
// // 或者
// this.strictInsertFill(metaObject, "createTime", () -> LocalDateTime.now(), LocalDateTime.class); // 起始版本 3.3.3(推薦)
// // 或者
// this.fillStrategy(metaObject, "createTime", LocalDateTime.now()); // 也可以使用(3.3.0 該方法有bug)
}
@Override
public void updateFill(MetaObject metaObject) {
log.info("start update fill ....");
this.strictUpdateFill(metaObject, "updateTime", LocalDateTime.class, LocalDateTime.now()); // 起始版本 3.3.0(推薦)
// // 或者
// this.strictUpdateFill(metaObject, "updateTime", () -> LocalDateTime.now(), LocalDateTime.class); // 起始版本 3.3.3(推薦)
// // 或者
// this.fillStrategy(metaObject, "updateTime", LocalDateTime.now()); // 也可以使用(3.3.0 該方法有bug)
}
}四、分頁查詢
1.配置類中創(chuàng)建bean
ackage com.zhuang.mp.config;
import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class MyBatisPlusConfig {
//分頁查詢
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor(){
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
//添加分頁插件
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
return interceptor;
}
}2.調用分頁查詢的方法
@Resource
private UserMapper userMapper;
Page<User> userPage = userMapper.selectPage(page, null);五、多對一映射、一對多映射
舉例: 一個老師有多名學生是一對多關系,而一個學生只能有一個老師是多對一關系
1.數(shù)據(jù)庫表設計
設計studen和teacher表, 兩個表中的字段命名需要不一樣,否則在映射過程中會有問題。
1、student表

java實體類:包含老師屬性
package com.zhuang.mp.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonInclude;
import io.swagger.annotations.ApiModel;
import lombok.Data;
import java.io.Serializable;
/**
* <p>
*
* </p>
*
* @author mrzhuang
* @since 2022-12-21
*/
@ApiModel(value = "Student對象", description = "")
@Data
@JsonInclude(JsonInclude.Include.NON_NULL)
public class Student implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(type = IdType.AUTO)
private Integer sid;
@TableField(value = "s_name")
private String studentName;
private Integer tid;
@TableField(exist = false)
private Teacher teacher;
}
2、teacher表:

java實體類:
package com.zhuang.mp.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonInclude;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
/**
* <p>
*
* </p>
*
* @author mrzhuang
* @since 2022-12-21
*/
@ApiModel(value = "Teacher對象", description = "教師")
@Data
@JsonIgnoreProperties(ignoreUnknown = true)
@JsonInclude(value = JsonInclude.Include.NON_NULL)
public class Teacher implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty("老師id")
@TableId(value = "t_id", type = IdType.AUTO)
private Integer tid;
@ApiModelProperty("老師姓名")
@TableField(value = "t_name")
private String teacherName;
@ApiModelProperty("學生集合")
@TableField(exist = false)
private List<Student> studentList;
}2.多對一映射:association
StudentMapper.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.zhuang.mp.mapper.StudentMapper">
<resultMap id="stuResultMap" type="Student">
<id property="sid" column="s_id"/>
<result property="studentName" column="s_name"/>
<result property="tid" column="t_id"/>
<association property="teacher" javaType="teacher">
<id property="tid" column="t_id"/>
<result property="teacherName" column="t_name"/>
</association>
</resultMap>
<select id="selectByMap" resultMap="stuResultMap">
select * from student s left join teacher t on s.t_id = t.t_id
</select>
</mapper>StudentMapper類:
package com.zhuang.mp.mapper;
import com.zhuang.mp.entity.Student;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import java.util.List;
/**
* <p>
* Mapper 接口
* </p>
*
* @author mrzhuang
* @since 2022-12-21
*/
public interface StudentMapper extends BaseMapper<Student> {
/**
* 查詢所有學生
* @return /
*/
List<Student> selectByMap();
}StudentController:
package com.zhuang.mp.controller;
import com.zhuang.mp.entity.Student;
import com.zhuang.mp.service.IStudentService;
import com.zhuang.mp.vo.ResponseVo;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.List;
/**
* <p>
* 前端控制器
* </p>
*
* @author mrzhuang
* @since 2022-12-21
*/
@RestController
@RequestMapping("/mp/student")
public class StudentController {
@Resource
IStudentService studentService;
@GetMapping("/selectByMap")
public ResponseVo<List<Student>> selsectByMap(){
/**
* 查詢所有學生
*/
List<Student> students = studentService.selectByMap();
return new ResponseVo<>(students);
}
}結果:

3.一對多映射:collection
TeacherMapper.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.zhuang.mp.mapper.TeacherMapper">
<resultMap id="techResultMap" type="teacher">
<id property="tid" column="t_id"/>
<result property="teacherName" column="t_name"/>
<collection property="studentList" ofType="student">
<id property="sid" column="s_id"/>
<result property="studentName" column="s_name"/>
<result property="tid" column="t_id"/>
</collection>
</resultMap>
<select id="selectByMap" resultMap="techResultMap">
select * from teacher t right join student s on s.t_id = t.t_id
</select>
</mapper>TeacherMapper類:
package com.zhuang.mp.mapper;
import com.zhuang.mp.entity.Teacher;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import java.util.List;
/**
* <p>
* Mapper 接口
* </p>
*
* @author mrzhuang
* @since 2022-12-21
*/
public interface TeacherMapper extends BaseMapper<Teacher> {
/**
* 查詢全部老師
* @return
*/
List<Teacher> selectByMap();
}TeacherController:
package com.zhuang.mp.controller;
import com.zhuang.mp.entity.Teacher;
import com.zhuang.mp.service.ITeacherService;
import com.zhuang.mp.vo.ResponseVo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.List;
/**
* <p>
* 前端控制器
* </p>
*
* @author mrzhuang
* @since 2022-12-21
*/
@Api(tags = "教師接口")
@RestController
@RequestMapping("/mp/teacher")
public class TeacherController {
@Resource
ITeacherService teacherService;
@ApiOperation("獲得全部的老師")
@GetMapping("searchAll")
public ResponseVo<List<Teacher>> searchAll(){
List<Teacher> teachers = teacherService.searchAll();
return new ResponseVo<>(teachers);
}
@ApiOperation("一對一多映射")
@GetMapping("/selectByMap")
public ResponseVo<List<Teacher>> selectByMap(){
List<Teacher> teachers = teacherService.selectByMap();
return new ResponseVo<>(teachers);
}
}結果:

六、代碼生成器
1.maven依賴
<!--逆向代碼生成模版-->
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>2.3.28</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
</dependency>2.代碼編寫
package com.zhuang.generator;
import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.OutputFile;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
import java.util.Collections;
/**
* @program: mp
* @description: 逆向代碼生成器
* @author: mrzhuang
* @create: 2022-12-17 20:56
**/
public class CodeGenerator {
public static void main(String[] args) {
String url = "jdbc:mysql://1.13.152.218:3306/mp?useUnicode=true&useSSL=false&characterEncoding=utf8&serverTimezone=Asia/Shanghai";
String username = "root";
String password = "zhuang123";
String author = "mrzhuang";
String outputDir = "/Users/mrzhuang/Downloads/mp/generator";
String parent = "com.zhuang";
String moduleName = "mp";
String xmlPath = "/Users/mrzhuang/Downloads/mp/generator";
//String tablename = "user";
FastAutoGenerator.create(url, username, password)
.globalConfig(builder -> {
builder.author(author) // 設置作者
.enableSwagger() // 開啟 swagger 模式
.fileOverride() // 覆蓋已生成文件
.outputDir(outputDir); // 指定輸出目錄
})
.packageConfig(builder -> {
builder.parent(parent) // 設置父包名
.moduleName(moduleName) // 設置父包模塊名
.pathInfo(Collections.singletonMap(OutputFile.xml, xmlPath)); // 設置mapperXml生成路徑
})
.strategyConfig(builder -> {
builder.addInclude("teacher").addInclude("student"); // 設置需要生成的表名
// .addTablePrefix("t_", "c_"); // 設置過濾表前綴
})
.templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,默認的是Velocity引擎模板
.execute();
}
}總結
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
- SpringBoot同時集成Mybatis和Mybatis-plus框架
- SpringBoot+MyBatis-Plus實現(xiàn)分頁示例
- Springboot整合mybatis-plus使用pageHelper進行分頁(使用步驟)
- SpringBoot+MyBatis-Plus實現(xiàn)分頁的項目實踐
- Springboot集成Mybatis-plus、ClickHouse實現(xiàn)增加數(shù)據(jù)、查詢數(shù)據(jù)功能
- springboot項目中mybatis-plus@Mapper注入失敗問題
- springboot+mybatis-plus實現(xiàn)自動建表的示例
- SpringBoot中使用MyBatis-Plus實現(xiàn)分頁接口的詳細教程
- SpringBoot?mybatis-plus使用json字段實戰(zhàn)指南
- springboot3.2整合mybatis-plus詳細代碼示例
- 全網(wǎng)最新springboot整合mybatis-plus的過程
相關文章
Spring?Cloud?中自定義外部化擴展機制原理及實戰(zhàn)記錄
這篇文章主要介紹了Spring?Cloud?中自定義外部化擴展機制原理及實戰(zhàn),本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-02-02
線程局部變量的實現(xiàn)?ThreadLocal使用及場景介紹
這篇文章主要為大家介紹了線程局部變量的實現(xiàn)?ThreadLocal使用及場景詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-01-01
SpringBoot Redis緩存數(shù)據(jù)實現(xiàn)解析
這篇文章主要介紹了SpringBoot Redis緩存數(shù)據(jù)實現(xiàn)解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-01-01
springMVC框架下JQuery傳遞并解析Json數(shù)據(jù)
json作為一種輕量級的數(shù)據(jù)交換格式,在前后臺數(shù)據(jù)交換中占據(jù)著非常重要的地位,這篇文章主要介紹了springMVC框架下JQuery傳遞并解析Json數(shù)據(jù),有興趣的可以了解一下。2017-01-01
Spring?Cloud?Gateway整合sentinel?實現(xiàn)流控熔斷的問題
本文給大家介紹下?spring?cloud?gateway?如何整合?sentinel實現(xiàn)流控熔斷,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友一起看看吧2022-02-02

