前言
用了这么久springboot springdata jpa了,是时候简单总结一下下了
1、CrudRepository与JpaRepository的不同
其实用起来一模一样
1.1、继承关系
PagingAndSortingRepository 继承 CrudRepository
JpaRepository 继承 PagingAndSortingRepository
所以,我们以后一般用JpaRepository
1。2、使用关系
CrudRepository 提供基本的增删改查;
PagingAndSortingRepository 提供分页和排序方法;
JpaRepository 提供JPA需要的方法。
2、方法集锦
关键字 | 方法命名 | sql where字句 |
And | findByNameAndPwd | where name= ? and pwd =? |
Or | findByNameOrSex | where name= ? or sex=? |
Is,Equals | findById,findByIdEquals | where id= ? |
Between | findByIdBetween | where id between ? and ? |
LessThan | findByIdLessThan | where id < ? |
LessThanEquals | findByIdLessThanEquals | where id <= ? |
GreaterThan | findByIdGreaterThan | where id > ? |
GreaterThanEquals | findByIdGreaterThanEquals | where id > = ? |
After | findByIdAfter | where id > ? |
Before | findByIdBefore | where id < ? |
IsNull | findByNameIsNull | where name is null |
isNotNull,NotNull | findByNameNotNull | where name is not null |
Like | findByNameLike | where name like ? |
NotLike | findByNameNotLike | where name not like ? |
StartingWith |
findByNameStartingWith | where name like '?%' |
EndingWith | findByNameEndingWith | where name like '%?' |
Containing | findByNameContaining | where name like '%?%' |
OrderBy | findByIdOrderByXDesc | where id=? order by x desc |
Not | findByNameNot | where name <> ? |
In | findByIdIn(Collection<?> c) | where id in (?) |
NotIn | findByIdNotIn(Collection<?> c) | where id not in (?) |
True | findByAaaTue |
where aaa = true |
False | findByAaaFalse | where aaa = false |
IgnoreCase | findByNameIgnoreCase | where UPPER(name)=UPPER(?) |
3、getOne和上面的findOne区别
使用中get和上面的find在Jpa方法中没什么区别的,比如:getByNameContaining也就是说可以用下吗的get去替代上面的find
但是如果是getOne和findOne就会有一些问题
findOne()是返回的是一个实体对象,查不到的时候会返回null。 getOne()是返回的一个对象的引用,也是是代理对象,查不到会抛异常。SpringBoot版本1.5.4
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.4.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
3.1、测试Repository
public interface DemoEntityJapRepository extends JpaRepository<DemoEntity<