SpringDataJpa原理及使用

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 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 queryName(String name);
第三种:不按命名规则写的查询方法,配置@Query,没写语句,实体类@NamedQuery定义(不常用)
@Query
public List 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);
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值