一、整合Redis
1.Redis简介
待补充
2.整合
2.1.添加依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
2.2.启动redis服务,注意设置密码
参考https://www.cnblogs.com/springlight/p/6288902.html
2.3.添加配置
application.properties :
# redis 配置
spring.redis.host=127.0.0.1
spring.redis.port=6379
spring.redis.password=123456
spring.redis.database=1
spring.redis.pool.max-active=8
spring.redis.pool.max-wait=-1
spring.redis.pool.max-idle=500
spring.redis.pool.min-idle=0
spring.redis.timeout=0
Spring Data Redis 为我们提供 RedisTemplate 和 StringRedisTemplate 两个模板进行数据操作,它们主要 的访问方法如下:
方法 | 说明 |
---|---|
opsForValue() | 操作简单属性的数据 |
opsForList() | 操作含有 list 的数据 |
opsForSet() | 操作含有 set 的数据 |
opsForZSet() | 操作含有 zset 的数据 |
opsForHash() | 操作含有 hash 的数据 |
2.4.编写代码
实体类与之前学习中使用的一致。
Controller层
@RestController
@RequestMapping("/user")
public class UserController {
@Autowired
private UserService userService;
private Logger logger = LoggerFactory.getLogger(this.getClass());
@RequestMapping("/redisCreate")
public void redisCreate(){
logger.info("-------------userController redisCreate start-------------");
User user = new User();
user.setUsercode("123456");
user.setUsername("张三");
user.setPassword("avdsd");
user.setSalt("12321");
userService.create(user);
logger.info("-------------userController redisCreate end-------------");
}
@RequestMapping("/redisGet")
public String redisGet(){
logger.info("-------------userController redisGet start-------------");
String str = userService.getAllUsersByRedis("user1");
logger.info("-------------userController redisGet end-------------");
return str;
}
}
Service层
接口省略
实现类
@Service("userService")
public class UserServiceImpl implements UserService{
@Autowired
private RedisDaoImpl redisDao;
private Logger logger = LoggerFactory.getLogger(this.getClass());
@Override
public void create(User user) {
logger.info("-------------create start-------------");
redisDao.set("user1",user.toString());
logger.info("-------------create start-------------");
}
@Override
public String getAllUsersByRedis(String key){
logger.info("-------------getAllUsersByRedis start-------------");
String users = redisDao.get(key);
logger.info("-------------getAllUsersByRedis start-------------");
return users;
}
}
持久化Dao层,此处使用具体的模板类
@Component
public class RedisDaoImpl{
@Autowired
private StringRedisTemplate stringRedisTemplate;
private Logger logger = LoggerFactory.getLogger(this.getClass());
public void set(String key, String value) {
this.stringRedisTemplate.opsForValue().set(key, value);
}
public String get(String key) {
return this.stringRedisTemplate.opsForValue().get(key);
}
public void delete(String key) {
this.stringRedisTemplate.delete(key);
}
}
2.5启动服务测试
http://localhost:8080/user/redisCreate
打开redis客户端,通过命令行查询测试结果
http://localhost:8080/user/redisGet
二、整合MongoDB
1.MongoDB简介
待补充
2.整合
2.1添加依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
2.2添加配置
spring.data.mongodb.host=127.0.0.1
spring.data.mongodb.port=27017
spring.data.mongodb.database=test
2.3编码实现
Spring Data MongoDB 提供了 MongoTemplate 模板 和 Repository 让开发者进行数据访问。
1).使用 MongoTemplate
@Component
public class MongodbDao {
@Autowired
private MongoTemplate mongoTemplate;
public void insert(User user) {
this.mongoTemplate.insert(user);
}
public void deleteById(int id) {
Criteria criteria = Criteria.where("id").is(id);
Query query = new Query(criteria);
this.mongoTemplate.remove(query, User.class);
}
public void update(User user) {
Criteria criteria = Criteria.where("id").is(user.getId());
Query query = new Query(criteria);
Update update = new Update();
update.set("username", user.getUsername());
this.mongoTemplate.updateMulti(query, update, User.class);
}
public User getById(String id) {
Criteria criteria = Criteria.where("id").is(id);
Query query = new Query(criteria);
return this.mongoTemplate.findOne(query, User.class);
}
public List<User> getAll() {
List<User> userList = this.mongoTemplate.findAll(User.class);
return userList;
}
}
2).使用 Repository
public interface DepartmentRepository extends MongoRepository<User, String> {
}
接口有了基本的CURD的功能。如果你想自定义一些查询,比如根据firstName来查询,或者根据lastName来查询,只需要定义一个方法即可。注意firstName严格按照存入的mongodb的字段对应。在典型的java的应用程序,写这样一个接口的方法,需要自己实现,但是在springboot中,你只需要按照格式写一个接口名和对应的参数就可以了,因为springboot已经帮你实现了。
如:
public interface DepartmentRepository extends MongoRepository<User, String> {
User findByFirstName(String firstName);
}