SpringBoot使用SpringDataJPA通过方法名查询
文章目录
- JPA方法名查询
- 1. 方法名表图
- 2. 举例说明
- 3. 测试
JPA依赖及配置在这篇文章: SpringBoot框架使用SpringDataJPA
JPA方法名查询
约定方法名一定要根据命名规范来书写,Spring Data 会根据前缀、中间连接词(Or、And、Like、NotNull 等类似 SQL 中的关键字)、内部拼接 SQL 代理生成方法的实现,约定方法名的方法见表:
1. 方法名表图
关键词 | SQL符号 | 举例 | 最终执行的JPQL 片段 |
---|---|---|---|
And
|
and | findByAddressLikeAndState | … where x.lastname = ?1 and x.firstname = ?2 |
Or
|
or | findByLastnameOrFirstname | … where x.lastname = ?1 or x.firstname = ?2 |
top
|
limit | findTop4 | … where x.lastname limit (4) |
Is,Equals
|
= |
findByFirstname / findByFirstnameIs / findByFirstnameEquals
|
… where x.firstname = ?1 |
Between
|
between | findByStartDateBetween | … where x.startDate between ?1 and ?2 |
LessThan
|
< | findByAgeLessThan | … where x.age < ?1 |
LessThanEqual
|
<= | findByAgeLessThanEqual | … where x.age <= ?1 |
GreaterThan
|
> | findByAgeGreaterThan | … where x.age > ?1 |
GreaterThanEqual
|
>= | findByAgeGreaterThanEqual | … where x.age >= ?1 |
After
|
> | findByStartDateAfter | … where x.startDate > ?1 |
Before
|
< | findByStartDateBefore | … where x.startDate < ?1 |
IsNull
|
is null | findByAgeIsNull | … where x.age is null |
NotNull
|
is not null | findByAge(Is)NotNull | … where x.age not null |
Like
|
like | findByFirstnameLike | … where x.firstname like ?1 |
NotLike
|
not like | findByFirstnameNotLike | … where x.firstname not like ?1 |
StartingWith
|
like ‘xxx%’ | findByFirstnameStartingWith | … where x.firstname like ?1(parameter bound with appended %) |
EndingWith
|
like ‘xxx%’ | findByFirstnameEndingWith | … where x.firstname like ?1(parameter bound with prepended %) |
OrderBy
|
order by | OrderByCreatetimeDesc | … where x.state= ?1 order by x.createtime desc |
Not
|
<> | findByLastnameNot | … where x.lastname <> ?1 |
In
|
in() | findByAgeIn(Collection ages) | … where x.age in ?1 |
NotIn
|
not in() | findByAgeNotIn(Collection ages) | … where x.age not in ?1 |
TRUE
|
=true | findByActiveTrue() | … where x.active = true |
FALSE
|
=false | findByActiveFalse() | … where x.active = false |
2. 举例说明
RecruitDao
代码
package com.tensquare.recruit.dao;import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;import com.tensquare.recruit.pojo.Recruit;import java.util.List;/*** recruit数据访问接口** @author Administrator*/
public interface RecruitDao extends JpaRepository<Recruit, String>, JpaSpecificationExecutor<Recruit> {// 查询状态为2并以创建日期降序排序,查询前4条记录 推荐职位查询public List<Recruit> findTop4ByStateOrderByCreatetimeDesc(String state);// 查询状态不为0 并以创建日期降序排序,查询前12条记录 最新职位查询public List<Recruit> findTop12ByStateNotOrderByCreatetimeDesc(String state);// 查询招聘信息地址在大望路的并且状态为2 And,Like应用查询public List<Recruit> findByAddressLikeAndState(String address,String state);}
RecruitService
代码
/*** recruit服务层** @author Administrator*/
@Service
@Transactional
public class RecruitService {@Autowiredprivate RecruitDao recruitDao;@Autowiredprivate IdWorker idWorker;/** 查询招聘信息地址在大望路的并且状态为2* */public List<Recruit> findAdressAndState() {List<Recruit> latestJobList = recruitDao.findByAddressLikeAndState("%大望路%", "2");return latestJobList;}/** 最新职位查询* */public List<Recruit> theLatestJob() {List<Recruit> latestJobList = recruitDao.findTop12ByStateNotOrderByCreatetimeDesc("0");return latestJobList;}/** 查询前四条推荐职位* */public List<Recruit> recommendPosition() {List<Recruit> tuijianList = recruitDao.findTop4ByStateOrderByCreatetimeDesc("2");return tuijianList;}}
RecruitController
代码
/*** recruit控制器层** @author Administrator*/
@RestController
@CrossOrigin
@RequestMapping("/recruit")
public class RecruitController {@Autowiredprivate RecruitService recruitService;/** 查询招聘信息地址在大望路的并且状态为2* */@RequestMapping(value = "/search/filterList", method = RequestMethod.GET)public Result findByAddressLikeAndState() {List<Recruit> recruits = recruitService.findAdressAndState();return new Result(true, StatusCode.OK, "查询成功", recruits);}/** 最新职位查询* */@RequestMapping(value = "/search/newlist", method = RequestMethod.GET)public Result theLatestJob() {List<Recruit> recruits = recruitService.theLatestJob();return new Result(true, StatusCode.OK, "查询成功", recruits);}/** 推荐职位查询* */@RequestMapping(value = "/search/recommend", method = RequestMethod.GET)public Result recommendPosition() {List<Recruit> recruits = recruitService.recommendPosition();return new Result(true, StatusCode.OK, "查询成功", recruits);}
}
3. 测试
按地址和状态查询:
最新职位查询
推荐职位查询
引用资料: https://blog.csdn.net/weixin_43094965/article/details/117203091
SpringBoot使用SpringDataJPA通过方法名查询相关推荐
- SpringBoot使用SpringDataJPA通过@Query注解多对多分页查询
文章目录 SpringBoot使用JPA@Query注解查询 1. 环境配置 2. 数据库表配置 3. 实体类配置 4. Dao代码 5. Service 代码 6. Controller 代码 7. ...
- JPA 的查询,JPA 根据方法名字查询详细介绍
摘自:https://www.sojson.com/blog/295.html 根据方法名字生成SQL语句(根据方法名查询). public interface UserRepository exte ...
- Spring JPA查询,JPA 根据方法名字查询详细介绍
版权所属:SO JSON在线解析 原文地址:https://www.sojson.com/blog/295.html JPA 的查询有很多丰富的API,基本能满足了所有的基本查询.下面来想细说说支持 ...
- 关于JPA方法名创建自动查询
JPA 的根据解析方法名称自动对接口进行实现的方法能节省大量的资源,以下对于解析规则进行列举哈 商品实体类 package com.dionren.zhaoxie.entity.trade;impor ...
- JpaRepository查询方法名规范
JpaRepository的查询 直接在接口中定义查询方法,如果是符合规范的,可以不用写实现,目前支持的关键字写法如下:JpaRepository会对方法名进行校验 不符合规范会报错 除非添加@Que ...
- Python编程语言学习:python语言中快速查询python自带模块函数的用法及其属性方法、如何查询某个函数关键词的用法、输出一个类或者实例化对象的所有属性和方法名之详细攻略
Python编程语言学习:python语言中快速查询python自带模块&函数的用法及其属性方法.如何查询某个函数&关键词的用法.输出一个类或者实例化对象的所有属性和方法名之详细攻略 ...
- springboot使用spring-data-jpa操作MySQL数据库
我们在上一篇搭建了一个简单的springboot应用,这一篇将介绍使用spring-data-jpa操作数据库. 新建一个MySQL数据库,这里数据库名为springboot,建立user_info数 ...
- jpa oracle 传参int类型判空_springboot学习-springboot使用spring-data-jpa操作MySQL数据库...
我们在上一篇搭建了一个简单的springboot应用,这一篇将介绍使用spring-data-jpa操作数据库. 新建一个MySQL数据库,这里数据库名为springboot,建立user_info数 ...
- Ajax实现简单用户名重名查询
很早就想发布这篇POST了,Ajax实现简单用户名重名查询,引用了xmlhttprequest object pool,如下: XMLHttpRequest Object Pool /** * XM ...
最新文章
- java 学到什么实习_我如何获得外展实习机会以及到目前为止所学到的知识
- 错过CVPR 2017?绝对不能错过GAIR大讲堂——上海交大专场开启报名
- linux pe大小,lvm中的pe默认是4M 最大能支持多大 1T?2T
- 病毒侵袭持续中(HDU-3065)
- directx修复工具v3.2增强版_「电脑知识」USBOS 超级PE启动维护工具增强版及标准版...
- 最详细全国区号汇总(json格式)
- 碎碎念集萃三零【静心】
- mac电脑如何快速清除excel表格中的空白行
- 睿智的目标检测21——如何调用摄像头进行目标检测
- 京东商城手机频道商品价格信息的抓取
- 2017江苏高职计算机分数线,2017—2019江苏高考招生投档分数线(体育高职专科院校).docx...
- 精神小伙: 写代码是世界上最好的工作, 不接受反驳
- 【转】我的助理辞职了!
- html5视频教程华清,华清创客学院—HTML5是否能代替Flash
- 将Delphi2007的所有dcu打包到一个运行时包中
- 传输加载优化(资源压缩、资源缓存、HTTP2)
- WinImage直接读取vmdk文件
- 深度学习与西储大学轴承数据集(二)
- 2021年高考 南宁二中成绩查询,2021年南宁高考各高中成绩及本科升学率数据排名及分析...
- 《构建之法》 第二次作业
热门文章
- 问题 B: 【计算几何】Two Circles and a Rectangle
- 基于KCOM3模块编写脚本控制电脑键盘鼠标,附控制软件
- oracle 数据库网络传输,Oracle数据库之间数据传输方法探讨
- java赵云主角兵器谱游戏_赵云赵子龙的外号有哪些?赵云的武器是什么 赵
- 直流有刷电机编码器测速基于STM32F302R8+X-NUCLEO-IHM07M1
- 第八届“图灵杯”NEUQ—ACM程序设计竞赛个人赛(同步赛)
- threejs基础下:贴图资源加载与光照
- MySQL语句查询数据库数据并添加到Redis缓存
- win10清理C盘空间
- android 复制asset文件下文件到手机指定路径,手机根目录