Spring data JPA--02

Spring data JPA

spirng data jpa是spring提供的一套简化JPA开发的框架,按照约定好的规则进行**【方法命名】去写dao层接口,就可以在不写接口实现的情况下,实现对数据库的访问和操作。同时提供了很多除了CRUD之外的功能,如分页、排序、复杂查询等等。
Spring Data JPA 让我们解脱了DAO层的操作,基本上所有CRUD都可以依赖于它来实现,在实际的工作工程中,推荐使用Spring Data JPA + ORM(如:hibernate)完成操作,这样在切换不同的ORM框架时提供了极大的方便,同时也使数据库层操作更加简单,方便解耦。
SpringData Jpa 极大简化了数据库访问层代码。 如何简化的呢? 使用了
SpringDataJpa**,我们的dao层中只需要写接口,就自动具有了增删改查、分页查询等方法。

Spring Data JPA实例

1.最好在父maven项目中设置spring data统一版本管理依赖: 因为不同的spring data子项目发布时间版本不一样,你自己维护很麻烦, 这样不同的spring data子项目能保证是统一版本。

在这里插入图片描述
2.在子项目中添加:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

xml

在这里插入图片描述
在这里插入图片描述
JavaConfig

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
pojo

在这里插入图片描述
在这里插入图片描述
customerRepository

在这里插入图片描述

测试
在这里插入图片描述

在这里插入图片描述
使用 Spring Data Repositories
Spring Data repository 抽象的目标是显着减少为各种持久性存储实现数据访问层所需的样板代码量。

CrudRepository

在这里插入图片描述
CrudRepository之上,有一个PagingAndSortingRepository抽象,它添加了额外的方法来简化对实体的分页访问:

customerRepository
在这里插入图片描述
测试:

在这里插入图片描述
在这里插入图片描述
自定义操作:
jpql(原生SQL)
a. @Query
i. 查询如果返回单个实体 就用pojo接收 , 如果是多个需要通过集合
ii. 参数设置方式

  1. 索引 : ?数字
  2. 具名: :参数名 结合@Param注解指定参数名字
    iii. 增删改:
  3. 要加上事务的支持:
  4. 如果是插入方法:一定只能在hibernate下才支持 (Insert into
    …select )

在这里插入图片描述
customerRepository

在这里插入图片描述
在这里插入图片描述
测试

在这里插入图片描述
在这里插入图片描述
规定方法名
支持的查询方法主题关键字(前缀)
决定当前方法作用
只支持查询和删除。

在这里插入图片描述
支持的查询方法谓词关键字和修饰符决定查询条件

在这里插入图片描述

在这里插入图片描述

Query by Example
b. 只支持查询
i. 不支持嵌套或分组的属性约束,如 firstname = ?0 or (firstname = ?1
and lastname = ?2).
ii. 只支持字符串 start/contains/ends/regex 匹配和其他属性类型的精确匹
配。

实现:
1.将Repository继承QueryByExampleExecutor

在这里插入图片描述
2.测试代码

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
Specifications
在之前使用QuerybyExample只能针对字符串进行条件设置,那如果希望对所有类型支持,可以使用Specifications。
实现
1.继承接口JpaSpecificationExecutor

在这里插入图片描述
测试:

在这里插入图片描述
Root:查询哪个表(关联查询) = from
CriteriaQuery:查询哪些字段,排序是什么 =组合(order by . where )
CriteriaBuilder:条件之间是什么关系,如何生成一个查询条件,每一个查询条件都是什么类型(> between in…) = where
Predicate(Expression): 每一条查询条件的详细描述。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
Querydsl:
QueryDSL是基于ORM框架或SQL平台上的一个通用查询框架。借助QueryDSL可以在任何支持的ORM框架或SQL平台上以通用API方式构建查询。
JPA是QueryDSL的主要集成技术,是JPQL和Criteria查询的代替方法。目前QueryDSL支持的平台包括JPA,JDO,SQL,Mongodb 等等。。。
Querydsl扩展能让我们以链式方式代码编写查询方法。该扩展需要一个接口QueryDslPredicateExecutor,它定义了很多查询方法。
接口继承了该接口,就可以使用该接口提供的各种方法了。
customerQueryDSLRepository
在这里插入图片描述
引入依赖
版本号:

在这里插入图片描述
在这里插入图片描述
添加maven插件
这个插件是为了让程序自动生成query type(查询实体,命名方式为:“Q”+对应实体名)。

在这里插入图片描述
在这里插入图片描述
执行mvn compile之后,可以找到该target/generated-sources/java,然后IDEA标示为源代码目录即可.

在这里插入图片描述
测试:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

总结:这么多方法掌握一种即可,这里建议掌握JPQL方式就行

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值