快速,持续,稳定,傻瓜式
支持Mysql,Sqlserver数据同步

使用Springboot整合redis与mysql

在线QQ客服:1922638

专业的SQL Server、MySQL数据库同步软件

  • 开发工具:IDEA
  • 基本环境:Maven + JDK8
  • 主要技术:SpringBoot,redis,mysql,swagger框架和layui前框架
  • SpringBoot版本:2.2.6

步骤如下:

1.添加依赖项

  \ lt;依赖项

\ lt; groupId org.springframework.boot \ lt;/groupId

\ lt; artifactId spring-boot-starter-web \ lt;/artifactId \\ u>

\ lt;/依存关系

\\!-mybatisPlus核心库-\\ ugt26

\ lt;依赖项

\ lt; groupId com.baomidou \ lt;/groupId

\ lt; artifactId mybatis-plus-boot-starter \ lt;/artifactId \\ u>

\ lt;版本\ 3.0 6 \ lt;/版本gt;

\ lt;/依存关系

\\!-百里香叶模板引擎-\ gt;

\ lt;依赖项

\ lt; groupId org.springframework.boot \ lt;/groupId

\ lt; artifactId spring-boot-starter-thymeleaf \ lt;/artifactId \\ u>

\ lt;/依存关系

\\!-redis-\\ u>

\ lt;依赖项

\ lt; groupId org.springframework.boot \ lt;/groupId

\ lt; artifactId spring-boot-starter-data-redis \ lt;/artifactId \\ u>

\ lt;/依存关系

\\!-mysql驱动程序包-\\ u>

\ lt;依赖项

\ lt; groupId mysql \ lt;/groupId

\ lt; artifactId mysql-connector-java \ lt;/artifactId \\ u>

\ lt;范围运行时lt;/作用域

\ lt;版本\ 5.1 41 \ lt;/版本gt;

\ lt;/依存关系

\\!-介绍Ali数据库连接池->

\ lt;依赖项

\ lt; groupId com.alibaba \ lt;/groupId

\ lt; artifactId 德鲁伊/artifactId \\ u>

\ lt;版本\ 1.1 6 \ lt;/版本gt;

\ lt;/依存关系

\ lt;依赖项

\ lt; groupId org.projectlombok \ lt;/groupId

\ lt; artifactId 龙目岛/artifactId \\ u>

\ lt;可选的 \ lt;/可选\\ u>

\ lt;/依存关系

\\!-mybatis-plus代码生成器依赖性-\\ ugt26

\ lt;依赖项

\ lt; groupId com.baomidou \ lt;/groupId

\ lt; artifactId mybatis-plus-generator \ lt;/artifactId \\ u>

\ lt;版本\ 3.3 1 .tmp \ lt;/版本gt;

\ lt;/依存关系

\\!-swagger依赖性-\\ ugt26;

\ lt;依赖项

\ lt; groupId io.springfox \ lt;/groupId

\ lt; artifactId springfox-swagger2 \\;/artifactId \\ u>

\ lt;版本\ 2.9 2 \ lt;/版本gt;

\ lt;/依存关系

\ lt;依赖项

\ lt; groupId io.springfox \ lt;/groupId

\ lt; artifactId springfox-swagger-ui \ lt;/artifactId \\ u>

\ lt;版本\ 2.9 2 \ lt;/版本gt;

\ lt;/依存关系

2.物理层

  包com.ckf.springboot_mysql_redis.entity;

导入com.baomidou.mybatisplus.annotation.IdType;

导入com.baomidou.mybatisplus.annotation.TableId;

导入java.time.LocalDateTime;

导入java.io.Serializable;

导入com.baomidou.mybatisplus.annotation.TableName;

导入lombok.AllArgsConstructor;

导入lombok.Data;

导入lombok.EqualsAndHashCode;

导入lombok.NoArgsConstructor;

导入lombok.experimental.Accessors;

导入org.springframework.stereotype.Component;

@零件

@数据

@AllArgsConstructor

@NoArgsConstructor

@TableName( " 用户 "

public 用户实施Serializable {

私有 静态 final long serialVersionUID = 1L ;

@TableId(类型 = IdType.AUTO)

私有 整数userId;

私有 字符串userIp;

私有 字符串userName;

私有 字符串密码;

私有 字符串电子邮件;

私有 字符串registerTime;

私有 字符串updateTime;

私有 整数年龄;

私有 字符串TelephoneNumber;

私有 字符串昵称;

私有 整数状态;

}

3.业务服务层

  包com.ckf.springboot_mysql_redis.service;

导入com.baomidou.mybatisplus.core.metadata.IPage;

导入com.baomidou.mybatisplus.extension.plugins.pagination.Page;

导入com.ckf.springboot_mysql_redis.entity.Users;

导入com.baomidou.mybatisplus.extension.service.IService;

导入com.ckf.springboot_mysql_redis.model.ResultFormat;

public 接口 UsersService扩展了IService \ lt;用户 {

IPage \ lt;用户 selectUsersList(页面\\ users> 页面);

ResultFormat saveUsers(用户用户);

ResultFormat updateUsers(用户用户);

整数deleteUsersId(整数userId);

}

4.服务实现层

  包com.ckf.springboot_mysql_redis.service.impl;

导入com.baomidou.mybatisplus.core.conditions.AbstractWrapper;

导入com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;

导入com.baomidou.mybatisplus.core.metadata.IPage;

导入com.baomidou.mybatisplus.extension.plugins.pagination.Page;

导入com.ckf.springboot_mysql_redis.controller.UsersController;

导入com.ckf.springboot_mysql_redis.entity.Users;

导入com.ckf.springboot_mysql_redis.mapper.UsersMapper;

导入com.ckf.springboot_mysql_redis.model.ResultFormat;

导入com.ckf.springboot_mysql_redis.service.UsersService;

导入com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;

导入com.ckf.springboot_mysql_redis.utils.RedisUtil;

导入com.ckf.springboot_mysql_redis.utils.ResultUtil;

导入com.ckf.springboot_mysql_redis.utils.TimeUtitl;

导入org.slf4j.Logger;

导入org.slf4j.LoggerFactory;

导入org.springframework.beans.factory.annotation.Autowired;

导入org.springframework.stereotype.Service;

导入org.springframework.transaction.annotation.Transactional;

@服务

@交易

public UsersServiceImpl扩展了ServiceImpl \ lt; UsersMapper,用户\\ u> 实现UsersService {

私有 Logger logger = LoggerFactory.getLogger(UsersService。 );

@Autowired

私有 UsersMapper usersMapper;

@Autowired

私有 RedisUtil redisUtil;

@Override

public IPage \ lt;用户 selectUsersList(页面\ lt;用户\ gt; 页面){

logger.info( " -----------------进入服务实现层以完全查询用户信息----------------- " );

返回 usersMapper.selectUsersList(页面);

}

@Override

public ResultFormat saveUsers(用户用户){

logger.info( " -----------------进入服务实现层以添加用户信息----------------- " );

AbstractWrapper abstractWrapper = new QueryWrapper \ lt;用户 ();

abstractWrapper.eq( " user_name " ,users.getUserName());

Users UsersWrapperGet = usersMapper.selectOne(abstractWrapper);

logger.info( " pgLabelsWrapperGet = {} " ,UsersWrapperGet);

如果(UsersWrapperGet!= null ){

return ResultUtil.error( 101 " 用户名已存在 " );

}

users.setState( 0 );

整数插入 = usersMapper.insert(用户);

如果(插入\ gt; 0 ){

redisUtil.lSet( " userId " ,users.getUserId());

redisUtil。 设置" 用户: " + users.getUserIp(),用户);

}

返回 ResultUtil.success();

}

@Override

public ResultFormat updateUsers(用户用户){

logger.info( " -----------------进入服务实现层以修改用户信息----------------- " );

= QueryWrapper \ lt;用户 ();

Wrapper.eq( " 用户名 " ,users.getUserName());

用户UsersWrapperGet = usersMapper.selectOne(Wrapper);

logger.info( " pgLabelsWrapperGet = {} " ,UsersWrapperGet);

如果(UsersWrapperGet!= null ){

return ResultUtil.error( 101 " 用户名已存在 " );

}

users.setState( 0 );

整数updateById = usersMapper.updateById(用户);

如果(updateById \ gt; 0 ){

redisUtil。 设置" 用户: " + users.getUserId(),用户);

}

返回 ResultUtil.success();

}

@Override

public 整数deleteUsersId(整数userId){

logger.info( " -----------------进入服务实现层以删除用户信息----------------- " );

整数deleteById = usersMapper.deleteById(userId);

如果(deleteById \ gt; 0 ){

长删除 = redisUtil.delete(" 用户: " + String.valueOf(userId));

}

返回 deleteById;

}

}

5.controller层

  包com.ckf.springboot_mysql_redis.controller;

导入com.baomidou.mybatisplus.core.metadata.IP年龄;

导入com.baomidou.mybatisplus.extension.plugins.pagination.Page;

导入com.ckf.springboot_mysql_redis.entity.Users;

导入com.ckf.springboot_mysql_redis.model.ResultFormat;

导入com.ckf.springboot_mysql_redis.model.ResultFormatPaging;

导入com.ckf.springboot_mysql_redis.service.UsersService;

导入com.ckf.springboot_mysql_redis.utils.ResultPagingUtil;

导入com.ckf.springboot_mysql_redis.utils.ResultUtil;

导入com.ckf.springboot_mysql_redis.utils.TimeUtitl;

导入io.swagger.annotations.Api;

导入io.swagger.annotations.ApiImplicitParam;

导入io.swagger.annotations.ApiImplicitParams;

导入io.swagger.annotations.ApiOperation;

导入org.slf4j.Logger;

导入org.slf4j.LoggerFactory;

导入org.springframework.beans.factory.annotation.Autowired;

导入org.springframework.web.bind.annotation。 * ;

导入java.util.List;

@Api(标签 = " 用户信息管理 "

@RestController

@RequestMapping( " /用户 "

public UsersController {

私有记录器logger = LoggerFactory.getLogger(UsersController。 );

@Autowired

私有 UsersService usersService;

@ApiImplicitParams(值 = {

@ApiImplicitParam(名称 = " 页面 " ,值= " 当前页面 " ,必需= true ,dataType = " 整数 " ,defaultValue = " 1 " ),

@ApiImplicitParam(名称 = " limit " ,值= " 每页记录数 " ,必需= true ,dataType = " 整数 " ,defaultValue = " 5 "

})

@ApiOperation( " 查询用户信息界面 "

@GetMapping( " /list "

public ResultFormatPaging pgUsersList(整数页,整数限制){

logger.info( " -------------------输入用户查询控制器层-------------------------- " );

如果(页面!= \ \ limit!= null ){

logger.info( " page = {} " ,第页);

logger.info( " limit = {} " ,限制);

系统。 out .println(" 好的 " );

页面 \ lt;用户 users = 页面\ lt; \ gt; (页面,限制);

系统。 out .println(" 好的 " );

IPage \ lt;用户 pgUsersIPage = usersService.selectUsersList(用户);

列表 \ lt;用户 pgUsersList = pgUsersIPage.getRecords();

logger.info( " usersList == {} " ,pgUsersList);

return ResultPagingUtil.pagingSuccess( 0 ,( int )pgUsersIPage.getTotal(),pgUsersList);

}

return ResultPagingUtil.pagingError( 200 0 " 系统急,查询为异常 " );

}

@ApiOperation( " 添加用户信息界面 "

@PostMapping( " /保存 "

@ResponseBody

公共 ResultFormat savePgSorts(用户,用户){

users.setRegisterTime(TimeUtitl.dateTime());

users.setUpdateTime(TimeUtitl.dateTime());

ResultFormat insert = usersService.saveUsers(用户);

如果(insert.getCode()== 200 ){

logger.info( " 成功添加 " );

返回 ResultUtil.success();

}

如果(insert.getCode()== 101 ){

logger.info( " 用户名已存在 " );

返回 ResultUtil.error(insert.getCode(),insert.getMsg());

}

return ResultUtil.error( 100 " 添加失败 " );

}

@ApiOperation( " 编辑用户信息界面 "

@PutMapping( " /更新 "

@ResponseBody

公共 ResultFormat updatePgSorts(用户,用户){

users.getRegisterTime();

users.setUpdateTime(TimeUtitl.dateTime());

ResultFormat insert = usersService.saveUsers(用户);

如果(insert.getCode()== 200 ){

logger.info( " 成功修改 " );

返回 ResultUtil.success();

}

如果(insert.getCode()== 101 ){

logger.info( " 用户名已存在 " );

返回 ResultUtil.error(insert.getCode(),insert.getMsg());

}

return ResultUtil.error( 100 " 编辑失败 " );

}

@ApiOperation( " 修改用户状态界面 "

@PutMapping( " /删除 "

公共 ResultFormat deletePgSorts(用户,用户){

logger.info( " 用户== {} " ,用户);

布尔标志 = usersService.updateById(用户);

如果 (标志){

logger.info( " 成功修改 " );

返回 ResultUtil.success();

} 其他

logger.info( " 无法修改 " );

return ResultUtil.error( 100 " 编辑失败 " );

}

}

}

6.application.yml

  #服务器端口

服务器:

端口: 8888

#Spring Boot数据源配置

弹簧:

Redis:

数据库: 0

主机:localhost#Redis服务器地址

端口: 6379 #Redis服务器连接端口

密码:#Redis服务器连接密码(默认为空)

池:

max -active: 200 #连接池中的最大连接数(使用负数表示无限制的值)

max -idle: 10 #连接池中最大的空闲连接

max -wait:- 1 #连接池的最大阻塞等待时间(使用负值表示没有限制)

min -idle: 0 #连接池中最小的空闲连接

超时: 1000 #连接超时(毫秒)

数据源:

网址:jdbc:mysql: // 本地主机:3306/use_redis? useUnicode = true \ characterEncoding = utf8 \ zeroDateTimeBehavior = convertToNull \ useSSL = true \ serverTimezone = GMT%2B8

用户名:root

密码:root

驱动程序--名称:com.mysql.jdbc.Driver

#使用druid数据源

类型:com.alibaba.druid.pool.DruidDataSource

过滤器:统计

maxActive: 20

initialSize: 1

maxWait: 60000

minIdle: 1

timeBetweenEvictionRunsMillis: 60000

minEvictableIdleTimeMillis: 300000

validationQuery: 选择 " x "

testWhileIdle: true

testOnBorrow:

testOnReturn: false

poolPreparedStatements: true

maxPoolPreparedStatementPerConnectionSize: 20

maxOpenPreparedStatements: 20

mybatis -加:

#xml扫描,多个目录用逗号或分号分隔(告诉Mapper相应的XML文件位置)

mapper -locations:类路径:mapper /* 。 XML文件

全局配置

#Field strategy 0:"忽略判断",1:"非NULL判断"),2:"非空判断"

领域策略:1

组态:

#是否将sql打印到控制面板(此配置将打印sql语句并将查询结果查询到控制台)

log-impl:org.apache.ibatis.logging.stdout.StdOutImpl

#PageHelper分页插件

pagehelper:

helperDialect:mysql

合理:正确

supportMethodsArguments:正确

参数:count = countSql

Ajax代码不会被发布,每个代码都有其自己的编写方式。

在这里,我们使用layui来实现接口

效果图如下:

主页

添加页面

编辑页面

Api文档

该项目由Code Cloud托管

地址:https://gitee.com/ckfeng/springboot_mysql_redis.git

>

待更新…。

相关推荐

 
QQ在线咨询
售前咨询热线
QQ1922638