SpringBoot开发案例之整合Spring-data-jpa进阶篇


前言


有人说 从 jdbc->jdbctemplate->hibernation/mybatis 再到 jpa,真当开发人员的学习时间不要钱?我觉得到 h/m 这一级的封装已经有点过了,再往深处走就有病了。


还有人说JPA 很反人类(一个面试官),还举了一个很简单举了例子说:一个数据库如果有 50 个字段,那你写各种条件查询不是要写很多?就是应该用类似 SQL 的方式来查询啊?


其实在我看来,存在即合理,人们总是向着好的方向去发展,学习什么不需要成本,底层语言牛逼倒是去学啊,不还是看不懂,弄不明白。很多知识对于程序员来说,都是一通百通,查询文档就是了,最主要的是能方便以后的开发即可。


对于反人类这一说,只能说 to young to simple,JPA的初衷肯定也不会是让你写一个几十个字段的查询,顶多一到两个而已,非要这么极端?再说JPA也是提供了EntityManager来实现SQL或者HQL语句查询的不是,JPA本质上还是集成了Hibernate的很多优点的。


进阶查询


需求:


学生表(app_student)、班级表(app_class)、当然表结构比较简单,比如这时候我们需要查询学生列表,但是需要同时查询班级表的一些数据,并以JSON或者实体的方式返回给调用者。


本次需求,主要实现JPA的以下几个特性:


  • 封装EntityManager基类

  • 多表查询返回一个List

  • 多表查询返回一个Map

  • 多表查询返回一个实体


Entitymanager的核心概念图:



实现


班级表:



学生表:



封装接口 DynamicQuery:



封装实现 DynamicQueryImpl:



封装实现 DynamicQueryImpl:



业务 IStudentService:



业务实现 StudentServiceImpl:



接口测试:



Swagger2测试



返回List< Object[] >:



返回List< Map< Object, Object > >:



返回List< Student >:



源码地址:https://gitee.com/52itstyle/spring-data-jpa


end

厉害了,蚂蚁金服!创造了中国自己的数据库OceanBase

微服务架构下分布式事务解决方案 —— 阿里GTS

如何利用秒级监控进行MongoDB故障排查

带你走进神经网络的“前世今生”

更多精彩

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值