Spring Data Jpa流查询

Laughing
2021-07-21 / 0 评论 / 1,623 阅读 / 正在检测是否收录...
温馨提示:
本文最后更新于2021年07月21日,已超过1276天没有更新,若内容或图片失效,请留言反馈。

Spring Data Jpa可以通过使用Java 8 Stream作为返回类型,来逐步处理查询方法的结果,而不是简单的将查询结果包装在Stream数据存储中。

接口定义

public interface SysUserRepository extends JpaRepository<SysUser, Long> {

    /**
     * 根据用户名称查找列表
     *
     * @param userName 用户名称
     * @return 列表
     */
    List<SysUser> findByUserName(String userName);

//    @Query("select u from SysUser u")
    Stream<SysUser> readAllBy();

    Stream<SysUser> streamAllBy();
    
}

使用

@RestController
@RequestMapping("/user")
public class UserController {

    @Resource
    private SysUserRepository sysUserRepository;

    @GetMapping("/findAll")
    @Transactional
    public List<SysUser> findAll() {
        try (Stream<SysUser> sysUserStream = sysUserRepository.streamAllBy()) {
            return sysUserStream.collect(Collectors.toList());
        } catch (Exception ex) {
            ex.printStackTrace();
            return new ArrayList<>();
        }
    }

}

注意事项

  1. 必须通过try catch关闭流
  2. 方法必须有@Transactional注解
0

评论 (0)

取消