前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SpringDataJPA笔记(5)-子查询

SpringDataJPA笔记(5)-子查询

作者头像
yingzi_code
发布2019-08-31 12:23:29
1.6K0
发布2019-08-31 12:23:29
举报

SpringDataJPA-子查询

子查询也是一种视图查询

在数据库实际使用的时候,为了一些业务的设计,有些时候我们需要映射视图到实体,这个时候就可以使用Subselect注解来标注一个视图类

STEP1 构建视图类
代码语言:javascript
复制
@Data
@Entity
@Subselect("select d.id as id, d.name as dog_name, c.name as cat_name from dog_tb d left join cat_tb c on d.id=c.id")
@Synchronize({"dog_tb", "cat_tb"})
public class SubSelectEntity implements Serializable {

    private static final long serialVersionUID = -3795682088296075408L;
    @Id
    private Long id;

    private String dogName;

    private String catName;
}

@Subselect

子查询的注解,里面是原生的sql语句

@Synchronize

需要同步的表,如果表变动了,查询视图会更新这个数据

备注:可以使用@Immutable 来标注这个类不可以修改,因为视图是可读不可写的,修改数据需要修改对应表的数据

STEP2 构建repository接口

和普通的实体类构建repository接口一样

代码语言:javascript
复制
public interface SubSelectRepository extends JpaRepository<SubSelectEntity, Long>, JpaSpecificationExecutor<SubSelectEntity>, Serializable {
}
STEP3 使用

使用也和普通的实体类的使用方法一致,就不详细写了,写两个方法测试一下

代码语言:javascript
复制
@Slf4j
@RestController
@RequestMapping("/chapter/five")
public class ChapterFiveController {

    @Autowired
    private SubSelectRepository subSelectRepository;

    @ApiOperation(value = "findAll", httpMethod = "GET")
    @GetMapping("/find")
    public List<SubSelectEntity> findAll() {
        return subSelectRepository.findAll();
    }

    @ApiOperation(value = "findPage", httpMethod = "GET")
    @GetMapping("/page")
    public Page<SubSelectEntity> findPage(@RequestParam int pageSize, @RequestParam int pageNum) {
        Pageable pageable = PageRequest.of(pageNum, pageSize);
        return subSelectRepository.findAll(pageable);
    }
}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019年05月08日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • STEP1 构建视图类
  • STEP2 构建repository接口
  • STEP3 使用
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档