前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用Springboot整合redis与mysql

使用Springboot整合redis与mysql

作者头像
用户1289394
发布2021-01-06 00:04:54
1.1K0
发布2021-01-06 00:04:54
举报
文章被收录于专栏:Java学习网

使用layui实现前台页面,实现用户的增删改查环境参数

开发工具:IDEA

基础环境:Maven+JDK8

主要技术:SpringBoot、redis,mysql,swagger框架与layui前段框架

SpringBoot版本:2.2.6

实现步骤如下:1.添加依赖

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-web</artifactId>

</dependency>

<!-- mybatisPlus 核心库 -->

<dependency>

<groupId>com.baomidou</groupId>

<artifactId>mybatis-plus-boot-starter</artifactId>

<version>3.0.6</version>

</dependency>

<!-- thymeleaf模板引擎 -->

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-thymeleaf</artifactId>

</dependency>

<!--redis-->

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-data-redis</artifactId>

</dependency>

<!-- mysql驱动包 -->

<dependency>

<groupId>mysql</groupId>

<artifactId>mysql-connector-java</artifactId>

<scope>runtime</scope>

<version>5.1.41</version>

</dependency>

<!-- 引入阿里数据库连接池 -->

<dependency>

<groupId>com.alibaba</groupId>

<artifactId>druid</artifactId>

<version>1.1.6</version>

</dependency>

<dependency>

<groupId>org.projectlombok</groupId>

<artifactId>lombok</artifactId>

<optional>true</optional>

</dependency>

<!--mybatis-plus 代码生成器依赖-->

<dependency>

<groupId>com.baomidou</groupId>

<artifactId>mybatis-plus-generator</artifactId>

<version>3.3.1.tmp</version>

</dependency>

<!-- swagger 依赖 -->

<dependency>

<groupId>io.springfox</groupId>

<artifactId>springfox-swagger2</artifactId>

<version>2.9.2</version>

</dependency>

<dependency>

<groupId>io.springfox</groupId>

<artifactId>springfox-swagger-ui</artifactId>

<version>2.9.2</version>

</dependency>

2.实体层

package com.ckf.springboot_mysql_redis.entity;

import com.baomidou.mybatisplus.annotation.IdType;

import com.baomidou.mybatisplus.annotation.TableId;

import java.time.LocalDateTime;

import java.io.Serializable;

import com.baomidou.mybatisplus.annotation.TableName;

import lombok.AllArgsConstructor;

import lombok.Data;

import lombok.EqualsAndHashCode;

import lombok.NoArgsConstructor;

import lombok.experimental.Accessors;

import org.springframework.stereotype.Component;

/**

* @author 安详的苦丁茶

* @since 2020-05-02

*/

@Component

@Data

@AllArgsConstructor

@NoArgsConstructor

@TableName("users")

public class Users implements Serializable {

private static final long serialVersionUID = 1L;

@TableId(type = IdType.AUTO)

private Integer userId;

private String userIp;

private String userName;

private String password;

private String email;

private String registerTime;

private String updateTime;

private Integer age;

private String telephoneNumber;

private String nickname;

private Integer state;

}

3.业务service层

package com.ckf.springboot_mysql_redis.service;

import com.baomidou.mybatisplus.core.metadata.IPage;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;

import com.ckf.springboot_mysql_redis.entity.Users;

import com.baomidou.mybatisplus.extension.service.IService;

import com.ckf.springboot_mysql_redis.model.ResultFormat;

/**

* <p>

* 服务类

* </p>

*

* @author 安详的苦丁茶

* @since 2020-05-02

*/

public interface UsersService extends IService<Users> {

/**

* 全查询用户信息

* @return

*/

IPage<Users> selectUsersList(Page<Users> page);

/**

* 添加用户

* @param users

* @return

*/

ResultFormat saveUsers(Users users);

/**

* 修改用户

* @param users

* @return

*/

ResultFormat updateUsers(Users users);

/**

* 删除用户

* @param userId

* @return

*/

Integer deleteUsersId(Integer userId);

}

4. service实现层

package com.ckf.springboot_mysql_redis.service.impl;

import com.baomidou.mybatisplus.core.conditions.AbstractWrapper;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;

import com.baomidou.mybatisplus.core.metadata.IPage;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;

import com.ckf.springboot_mysql_redis.controller.UsersController;

import com.ckf.springboot_mysql_redis.entity.Users;

import com.ckf.springboot_mysql_redis.mapper.UsersMapper;

import com.ckf.springboot_mysql_redis.model.ResultFormat;

import com.ckf.springboot_mysql_redis.service.UsersService;

import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;

import com.ckf.springboot_mysql_redis.utils.RedisUtil;

import com.ckf.springboot_mysql_redis.utils.ResultUtil;

import com.ckf.springboot_mysql_redis.utils.TimeUtitl;

import org.slf4j.Logger;

import org.slf4j.LoggerFactory;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.stereotype.Service;

import org.springframework.transaction.annotation.Transactional;

/**

* <p>

* 服务实现类

* </p>

*

* @author 安详的苦丁茶

* @since 2020-05-02

*/

@Service

@Transactional

public class UsersServiceImpl extends ServiceImpl<UsersMapper, Users> implements UsersService {

private Logger logger = LoggerFactory.getLogger(UsersService.class);

@Autowired

private UsersMapper usersMapper;

@Autowired

private RedisUtil redisUtil;

/**

* 全查询

* @param page

* @return

*/

@Override

public IPage<Users> selectUsersList(Page<Users> page) {

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

return usersMapper.selectUsersList(page);

}

/**

* 添加

* @param users

* @return

*/

@Override

public ResultFormat saveUsers(Users users) {

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

/**

* 查询用户名称是否存在

* 如果存在那就返回提示已经存在

* 如果不存在就执行添加

*/

AbstractWrapper abstractWrapper = new QueryWrapper<Users>();

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

Users UsersWrapperGet = usersMapper.selectOne(abstractWrapper);

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

if (UsersWrapperGet != null) {

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

}

users.setState(0);

Integer insert = usersMapper.insert(users);

if (insert > 0) {

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

redisUtil.set("users:" + users.getUserIp(), users);

}

return ResultUtil.success();

}

/**

* 修改

* @param users

* @return

*/

@Override

public ResultFormat updateUsers(Users users) {

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

/**

* 查询用户名称是否存在

* 如果存在那就返回提示已经存在

* 如果不存在就执行添加

*/

AbstractWrapper Wrapper = new QueryWrapper<Users>();

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

Users UsersWrapperGet = usersMapper.selectOne(Wrapper);

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

if (UsersWrapperGet != null) {

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

}

users.setState(0);

Integer updateById = usersMapper.updateById(users);

if (updateById > 0) {

redisUtil.set("users:" + users.getUserId(), users);

}

return ResultUtil.success();

}

/**

* 删除

* @param userId

* @return

*/

@Override

public Integer deleteUsersId(Integer userId) {

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

Integer deleteById = usersMapper.deleteById(userId);

if (deleteById > 0) {

Long delete = redisUtil.delete("users:" + String.valueOf(userId));

}

return deleteById;

}

}

5.controller层

package com.ckf.springboot_mysql_redis.controller;

import com.baomidou.mybatisplus.core.metadata.IPage;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;

import com.ckf.springboot_mysql_redis.entity.Users;

import com.ckf.springboot_mysql_redis.model.ResultFormat;

import com.ckf.springboot_mysql_redis.model.ResultFormatPaging;

import com.ckf.springboot_mysql_redis.service.UsersService;

import com.ckf.springboot_mysql_redis.utils.ResultPagingUtil;

import com.ckf.springboot_mysql_redis.utils.ResultUtil;

import com.ckf.springboot_mysql_redis.utils.TimeUtitl;

import io.swagger.annotations.Api;

import io.swagger.annotations.ApiImplicitParam;

import io.swagger.annotations.ApiImplicitParams;

import io.swagger.annotations.ApiOperation;

import org.slf4j.Logger;

import org.slf4j.LoggerFactory;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.web.bind.annotation.*;

import java.util.List;

/**

* <p>

* 前端控制器

* </p>

*

* @author 安详的苦丁茶

* @since 2020-05-02

*/

@Api(tags = "用户信息管理")

@RestController

@RequestMapping("/users")

public class UsersController {

private Logger logger = LoggerFactory.getLogger(UsersController.class);

@Autowired

private UsersService usersService;

/**

* 分页全查询用户信息

*

* @return

*/

@ApiImplicitParams(value = {

@ApiImplicitParam(name = "page", value = "当前页", required = true, dataType = "Integer", defaultValue = "1"),

@ApiImplicitParam(name = "limit", value = "每页记录数", required = true, dataType = "Integer", defaultValue = "5")

})

/**

* 全查询分类信息

*

* @return

*/

@ApiOperation("查询用户信息接口")

@GetMapping("/list")

public ResultFormatPaging pgUsersList(Integer page, Integer limit) {

logger.info("-------------------进入用户查询controller层--------------------------");

if (page != null && limit != null) {

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

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

System.out.println("ok");

Page<Users> users = new Page<>(page, limit);

System.out.println("ok");

IPage<Users> pgUsersIPage = usersService.selectUsersList(users);

List<Users> pgUsersList = pgUsersIPage.getRecords();

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

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

}

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

}

/**

* 添加用户信息

*

* @param users

* @return

*/

@ApiOperation("添加用户信息接口")

@PostMapping("/save")

@ResponseBody

public ResultFormat savePgSorts(Users users) {

users.setRegisterTime(TimeUtitl.dateTime());

users.setUpdateTime(TimeUtitl.dateTime());

ResultFormat insert = usersService.saveUsers(users);

if (insert.getCode() == 200) {

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

return ResultUtil.success();

}

if (insert.getCode() == 101) {

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

return ResultUtil.error(insert.getCode(), insert.getMsg());

}

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

}

/**

* 修改用户信息

*

* @param users

* @return

*/

@ApiOperation("修改用户信息接口")

@PutMapping("/update")

@ResponseBody

public ResultFormat updatePgSorts(Users users) {

users.getRegisterTime();

users.setUpdateTime(TimeUtitl.dateTime());

ResultFormat insert = usersService.saveUsers(users);

if (insert.getCode() == 200) {

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

return ResultUtil.success();

}

if (insert.getCode() == 101) {

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

return ResultUtil.error(insert.getCode(), insert.getMsg());

}

return ResultUtil.error(100, "修改失败");

}

/**

* 修改用户状态

*

* @param users

* @return

*/

@ApiOperation("修改用户状态接口")

@PutMapping("/delete")

public ResultFormat deletePgSorts(Users users) {

logger.info("users=={}", users);

boolean flag = usersService.updateById(users);

if (flag) {

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

return ResultUtil.success();

} else {

logger.info("修改失败");

return ResultUtil.error(100, "修改失败");

}

}

}

6.application.yml

# 服务器端口

server:

port: 8888

# Spring Boot 的数据源配置

spring:

redis:

database: 0

host: localhost # Redis服务器地址

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

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

pool:

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

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

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

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

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

datasource:

url: jdbc:mysql://localhost:3306/use_redis?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8

username: root

password: root

driver-class-name: com.mysql.jdbc.Driver

# 使用druid数据源

type: com.alibaba.druid.pool.DruidDataSource

filters: stat

maxActive: 20

initialSize: 1

maxWait: 60000

minIdle: 1

timeBetweenEvictionRunsMillis: 60000

minEvictableIdleTimeMillis: 300000

validationQuery: select 'x'

testWhileIdle: true

testOnBorrow: false

testOnReturn: false

poolPreparedStatements: true

maxPoolPreparedStatementPerConnectionSize: 20

maxOpenPreparedStatements: 20

mybatis-plus:

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

mapper-locations: classpath:mapper/*.xml

global-config:

#字段策略 0:"忽略判断",1:"非 NULL 判断"),2:"非空判断"

field-strategy: 1

configuration:

# 是否将sql打印到控制面板(该配置会将sql语句和查询的结果都打印到控制台)

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

# PageHelper分页插件

pagehelper:

helperDialect: mysql

reasonable: true

supportMethodsArguments: true

params: count=countSql

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-12-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Java学习网 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档