spring-boot-starter-data-redis 2.1 以上支持以repository的方式存取对象了。
1,导入依赖包
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
2,定义实体
@Data
public class Cat {
//在需要条件查询的字段上加上@Indexed
@Indexed
private String name;
private String color;
}
@Data
@ToString
@RedisHash(value = "user")
public class TUser {
@Id
private String id;
//在需要条件查询的字段上加上@Indexed
@Indexed
private String name;
private String password;
private Cat cat;
}
3,定义repository
支持方法名和example查询,前提查询字段必须是加了@Index注解。
public interface UserDao extends CrudRepository<TUser,String>,QueryByExampleExecutor<TUser> {
TUser findByName(String name);
}
4,新增,查询测试
@RunWith(SpringRunner.class)
@SpringBootTest
public class RedisDemoApplicationTests {
@Autowired
private UserDao userDao;
@Test
public void save() {
Cat cat = new Cat();
cat.setColor("hongse");
cat.setName("小狗");
TUser user = new TUser();
user.setId("2");
user.setName("haha");
user.setPassword("heiheihei");
user.setCat(cat);
userDao.save(user);
}
@Test
public void findOne(){
TUser user = userDao.findById("2").get();
System.out.println(user);
}
@Test
public void findByExample(){
TUser user = new TUser();
Cat cat = new Cat();
cat.setName("花花");
user.setCat(cat);
System.out.println(userDao.findOne(Example.of(user)));
}
@Test
public void findByName(){
System.out.println(userDao.findByName("hahaha"));
}
}
5,Example查询局限
官方文档的一段话。
The following list shows properties not supported by Query by Example:
Case-insensitive matching
Regex, prefix/contains/suffix String-matching
Querying of Associations, Collection, and Map-like properties
Inclusion of null values from the criteria
findAll with sorting
可见对于list,map里包含对象的example查询,是无效的。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架