分析一下别人写的开源代码吧
开源代码的地址:https://gitee.com/yidao620/springboot-bucket?_from=gitee_search
package com.xncoding.pos.service;
import com.xncoding.pos.dao.entity.User;
import com.xncoding.pos.dao.repository.UserMapper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.ValueOperations;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.concurrent.TimeUnit;
@Service
@Transactional
public class UserService {
private Logger logger = LoggerFactory.getLogger(this.getClass());
@Resource
private UserMapper userMapper;
@Resource
private RedisTemplate<String, User> redisTemplate;
/**
* 创建用户
* 不会对缓存做任何操作
*/
public void createUser(User user) {
logger.info("创建用户start...");
userMapper.insert(user);
}
/**
* 获取用户信息
* 如果缓存存在,从缓存中获取城市信息
* 如果缓存不存在,从 DB 中获取城市信息,然后插入缓存
*
* @param id 用户ID
* @return 用户
*/
public User getById(int id) {
logger.info("获取用户start...");
// 从缓存中获取用户信息
String key = "user_" + id;
ValueOperations<String, User> operations = redisTemplate.opsForValue();
// 缓存存在
boolean hasKey = redisTemplate.hasKey(key);
if (hasKey) {
User user = operations.get(key);
logger.info("从缓存中获取了用户 id = " + id);
return user;
}
// 缓存不存在,从 DB 中获取
User user = userMapper.selectById(id);
// 插入缓存
operations.set(key, user, 10, TimeUnit.SECONDS);
return user;
}
/**
* 更新用户
* 如果缓存存在,删除
* 如果缓存不存在,不操作
*
* @param user 用户
*/
public void updateUser(User user) {
logger.info("更新用户start...");
userMapper.updateById(user);
int userId = user.getId();
// 缓存存在,删除缓存
String key = "user_" + userId;
boolean hasKey = redisTemplate.hasKey(key);
if (hasKey) {
redisTemplate.delete(key);
logger.info("更新用户时候,从缓存中删除用户 >> " + userId);
}
}
/**
* 删除用户
* 如果缓存中存在,删除
*/
public void deleteById(int id) {
logger.info("删除用户start...");
userMapper.deleteById(id);
// 缓存存在,删除缓存
String key = "user_" + id;
boolean hasKey = redisTemplate.hasKey(key);
if (hasKey) {
redisTemplate.delete(key);
logger.info("更新用户时候,从缓存中删除用户 >> " + id);
}
}
}
用作者的话进行总结:
* 创建用户
* 不会对缓存做任何操作
* 获取用户信息
* 如果缓存存在,从缓存中获取城市信息
* 如果缓存不存在,从 DB 中获取城市信息,然后插入缓存
* 更新用户
* 如果缓存存在,删除
* 如果缓存不存在,不操作
* 删除用户
* 如果缓存中存在,删除
在这段程序中出现了@Service这样的注解。说实话我已经忍它很久了。又是标签。。。让我想起了xml以及html。
所以对于标签来说,重要的是标签所代表的意思。类似于一个单词的说明。或者用以前教我的一位老师的话来说,这是属于“所见即所得”的东西。
又是一次考察英文的时候。spring总是喜欢时不时地考察别人的英文。。。发明spring的人一定是个典型的西方人。记忆中是澳大利亚人。。。
所以当需要的时候可以像查字典一样去查阅 也是可以的。比如参考博文:https://www.cnblogs.com/zq-ding/p/11535728.html
编程中可以像查字典解决问题的场景还有:java中的类。html和xml中的标签。
正是因为“字”太多。所以总是离不开查阅“字典”。
再罗列一下吧:
java中的类
html中的标签
xml中的标签
js中常用的语句
jquery中常用的语句
mysql中常用的语句
orcal中的常用语句
mongodb中的常用语句
各种“保姆”的注解
常用前端框架的常用语句
常用的linux语句
常用的maven语句(可选)
。。。。。。
可见各种标签、语句充斥着编程的世界。怪不得有人说“我们不生产代码,我们只做代码的搬运工”这句话呢,先不考虑这句话是不是有道理,但是我觉得适当地总结这些常用的东西,或许真的能够提高效率。当然这是个很难说的问题。。。
网友评论