SpringData JPA @Query 注解实现自定义查询方

2019-08-09  本文已影响0人  PC_Repair

Query 注解

案例

public class Employee {
    private  Integer id;
    private String name;
    private Integer age;

    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public Integer getAge() {
        return age;
    }
    public void setAge(Integer age) {
        this.age = age;
    }
}

(1)查询操作

@Query("select o from Employee o where id=(select max(id) from Employee t1)")
Employee getEmployeeById();

注意: Query 语句中第一个 Employee 是类名。

注意: 占位符从 1 开始

@Query("select o from Employee o where o.name=?1 and o.age=?2")
List<Employee> queryParams1(String name, Integer age);
@Query("select o from Employee o where o.name=:name and o.age=:age")
List<Employee> queryParams2(@Param("name") String name, @Param("age") Integer age);
@Query("select o from Employee o where o.name like %?1%")
List<Employee> queryLike1(String name);

(2)更新操作

@Modifying
@Query("update Employee o set o.age = :age where o.id = :id")
void update(@Param("id") Integer id, @Param("age") Integer age);

(3)删除操作

@Modifying
@Query("delete from Employee o where o.id = :id")
void delete(@Param("id") Integer id);

(4)注意

执行更新或者删除操作是需要事物支持,所以通过 service 层来增加事物功能,在 update 方法上添加Transactional 注解。

本地查询

所谓本地查询,就是使用原生的 sql 语句进行查询数据库的操作。但是在 Query 中原生态查询默认是关闭的,需要手动设置为true:

@Query(nativeQuery = true, value = "select count(1) from employee")
long getCount();

参考文档:https://blog.csdn.net/HQZ820844012/article/details/80188742#pagingandsortingrepository%E6%8E%A5%E5%8F%A3

上一篇 下一篇

猜你喜欢

热点阅读