首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

JPA - Criteria Query - 使用"like"搜索整数

JPA - Criteria Query - 使用 "like" 搜索整数

Criteria queries 是一种查询方法,用于在 Java 持久化(JPA)领域中从实体类中检索对象。使用 CriteriaQuery,您可以使用类似 SQL 的语法来构建查询,以便从 JPA 持久化对象中检索符合特定条件的对象。

以下是一个使用 CriteriaQuery 进行基于整数的模糊搜索的示例:

代码语言:java
复制
// 定义一个实体类
@Entity
public class Customer {
    @Id
    private Long id;
    private String name;
    private Integer age;

    // getters and setters
}

// 定义一个 CriteriaQuery 接口实现类
public class CustomerCriteriaQuery {
    public CriteriaQuery<Customer> createCriteriaQuery() {
        CriteriaBuilder builder = entityManager.getCriteriaBuilder();
        CriteriaQuery<Customer> criteriaQuery = builder.createQuery();
        Root<Customer> root = criteriaQuery.from(Customer.class);

        // 添加一个 "like" 模糊搜索条件
        criteriaQuery.where(builder.like(root.get("name"), "%" + searchTerm + "%"));

        // 定义排序条件
        criteriaQuery.orderBy(builder.asc(root.get("name")));

        return criteriaQuery;
    }
}

// 调用 CriteriaQuery 实现类进行查询
public List<Customer> getCustomersBySearchTerm(String searchTerm) {
    CustomerCriteriaQuery customerCriteriaQuery = new CustomerCriteriaQuery();
    return customerCriteriaQuery.createCriteriaQuery().getResultList();
}

上述代码示例中,我们定义了一个 Customer 实体类,以及一个 CustomerCriteriaQuery 实现类。CustomerCriteriaQuery 实现了 CriteriaQuery 接口,允许您使用类似 SQL 的语法构建查询。

createCriteriaQuery() 方法中,我们使用 entityManager 得到一个 CriteriaBuilder 对象,然后使用它创建一个 CriteriaQuery 对象。接着我们定义根对象(Root<Customer>),添加一个 "like" 模糊搜索条件,使用 % 符号指定搜索范围。

最后,在 getCustomersBySearchTerm() 方法中,我们创建一个 CustomerCriteriaQuery 对象,并调用 createCriteriaQuery() 方法得到一个 CriteriaQuery 对象。然后我们使用 getResultList() 方法得到一个包含所有符合搜索条件的 Customer 对象的列表。

总之,使用 CriteriaQuery 可以方便地进行复杂的查询操作,包括模糊搜索和排序等。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

使用JPA中@Query 注解实现update 操作

spring使用jpa进行update操作主要有两种方式: 1、调用保存实体的方法 1)保存一个实体:repository.save(T entity) 2)保存多个实体:repository.save...repository.saveAndFlush(T entity) 注:若是更改,entity中必须设置了主键字段,不然不能对应上数据库中的记录,变成新增(数据库自动生成主键)或报错(数据库不自动生成主键)了 2、@Query...注解,自己写JPQL语句 使用JPA中@Query 注解实现update 操作,代码如下: @Transactional @Modifying(clearAutomatically = true) @...Query(value = "update StockOut sc set sc.receivedPersonId=?...") int receipt(Long uid, String uname, Date createDate, String soCode); 备注: 1.更新StockOut表下一些字段, 这里使用了不是原生的

1.4K70

JPA @Query实现,动态代理,注解, 正则,Spring扩展的使用

@Query 的实现 动态代理 注解 表设计 model repository 大体流程 代理使用 将生成代理放入 Spring IOC 容器中 invoke方法处理 动态代理 基于 JDK 动态代理实现...注解 上一篇文章中提到了如何使用注解完成一个简单的ORM,其中注解使用 JavaPersistenceAPI 但是其中没有我们需要的 @Query 和 @Param 这里我们自定义一下这两个注解,同时为了让..., @Param, @ReturnGeneratedKey 注解,并取得方法的返回值 重写 Query的sql,并执行,根据方法的返回类型,封装SQL返回结果集 代理使用 FacadeProxy.java...获得方法的参数和参数上 @Param注解,并将参数与对应的Param的名称关联:param1->arg0 password->arg1 判断sql是select还是其他,使用正则 (?...query = method.getAnnotation(Query.class); if (null == query || StringUtil.isBlank(query.value

2.4K10

SpringBoot系列教程JPAquery使用姿势详解之基础篇

前面的几篇文章分别介绍了CURD中的增删改,接下来进入最最常见的查询篇,看一下使用jpa进行db的记录查询时,可以怎么玩 本篇将介绍一些基础的查询使用姿势,主要包括根据字段查询,and/or/in/like...Query基本使用姿势 下面进入简单的查询操作姿势介绍,单表的简单and/or/in/compare查询方式 1....查询 上面的查询方式为等值查询,当在sql中除了等值查询(即=查询)之外,还有各种比较查询,不等查询以及like语句,在jpa中也比较简单,在repository定义的方法名,加一个like即可 /**...* like查询 * * @param name * @return */ List findByNameLike(String name); 使用的时候,需要稍微注意一下...系列教程JPA之新增记录使用姿势 190623-SpringBoot系列教程JPA之update使用姿势 190702-SpringBoot系列教程JPA之delete使用姿势详解 1.

1.4K30

Spring Boot 之 Spring Data JPA 三(Specifications)一、首先建立一个Spring Boot 工程二、编写一个实体类来记录数据三、通过接口实现Specifica

一、首先建立一个Spring Boot 工程 我们使用的IDE是InteliJ IDEA,开发语言是Kotlin, ?...项目工程特性 新建项目没有什么可说的,接下来我们正式进入编码: 二、编写一个实体类来记录数据 我们使用一个Record实体来保存数据,包含了名称和值,代码如下: package cn.techcave.demo.jpa3...2 的criteria API实现Specifications查询 Repository支持了Specifications查询,我们在代码中实现查询,如下代码所示: package cn.techcave.demo.jpa3...import javax.persistence.criteria.Root import org.springframework.data.jpa.domain.Specification import...org.springframework.data.jpa.domain.Specifications.where import javax.persistence.criteria.CriteriaQuery

1.5K50

Spring学习笔记(三十一)——SpringBoot JPA优雅高效的工具:QueryHelp

然后一般我们也会使用Sping-Data-jpa去作为持久层就是开发,这个就相当于解放了双手,真的是大部分的数据操作都是可以无配置实现,并且做多表操作,级联操作也很方便,如果有需要自己写Sql配置的,也可以使用...@Query注解方便的进行配置,可以说,jpa的开发效率确实很高,但缺点就是操作相对没有那么灵活,如果数据量庞大,还是需要自己去手动配置,有可能就会被硬性要求使用MyBatis。...QueryHelp的使用步骤 在本次的项目demo中,使用到了上篇文章的Mapstruct,和上上篇文章的Jdk8新特性。 0. 目录结构如下 1....) default ""; /** * 默认左连接 */ Join join() default Join.LEFT; /** * 多字段模糊搜索...private Long id; /*模糊查询*/ @Query(type = Query.Type.INNER_LIKE) private String name;

1.2K20

Spring Boot第八章-Spring Data JPA

@NameQuery,在数据库操作接口里使用 (4)@Query 这也是比较常见的查询了,用这个注解在接口的方法上实现查询,在sql语句里查询参数上可以用参数索引,从1开始,比如?...2 也可以使用命名参数:比如:address @Modifying和@Query注解组合来事件更新查询 (5)Specification JPA提供了基于准则查询的方式,即Criteria查询。...; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param...(String name,String address); //使用query查询,参数按照名称绑定 @Query(value = "select p from Person p where...); //使用方法名查询,返回单个对象 Person findByNameAndAddress(String name,String address); //使用query查询,

3.2K20

SpringBoot使用JPA操作数据库二

上一篇博文讲了如何在Spring Boot项目中使用JPA做持久层交互,jpa预定义了一些简单的查询。代码中可以直接使用。...一些复杂的查询可以在@Query注解里写SQL语句,还有一些聚合查询可以使用聚合查询语句。...使用@Query注解自定义简单sql语句做查询大部分的SQL都可以根据方法名定义的方式来实现,但是由于某些原因我们想使 用自定义的SQL来查询,JPA也是完美支持的;在SQL的查询方法上面使用...JPA极大的帮助了我们更方便的操作数据库,但是,在实际场景中,往往会碰到复杂查询的场景,前端会动态传一些参数请求接口,这时候就需要使用到动态查询了。...; import org.springframework.data.jpa.repository.Query; import com.deepflow.travel.tourist.entity.User

79020
领券