JPA的问题

公司最近切换了持久层框架:

         spring-boot-starter-data-jpa

         2.2.2.RELEASE

使用的时候还是需要详细回忆一下ORM全自动框架的用法:

1、持久层需要继承JpaRepository<数据库实体entity,ID类型>    QuerydslPredicateExecutor<数据库实体entity>

 

JpaRepository可以使我们使用一些基本的增删改查通用方法,例如findAll,findById等,需要注意的是,这些方法的关键字在你的方法中不能随意使用,否则会造成关键字冲突,所以持久层方法越命名不能和这些关键字有任何相似度的匹配

QuerydslPredicateExecutor可以使我们能够使用BooleanExpression的条件查询,maven编辑项目会生成前缀为Q的库对象实体的查询条件类实体

此接口配合maven插件com.querydsl.apt.jpa.JPAAnnotationProcessor,编译项目即可生成条件对象,注意下图中Q开头的一些对象,可以直接当成条件来比较运算,相当于我们sql中的where条件

注意下图getBooleanExperssion方法将我们的条件拼装起来,然后findAll()中传入条件与pageAble对象达到条件查询与分页查询的效果,淡然还可以再pageAble中传入排序对象来达到排序的效果

2、QuerydslPredicateExecutor->多表查询的大杀器

可以像下图中一样多表关联查询

有时候我们需要用one实体中的某个字段条件但是却为null,我们可以加上@QueryInit注解来解决条件实体为空的问题

3、有时候我们想用hql的方式来查询

用对象的方式来写sql

 

4、更可以用原生sql的方式来写

注意注解运用与取值方式

5、库实体的命名

 

6、Entity与Dto之间的转换

用到了mapstruct插件

依赖包

编译需maven插件

另外的话还有一种SpringData Redis可以直接接口访问redis了解一下

另外需要注意的一个问题就是herbnet的n+1的问题,

当表存在一对多的问题的话,很有可能会产生查询多次pet的问题,这个问题有待详细研究,由于开发难度问题,所以herbnet一直没流行起来,

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值