SpringJpa学习教程-03-高级查询

10 篇文章 0 订阅
5 篇文章 0 订阅

SpringJpa学习教程-03高级查询

分页查询

/**
* 根据分页条件进行查询,将结果保存在Page当中
*/
Page<User> findByName(String name, Pageable pageable);
/**
* 根据分页条件进行查询,但不查询总记录数
*/
Slice<user> findByName(String name, Pageable pageable);
/**
* 根据所选择的排序条件进行排序
*/
List<User> findByName(String name, Sort sort);
/**
* 根据条件进行查询,并把结果保存到List集合中
*/
List<User> findByName(String name, Pageable pageable);

限制查询结果条数

User findFirstByName(String name);
User findTopByName(String name);
Page<User> findFirst10ByName(String name, Pageable pageable);
Page<User> findTop3ByName(String name, Pageable pageable);

异步查询

@Async
Future<User> findFirstByEmail(String email);

返回特定字段

1. 通过接口

interface PropertiesNeedOnly {
	String getName();
	int getAge();
}

使用:

interface UserRepository<User, Long>{
	List<PropertiesNeedOnly> findByName(String name);
}

2. 通过@Value或SpEL表达式

interface PropertiesNeedOnly {
	/**
	* 返回的名称是'名字-Email'的形式
	*/
	@Value("#{target.name + '-' + target.email}")
	String getName();
	int getAge();
}

3. 通过DTO的方式

@Data
@AllArgsConstructor//必须存在
class PropertiesDto {
	private final String name, email;
}

4. 动态泛型化

interface UserRepository<User, Long>{
	List<T> findByName(String name, Class<T> type);
}

调用:

PropertiesDto person = userRepository.findByName("hello",PropertiesDto.class);
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值