springboot jpa自定义SQL查询
说明
在使用JPA实现数据持久化过程中经常会遇到这种情况:我有2张表是一对多的关系,需要通过一个外键ID去关联查询到另外一张表的字段。例如,1张商品表food_info其中存有商品分类ID category_id关联商品分类表food_category,那么我需要在查询商品的时候同时查出存储在商品分类表中的分类名称列category_name。
要达到的效果
在页面列表中展示查询到的商品分类中文名。
 
实现代码
这里主要借助JPA提供的@Query自定义查询语句。在查询之前需要先定义几个模型类。
商品表模型
@Data
@Entity
public class FoodInfo {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer id;
    private String foodName;
    private BigDecimal price;
    private String icon; // 商品图片
    private String info; // 商品描述
    private Integer stock; // 商品库存
    private Integer categoryId; // 商品分类
    private Date createTime;
    private Date updateTime;
}
商品分类表模型
@Data
@Entity
public class FoodCategory {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer id;
    private String categoryCode; // 分类编码
    private String categoryName; // 分类名称
    private Date createTime;
    private Date updateTime;
}
商品VO模型
@Data
@AllArgsConstructor
public class FoodVO {
    private Integer id;
    private String foodName;
    private BigDecimal price;
    private String icon; // 商品图片
    private String info; // 商品描述
    private Integer stock; // 商品库存
    private Integer categoryId; // 商品分类
    private String categoryName; // 商品名称
}
商品Repository
@Query("SELECT new com.test.food_mall.vo.FoodVO(f.id, f.foodName,f.price,f.icon,f.info,f.stock,f.categoryId,c.categoryName) " +
             "from FoodInfo f left join FoodCategory c " +
             "on f.categoryId = c.id")
     List<FoodVO> findAllCustom();
												
											springboot jpa自定义SQL查询的更多相关文章
- SpringBoot Jpa 自定义查询
		
SpringBoot Jpa 自定义查询 持久层Domain public interface BaomingDao extends JpaRepository<BaomingBean,Inte ...
 - JavaEE(18) - JPA原生SQL查询和存储过程
		
1. 使用原生SQL执行查询 2. 映射原生SQL查询的结果集 3. 使用原生SQL查询执行实体查询 4. 命名原生SQL查询 5. 在JPQL查询中调用存储过程
 - Spring Data JPA原生SQL查询
		
package com.test.cms.dao.repository;import org.springframework.stereotype.Repository;import javax.pe ...
 - jpa 自定义sql 删除方法注意点
		
1.jpa自带的delete()方法可以成功删除对象 delete(id),或者delete(entity) 2.自定义删除方法注意点 参考:https://www.jianshu.com/p/9d5 ...
 - Jpa 自定义@Query查询总结
		
第一种方式 能够请求,,返回数据为 不带字段 第二种方式 报错 第三种方式 正确 总结:如果返回 List<TbRegionDO> 不能 有as存在 ,,只能查询所有 select s ...
 - CI中自定义SQL查询,LIKE模糊查询的处理
		
参考: /** * 据用户输入的关键字查询相册信息;照片墙搜索框功能 * @param $keyWord 关键字 * @param $pageNum 页码,第几页 * @param $pageSize ...
 - Activiti流程  关于自定义sql查询
		
由于才接触Activiti不久,对于表结构也不熟悉,甚至可以说连那些表对应的实体类都搞不清楚,又不能通过Activiti自带的链式查询实现:在这种情况下跟不知道怎么通过sql去实现自己想要的查询.上网 ...
 - springboot jpa 多条件查询(多表)
		
前几天写的,贴上来. 实体类. package com.syl.demo.daomain; import lombok.Data; import javax.persistence.*; /** * ...
 - springboot jpa 多条件查询(单表)
		
需要实现的功能: 多个搜索输入框:全部不填,则查出所有列表:填了条件,就按条件查找:填的条件个数不定. 方法实现的核心:jpa自带的Specification<T> (目前只需要单表,多表 ...
 - jpa自定义sql语句
		
/** * 查询还没生成索引的帖子 * @return */ @Query(value = "SELECT * FROM t_article WHERE index_state=0" ...
 
随机推荐
- [转帖]Nginx 安全优化
			
目录 前言 1.使用 SSL/TLS 证书 2.使用安全密钥交换机制 3.禁用旧的 SSL/TLS 协议 4.禁用 SSL/TLS 弱密码套件 5.禁用不需要的 HTTP 方法 6.防止缓冲区溢出攻击 ...
 - [转帖]解决Java/MySQL性能问题的思路
			
https://plantegg.github.io/2023/08/28/%E8%A7%A3%E5%86%B3%E9%97%AE%E9%A2%98%E6%80%9D%E8%B7%AF/ 10年前写的 ...
 - [转帖]Shell 判断文件或文件夹是否存在(不存在则创建)
			
目录 1. 文件夹不存在创建文件夹 2. 判断文件夹是否存在 3. 判断文件是否存在 4. 常用的文件比较符 1. 文件夹不存在创建文件夹 if [ ! -d "/data/" ] ...
 - [转帖]TiKV读写流程浅析
			
https://www.cnblogs.com/luohaixian/p/15227838.html 1.TiKV框架图和模块说明 图1 TiKV整体架构图 1.1.各模块说明 PD Cluster ...
 - [转帖]nginx 反向代理中proxy_set_header的含义
			
https://www.jianshu.com/p/cd813d68ed25 0.1212020.10.23 09:29:53字数 284阅读 9,939 1.proxy_set_header设置的请 ...
 - [转帖]第5章 WINDOWS PE/COFF
			
https://www.jianshu.com/p/35db9df2514f?utm_campaign=maleskine&utm_content=note&utm_medium=se ...
 - 没有虚拟DOM版本的vue(Vue Vapor)
			
前言 随着Svelte和SolidJS的流行,无虚拟DOM模式逐渐开始火了起来.vue也推出了无虚拟DOM模式的版本,就是我们今天要讲的Vue Vapor. 什么是Vue Vapor Vue Vapo ...
 - 替换 &开头。;结尾之间的内容。用空格代替他们
			
替换 &开头.;结尾之间的内容.用空格代替他们 var regExp = /\&.*?\;/g; var str = '123&asdsa;dqwe'; str = str.r ...
 - 如何处理开发环境没有问题,线上环境有问题这个bug
			
解决思路 首先确认开发环境有没有这个问题: 如果没有这个问题: 将你的地址切换为线上的环境,看看线上环境有没有这个问题: 如果切换为线上环境有这个问题,就可以调试了: 如果切换为线上环境没有这个问题, ...
 - k8s单master集群通过备份etcd还原集群
			
准备环境 通过kubeadm 安装的单master kubernetes 1.19+ 集群 容器环境:containerd 客户端工具:kubeadm.kubectl.etcdctl.crictl 备 ...