《SpringBoot篇》10.JPQL超详细介绍与JPA命名规则(二)

简介: 《SpringBoot篇》10.JPQL超详细介绍与JPA命名规则(二)

5.模糊查询


表达式 匹配 不匹配

E.name LIKE ‘张%’ 张三 小张伟

E.name LIKE ‘张_’ 张三 张三丰

E.name LIKE ‘张_%’ 张_三 张三

示例:查询张性的所有雇员


@Query("SELECT E FROM Employee E WHERE E.name LIKE '张%'")
List<Employee> selectExample();

6.空集合查询


通过使用关键字 IS [NOT] EMPTY 来查找关联的属性集合的值为空的记录 。


示例:查找尚无雇员的所有部门


@Query("SELECT D FROM Department D WHERE D.employees IS EMPTY")
List<Department> selectExample();

7.构造器


查询结果的类型如果不是持久化的实体类 , 必须使用该类的完全限定名 。


语法: SELECT NEW 类的完全限定名(参数1, 参数2, …) …


示例:查询所有的雇员信息


package org.fanlychie.model;
public class SimpleEmployee{
 private String name;
 private Sex sex;
 public SimpleEmployee(String name, Sex sex){
 this.name = name;
 this.sex = sex;
 }
 // getters and setters
}
@Query("SELECT NEW org.fanlychie.model.SimpleEmployee(E.name, E.sex) FROM Employee E")
List<SimpleEmployee> selectExample();

b.更新

示例:更新某个雇员的婚姻状态和薪资信息


@Modifying
@Transactional
@Query("UPDATE Employee SET married = ?2, salary = ?3 WHERE id = ?1")
int updateExample(Long id, Boolean married, Double salary);

@Query 无法进行 DML (Data Manipulation Language 数据操控语言 , 主要语句有 INSERT 、 DELETE 、 UPDATE )操作 , 如需更新数据库表的数据需要标注 @Modifying 注解 , 并且需要事务的支持 @Transactional 。


c.删除

示例:删除没有雇员的部门信息


@Modifying
@Transactional
@Query("DELETE FROM Department D WHERE D.employees IS EMPTY")
int deleteExample();

以下是实际中举例:


package com.example.demo.repository;
import com.example.demo.pojo.Admin;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.repository.PagingAndSortingRepository;
import org.springframework.stereotype.Repository;
//声明为repository
@Repository
public interface AdminRepository extends PagingAndSortingRepository<Admin,Long>  {
  //自定义SQL语句必须在事务环境下运行 必须有DML支持(Modifying)  
  //?1表示下面的形参的第1个位置,这里不对表进行操作,直接对实体类进行操作,然后实体类映射到表中。
  //这个注解也可以加到测试类上面 但需要跟进一个@commit提交事务的注解 因为测试类会自动回滚事务
    @Transactional    
    @Modifying
    @Query("update Admin set password=?1 where id=?2")
    int updatePasswordById(String newPassword,int id);
}

(3)原生SQL

说明: 如果不习惯JQPL可以使用原生SQL,这就和平时写SQL一样就不多介绍了


package com.example.demo.repository;
import com.example.demo.pojo.Admin;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.repository.PagingAndSortingRepository;
import org.springframework.stereotype.Repository;
//声明为repository
@Repository
public interface AdminRepository extends PagingAndSortingRepository<Admin,Long>  {
  @Transactional
  @Modifying
  //唯一不同就是多了nativeQuery参数为true,开启原生SQL
    @Query(value = "update account set password=?1 where name=?2",nativeQuery = true)
    int updatePasswordByUsername(String password,String username);
}


2.命名规则表


说明: 命名规则按下面这个表就可以了


image.png

image.png

相关文章
|
1月前
|
Java Spring
Springboot+jpa如何设置启动项目表不存在就主动创建,字段没有就新增
Springboot+jpa如何设置启动项目表不存在就主动创建,字段没有就新增
168 0
|
1月前
|
Java
Springboot+JPA+Sqlite整合demo
Springboot+JPA+Sqlite整合demo
129 0
|
1月前
|
存储 Java 测试技术
《Spring 测试指南》:JPA、MockMvc 和 @SpringBootTest 详解
Spring 提供了一组测试工具,可以轻松地测试 Spring 应用程序的各个组件,包括控制器、服务、存储库和其他组件。它具有丰富的测试注释、实用程序类和其他功能,以帮助进行单元测试、集成测试等。
68 0
|
5天前
|
druid Java 关系型数据库
Spring Boot2 系列教程(二十五)Spring Boot 整合 Jpa 多数据源
Spring Boot2 系列教程(二十五)Spring Boot 整合 Jpa 多数据源
|
16天前
|
SQL Java 数据库
Java一分钟之-Spring Data JPA:简化数据库访问
【6月更文挑战第10天】Spring Data JPA是Spring Data项目的一部分,简化了Java数据库访问。它基于JPA,提供Repository接口,使开发者能通过方法命名约定自动执行SQL,减少代码量。快速上手包括添加相关依赖,配置数据库连接,并定义实体与Repository接口。常见问题涉及主键生成策略、查询方法命名和事务管理。示例展示了分页查询的使用。掌握Spring Data JPA能提升开发效率和代码质量。
34 0
|
1月前
|
Java Spring
Spring Boot利用Spring Data JPA实现排序与分页查询实战(附源码,超详细)
Spring Boot利用Spring Data JPA实现排序与分页查询实战(附源码,超详细)
132 0
|
1月前
|
SQL Java 数据库连接
Springboot框架整合Spring Data JPA操作数据
Spring Data JPA是Spring基于ORM和JPA规范封装的框架,简化了数据库操作,提供增删改查等接口,并可通过方法名自动生成查询。集成到Spring Boot需添加相关依赖并配置数据库连接和JPA设置。基础用法包括定义实体类和Repository接口,通过Repository接口可直接进行数据操作。此外,JPA支持关键字查询,如通过`findByAuthor`自动转换为SQL的`WHERE author=?`查询。
|
1月前
|
前端开发 关系型数据库 MySQL
springboot+jpa+tymeleaf实现分页功能
springboot+jpa+tymeleaf实现分页功能
18 0
|
1月前
|
Java 数据库 Spring
如何使用Spring Data JPA完成审计功能
如何使用Spring Data JPA完成审计功能
|
1月前
|
Java 数据库连接 API
Spring Boot整合Spring Data JPA进行CRUD和模糊查询
Spring Boot整合Spring Data JPA进行CRUD和模糊查询
47 0