写一个springboot增删改查,并且使用缓存
时间: 2023-10-24 10:13:06 浏览: 107
基于springboot的增删改查
好的,下面是一个简单的示例代码:
首先,我们需要引入Spring Boot和MyBatis的依赖:
```xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-cache</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
</dependency>
```
然后,我们需要在`application.properties`文件中配置缓存:
```properties
# 开启缓存支持
spring.cache.type=redis
# Redis配置
spring.redis.host=localhost
spring.redis.port=6379
spring.redis.password=
```
接着,我们定义一个实体类`User`,并创建对应的Mapper接口和XML映射文件:
```java
public class User {
private Long id;
private String name;
private Integer age;
// getter和setter方法省略
}
@Mapper
public interface UserMapper {
@Select("SELECT * FROM user WHERE id = #{id}")
User findById(Long id);
@Insert("INSERT INTO user(name, age) VALUES(#{name}, #{age})")
@Options(useGeneratedKeys = true, keyProperty = "id")
void save(User user);
@Update("UPDATE user SET name=#{name}, age=#{age} WHERE id=#{id}")
void update(User user);
@Delete("DELETE FROM user WHERE id=#{id}")
void delete(Long id);
}
```
最后,我们创建一个Service类`UserService`,并在其中使用缓存:
```java
@Service
@CacheConfig(cacheNames = "user")
public class UserService {
@Autowired
private UserMapper userMapper;
@Cacheable(key = "#id")
public User findById(Long id) {
return userMapper.findById(id);
}
@CachePut(key = "#user.id")
public void save(User user) {
userMapper.save(user);
}
@CachePut(key = "#user.id")
public void update(User user) {
userMapper.update(user);
}
@CacheEvict(key = "#id")
public void delete(Long id) {
userMapper.delete(id);
}
}
```
以上代码中,我们使用了`@CacheConfig`注解指定缓存名称为`user`,并在`findById`、`save`、`update`、`delete`方法上使用了`@Cacheable`、`@CachePut`和`@CacheEvict`注解来启用缓存。具体来说:
- `@Cacheable`注解表示该方法的返回值应该被缓存,当下一次调用该方法时,如果缓存中已经存在对应的结果,则直接返回缓存中的结果,否则执行方法并将返回值存入缓存。
- `@CachePut`注解表示该方法的返回值应该被缓存或更新缓存中已有的值,当下一次调用该方法时,会执行方法并将返回值存入缓存。
- `@CacheEvict`注解表示该方法执行后应该从缓存中删除对应的结果。
需要注意的是,我们使用了Redis作为缓存,需要先在本地安装Redis并启动。
阅读全文