使用Springboot整合redis與mysql


使用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

 

ajax的代碼就不放出來了哈,各有各的寫法。

 

這里使用是layui實現界面的

效果圖如下:

 

首頁

 

 

 

添加頁面

 

 

 

修改頁面

 

 

 

Api文檔

 

項目已托管碼雲

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

 

    待更新....

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM