博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SpringDataJpa原理及使用
阅读量:4152 次
发布时间:2019-05-25

本文共 1719 字,大约阅读时间需要 5 分钟。

--------------------------------SpringDataJpa原理及使用--------------------------------
一、SpringDataJpa(理解)
1、JPA是Java Persistence API,Java持久化API,是SUN公司推出的一套接口,一套标准
  Hibernate是一个具体的ORM的持久层框架,实现了JPA接口
2、Spring Data是Spring开发团队提供的一套标准API和不同持久层整合技术实现
  Spring Data的出现就是为了简化、统一持久层的各种实现技术API
  Spring Data在项目里以spring-data-commons这个jar存在
3、Spring Data JPA既实现了Spring Data接口,又实现了JPA接口,也是为了简化持久层的开发
  Spring Data JPA在项目里以spring-data-jpa这个jar存在
4、SpringDataJpa原理,参考文档:"SpringDataJpa原理.docx"
核心:Spring AOP的思想
a.拿到SimpleJpaRepository的所有方法 具体执行操作的类SimpleJpaRepository
b.拿到自定义的接口的所有方法
private final Map<Method, RepositoryQuery> queries = new ConcurrentHashMap<Method, RepositoryQuery>();
公用方法(SimpleJpaRepository)+自定义方法(findBy...  @Query)
二、SpringDataJpa查询Query的使用(重要)
第一种:根据方法命名规则自动生成 findBy
1)基于一列等值查询  findBy列名  例如:findByName(String name)
// 根据收派标准名称查询 
public List<Standard> findByName(String name);
2)基于一列模糊查询findBy列名Like 例如:findByNameLike(String name)
3)基于两列等值查询findBy列名And列名 例如:findByUsernameAndPassword(String username,String password)
第二种:不按命名规则写的查询方法,可以配置@Query绑定JPQL语句或者SQL语句
@Query(value="from Standard where name = ?" ,nativeQuery=false)
// nativeQuery 为 false 配置JPQL,为true 配置SQL 
public List<Standard> queryName(String name);
第三种:不按命名规则写的查询方法,配置@Query,没写语句,实体类@NamedQuery定义(不常用)
@Query
public List<Standard> queryName2(String name);
@NamedQueries({
@NamedQuery(name="Standard.queryName2",query="from Standard where name=?")
})
三、@Query+@Modifying注解完成修改、删除操作(重要)
1、修改
@Query(value="update Standard set minLength=?2 where id =?1")
@Modifying
public void updateMinLength(Integer id , Integer minLength);
2、测试
Junit单元测试,要添加事务,设置事务不回滚
@Test
@Transactional
@Rollback(false)
public void testUpdate(){
standardRepository.updateMinLength(1, 3);
}

转载地址:http://ialti.baihongyu.com/

你可能感兴趣的文章
C#中ColorDialog需点两次确定才会退出的问题
查看>>
数据库
查看>>
nginx反代 499 502 bad gateway 和timeout
查看>>
linux虚拟机安装tar.gz版jdk步骤详解
查看>>
python实现100以内自然数之和,偶数之和
查看>>
去哪儿一面+平安科技二面+hr面+贝贝一面+二面产品面经
查看>>
C++ 调用json
查看>>
动态库调动态库
查看>>
Kubernetes集群搭建之CNI-Flanneld部署篇
查看>>
k8s web终端连接工具
查看>>
手绘VS码绘(一):静态图绘制(码绘使用P5.js)
查看>>
手绘VS码绘(二):动态图绘制(码绘使用Processing)
查看>>
《达芬奇的人生密码》观后感
查看>>
基于“分形”编写的交互应用
查看>>
链睿和家乐福合作推出下一代零售业隐私保护技术
查看>>
Unifrax宣布新建SiFAB™生产线
查看>>
艾默生纪念谷轮™在空调和制冷领域的百年创新成就
查看>>
NEXO代币持有者获得20,428,359.89美元股息
查看>>
Piper Sandler为EverArc收购Perimeter Solutions提供咨询服务
查看>>
RMRK筹集600万美元,用于在Polkadot上建立先进的NFT系统标准
查看>>