SpringData入门(四)SpringData JPA之方法名称规则查询

前言

     本章讲解SpringData JPA有关于方法名称规则查询的相关知识

方法

1.概念

我们知道,Repository接口是我们的标识接口。但是其还含有另外的功能,那就是继承了该接口的Dao层接口类将拥有两种查询方式的支持:基于方法名称命名规则查询、基于@Query注解查询

本章我们先说第一种方式,也就是基于方法名称命名规则查询

2.方法名称规则

既然是基于方法命名规则,那么肯定有一套规则约束方法的命名:

findBy(关键字)+ 属性名称(首字母大写)+ 查询条件(首字母大写)

1)修改dao接口,加入如下方法

package cn.edu.ccut.dao;

import java.util.List;

import org.springframework.data.jpa.repository.JpaRepository;

import cn.edu.ccut.bo.Users;
/**
 * 继承JpaRepository<T, ID>接口
 * T传入当前操作的实体类,ID传入该类的主键类型
 * @author jwang
 *
 */
public interface UserDAO extends JpaRepository<Users, Integer>{
	/**
	 * findBy+Username+查询条件(不写默认是相等条件)
	 * @param username
	 * @return
	 */
	public List<Users> findByUsername(String username);
}

该方法遵守我们的方法名称规则,使用该方法将查询出指定名称的用户!

service层接口编写:

SpringData入门(四)SpringData JPA之方法名称规则查询

测试代码编写:

SpringData入门(四)SpringData JPA之方法名称规则查询

测试运行结果:
SpringData入门(四)SpringData JPA之方法名称规则查询

这证明该方法成功的查询到了指定的数据!

当然,我这个方法命名的还是比较简单的,那么如果是比较复杂的查询呢,我们的方法名称将变得极其的长,这显然不利于我们的开发。也就是说,简单查询的时候,我们推荐使用该查询方法。

3.其他查询规则命名规范

我们知道,不写查询条件就意味着相等条件,那么该规则还有哪些查询条件呢?

我们以下面的表格的形式给出:

关键字 方法命名 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 > ?
GreaterThanEqual findByAgeGreaterThanEqual where age >= ?
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(?)
top findTop100 top 10/where ROWNUM <=10
上一篇:SpringDataRedis(SpringData)


下一篇:SpringData-JPA