Spring Boot JPA 特殊查询操作

本文探讨了如何在Spring Data JPA中使用`top`和`first`关键字限制查询结果数量,以及如何通过@Entity注解进行命名查询。此外,介绍了自定义查询、分页查询和使用@Query进行本地查询的方法。涵盖了从Repository到Controller的实际应用实例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

限制查询结果数量

top和first关键字

@Repository // 创建数据库操作接口
public interface UserRepository extends JpaRepository<User, Integer> {   
    //限制结果数量
    List<User> findFirst10ById(Integer id);//查询符合结果的前10条
    List<User> findTop20ById(Integer id);//查询符合结果的前30条
}

JPA使用@NameQuery查询

在Entity定义查询方法,在Dao层增加方法,在Controller层应用方法

  1. 修改实体 在@Entity下增加@NamedQuery的定义(sql表达式里面的表名要和当前的Entity一致)
  2. 修改Repository增加方法
  3. 在Controller中调用,Spring会先找是否有同名的方法,如果有就不会按照接口定义的方法来解析。

@Entity
@Table(name = "usetable")
@NamedQuery(name = "findallUser",query="SELECT c FROM User")
@NamedQueries({
   @NamedQuery(name = "findUserWithId",query = "SELECT c FROM User c WHERE c.id=?1")
})
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer id;
    private String lastname;
    private String password;
   //省去get和set方法
   
}
import java.util.List;
import java.util.Optional;
import com.example.demo.entity.User;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

@Repository // 创建数据库操作接口
public interface UserRepository extends JpaRepository<User, Integer> {
//自定义查询
    public List<User> findUserWithId(Integer id);
  }
}

分页查询

@Repository // 创建数据库操作接口
public interface UserRepository extends JpaRepository<User, Integer> {
 //分页查询
    Page<User>  findByIdLessThan(Integer id,int thepage);
}
@Controller //声明此类为控制器
@RequestMapping(value = "/theuser") //映射此类的访问路径
public class UserController {
    @Autowired
    private UserRepository userRepository;
    @RequestMapping(value = "/testpage")
    @ResponseBody
    public String TestPageSearch(){
        int thepage  = 3;
        userRepository. findByIdLessThan(30,thepage);
        return "success";
    }   
 }

使用@Query来指定本地查询

@Query(value="select * from usertable where id like %?1" ,nativeQuery=true)
public List<UserModel> findByUserid(Integer id);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值