本文共 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/