SpringBoot使用JPA自定义Query多表动态查询

PageCount.java (分页构建)

public class PageCount<T> {
   
    private final int page; //当前页
    private final int size; //页大小
    private long total; //总记录数
    private List<?> data; //数据
    private final Class<T> tClass; //查询的类

    public PageCount(int page, int size, Class<T> tClass) {
   
        this.page = page;
        this.size = size;
        this.tClass = tClass;
    }

    @JsonIgnore
    public Class<T> getTClass() {
   
        return tClass;
    }

    //获取当前页首条记录下标
    public int first() {
   
        return (page - 1) * size;
    }

    //获取当前页末条记录下标
    public int max() {
   
        return page * size;
    
SpringBoot中,我们可以使用自定义查询Query)来实现一些特定的业务需求。自定义查询可以通过注解方式定义在Repository中,也可以在Service层中定义。下面是一个简单的示例,展示如何在Repository中定义自定义查询。 首先,我们需要在Repository接口中定义自定义查询方法。以查询用户中性别为男性的用户为例,代码如下: ``` public interface UserRepository extends JpaRepository<User, Long> { @Query("select u from User u where u.gender = 'male'") List<User> findMaleUsers(); } ``` 在上述代码中,我们使用@Query注解来定义查询语句。查询语句中使用了JPQL语言(Java Persistence Query Language)进行定义。其中,`select u from User u`查询所有的User实体对象,`where u.gender = 'male'`查询性别为男性的用户。`findMaleUsers()`方法用于调用自定义查询,返回查询结果。 接下来,我们可以在Service层中调用自定义查询方法,实现具体的业务需求。以查询男性用户数目为例,代码如下: ``` @Service public class UserService { @Autowired private UserRepository userRepository; public int countMaleUsers() { List<User> maleUsers = userRepository.findMaleUsers(); return maleUsers.size(); } } ``` 在上述代码中,我们通过@Autowired注解将UserRepository注入到UserService中,然后调用自定义查询方法`findMaleUsers()`,得到所有性别为男性的用户。最后,返回用户数目即可。 以上就是在SpringBoot中实现自定义查询的一个简单示例。自定义查询可以使我们更加灵活地处理特定的业务需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值