SpringBoot实战:整合Redis、mybatis,封装RedisUtils工具类等(附源码)

result = true;

} catch (Exception e) {

e.printStackTrace();

}

return result;

}

/**

* 写入缓存设置时效时间

* @param key

* @param value

* @return

*/

public boolean set(final String key, Object value, Long expireTime) {

boolean result = false;

try {

ValueOperations<Serializable, Object> operations = redisTemplate.opsForValue();

operations.set(key, value);

redisTemplate.expire(key, expireTime, TimeUnit.SECONDS);

result = true;

} catch (Exception e) {

e.printStackTrace();

}

return result;

}

/**

* 批量删除对应的value

* @param keys

*/

public void remove(final String… keys) {

for (String key : keys) {

remove(key);

}

}

/**

* 删除对应的value

* @param key

*/

public void remove(final String key) {

if (exists(key)) {

redisTemplate.delete(key);

}

}

/**

* 判断缓存中是否有对应的value

* @param key

* @return

*/

public boolean exists(final String key) {

return redisTemplate.hasKey(key);

}

/**

* 读取缓存

* @param key

* @return

*/

public Object get(final String key) {

Object result = null;

ValueOperations<Serializable, Object> operations = redisTemplate.opsForValue();

result = operations.get(key);

return result;

}

/**

* 哈希 添加

* @param key

* @param hashKey

* @param value

*/

public void hmSet(String key, Object hashKey, Object value) {

HashOperations<String, Object, Object> hash = redisTemplate.opsForHash();

hash.put(key, hashKey, value);

}

/**

* 哈希获取数据

* @param key

* @param hashKey

* @return

*/

public Object hmGet(String key, Object hashKey) {

HashOperations<String, Object, Object> hash = redisTemplate.opsForHash();

return hash.get(key, hashKey);

}

/**

* 列表添加

* @param k

* @param v

*/

public void lPush(String k, Object v) {

ListOperations<String, Object> list = redisTemplate.opsForList();

list.rightPush(k, v);

}

/**

* 列表获取

* @param k

* @param l

* @param l1

* @return

*/

public List lRange(String k, long l, long l1) {

ListOperations<String, Object> list = redisTemplate.opsForList();

return list.range(k, l, l1);

}

/**

* 集合添加

* @param key

* @param value

*/

public void add(String key, Object value) {

SetOperations<String, Object> set = redisTemplate.opsForSet();

set.add(key, value);

}

/**

* 集合获取

* @param key

* @return

*/

public Set setMembers(String key) {

SetOperations<String, Object> set = redisTemplate.opsForSet();

return set.members(key);

}

/**

* 有序集合添加

* @param key

* @param value

* @param scoure

*/

public void zAdd(String key, Object value, double scoure) {

ZSetOperations<String, Object> zset = redisTemplate.opsForZSet();

zset.add(key, value, scoure);

}

/**

* 有序集合获取

* @param key

* @param scoure

* @param scoure1

* @return

*/

public Set rangeByScore(String key, double scoure, double scoure1) {

ZSetOperations<String, Object> zset = redisTemplate.opsForZSet();

redisTemplate.opsForValue();

return zset.rangeByScore(key, scoure, scoure1);

}

//第一次加载的时候将数据加载到redis中

public void saveDataToRedis(String name) {

double index = Math.abs(name.hashCode() % size);

long indexLong = new Double(index).longValue();

boolean availableUsers = setBit(“availableUsers”, indexLong, true);

}

//第一次加载的时候将数据加载到redis中

public boolean getDataToRedis(String name) {

double index = Math.abs(name.hashCode() % size);

long indexLong = new Double(index).longValue();

return getBit(“availableUsers”, indexLong);

}

/**

* 有序集合获取排名

* @param key 集合名称

* @param value 值

*/

public Long zRank(String key, Object value) {

ZSetOperations<String, Object> zset = redisTemplate.opsForZSet();

return zset.rank(key,value);

}

/**

* 有序集合获取排名

* @param key

*/

public Set<ZSetOperations.TypedTuple> zRankWithScore(String key, long start,long end) {

ZSetOperations<String, Object> zset = redisTemplate.opsForZSet();

Set<ZSetOperations.TypedTuple> ret = zset.rangeWithScores(key,start,end);

return ret;

}

/**

* 有序集合添加

* @param key

* @param value

*/

public Double zSetScore(String key, Object value) {

ZSetOperations<String, Object> zset = redisTemplate.opsForZSet();

return zset.score(key,value);

}

/**

* 有序集合添加分数

* @param key

* @param value

* @param scoure

*/

public void incrementScore(String key, Object value, double scoure) {

ZSetOperations<String, Object> zset = redisTemplate.opsForZSet();

zset.incrementScore(key, value, scoure);

}

/**

* 有序集合获取排名

* @param key

*/

public Set<ZSetOperations.TypedTuple> reverseZRankWithScore(String key, long start,long end) {

ZSetOperations<String, Object> zset = redisTemplate.opsForZSet();

Set<ZSetOperations.TypedTuple> ret = zset.reverseRangeByScoreWithScores(key,start,end);

return ret;

}

/**

* 有序集合获取排名

* @param key

*/

public Set<ZSetOperations.TypedTuple> reverseZRankWithRank(String key, long start, long end) {

ZSetOperations<String, Object> zset = redisTemplate.opsForZSet();

Set<ZSetOperations.TypedTuple> ret = zset.reverseRangeWithScores(key, start, end);

return ret;

}

}

控制层

RedisController.java

package com.cyb.mobile.controller;

import com.cyb.mobile.utils.RedisUtils;

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

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

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

/**

* @ClassName:TestController

* @Description:Redis控制器

* @Author:chenyb

* @Date:2020/8/17 12:07 上午

* @Versiion:1.0

*/

@RestController

public class RedisController {

@Autowired

private RedisUtils redisUtils;

@RequestMapping(“setAndGet”)

public String test(String k,String v){

redisUtils.set(k,v);

return (String) redisUtils.get(k);

}

}

测试

SpringBoot整合Mybatis


添加依赖

org.mybatis.spring.boot

mybatis-spring-boot-starter

2.1.3

mysql

mysql-connector-java

com.alibaba

druid

1.1.23

完整pom.xml
<?xml version="1.0" encoding="UTF-8"?>

<project xmlns=“http://maven.apache.org/POM/4.0.0” xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance”

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

4.0.0

org.springframework.boot

spring-boot-starter-parent

2.3.3.RELEASE

 

com.cyb

chenyb-mobile-redis

0.0.1-SNAPSHOT

chenyb-mobile-redis

Demo project for Spring Boot

<java.version>1.8</java.version>

org.springframework.boot

spring-boot-starter-web

org.springframework.boot

spring-boot-starter-test

test

org.junit.vintage

junit-vintage-engine

io.projectreactor

reactor-test

test

org.springframework.boot

spring-boot-starter-data-redis

org.mybatis.spring.boot

mybatis-spring-boot-starter

2.1.3

mysql

mysql-connector-java

com.alibaba

druid

1.1.23

org.springframework.boot

spring-boot-maven-plugin

设置配置文件

application.properties

# 连接的那个数据库

spring.redis.database=0

# redis服务的ip地址

spring.redis.host=192.168.199.142

# redis端口号

spring.redis.port=6379

# redis的密码,没设置过密码,可为空

spring.redis.password=12345678

# 端口号

server.port=8081

# ====数据库相关配置=

spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

spring.datasource.url=jdbc:mysql://localhost:3306/nba?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai

spring.datasource.username=root

spring.datasource.password=root

# 使用阿里巴巴druid数据源,默认使用自带

spring.datasource.type=com.alibaba.druid.pool.DruidDataSource

#开启控制台打印sql

mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl

# mybatis 下划线转驼峰配置,两者都可以

# mybatis.configuration.mapUnderscoreToCamelCase=true

mybatis.configuration.map-underscore-to-camel-case=true

# 配置扫描

mybatis.mapper-locations=classpath:mapper/*.xml

# 实体类所在的包别名

mybatis.type-aliases-package=com.cyb.mobile.domain

启动类上添加扫描路径

NbaPlayer.java(实体类)

NbaPlayerMapper.xml
<?xml version="1.0" encoding="UTF-8" ?>

SELECT * FROM nba_player

NbaPlayerMapper.java

NbaPlayerService.java

NbaPlayerServiceImpl.java

控制器(Controller)

总结

面试前的“练手”还是很重要的,所以开始面试之前一定要准备好啊,不然也是耽搁面试官和自己的时间。

我自己是刷了不少面试题的,所以在面试过程中才能够做到心中有数,基本上会清楚面试过程中会问到哪些知识点,高频题又有哪些,所以刷题是面试前期准备过程中非常重要的一点。

面试题及解析总结

三年Java开发,刚从美团、京东、阿里面试归来,分享个人面经

大厂面试场景

三年Java开发,刚从美团、京东、阿里面试归来,分享个人面经

知识点总结

三年Java开发,刚从美团、京东、阿里面试归来,分享个人面经

Mapper 3.0//EN"

“http://mybatis.org/dtd/mybatis-3-mapper.dtd”>

SELECT * FROM nba_player

NbaPlayerMapper.java

NbaPlayerService.java

NbaPlayerServiceImpl.java

控制器(Controller)

总结

面试前的“练手”还是很重要的,所以开始面试之前一定要准备好啊,不然也是耽搁面试官和自己的时间。

我自己是刷了不少面试题的,所以在面试过程中才能够做到心中有数,基本上会清楚面试过程中会问到哪些知识点,高频题又有哪些,所以刷题是面试前期准备过程中非常重要的一点。

面试题及解析总结

[外链图片转存中…(img-ISgXygmd-1714463663700)]

大厂面试场景

[外链图片转存中…(img-DYZNle6v-1714463663701)]

知识点总结

[外链图片转存中…(img-MUXogrbi-1714463663701)]

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

  • 20
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值