JPA快速开发之查询接口Repository

什么是JPA

SpringData是Spring提供的一个数据操作框架,而SpringData JPA则是该框架下基于JPA标准进行数据操作的模块。

SpringData JPA简化了持久层代码的操作,只需编写接口即可实现。

JPA,全称Java Persistence API,是Spring Data的子项目之一。它是JDK 5.0的注解或XML描述对象与关系表映射关系的工具,可以将运行时的实体对象持久化到数据库中。

JPA和Mybatis都是持久层框架,具有相同的功能。然而,由于Mybatis的广泛使用,现在了解和使用JPA的人较少。

JPQL 是从 Hibernate 的 HQL 演变而来的,其语法与 HQL 非常相似。HQL,即 Hibernate Query Language(Hibernate查询语言),而 SQL 是 Structure Query Language(结构化查询语言)。

它们的主要区别在于:SQL 直接操作数据库中的表和字段,而 HQL 则操作实体对象和属性。

需要注意的是,我们编写的 JPQL 最终仍会被转换成 SQL 语句进行执行。

接口继承关系

Repository<T, ID>接口 最顶层接口 作用自定义JPQL语句

/**
 * 使用@Query注解,自定义JPQL语句
 * JPQL语句中,使用的不是表名,而是实体类名,不是列名,而是属性名,
 * 例如SQL语句:select * from user  JPQL语句是:select User from User
 * 如果是条件查询,之前语句中的占位符?可以使用(:xxx)进行表示
 * 此时xxx会根据方法中同名的形参自动绑定值
 */
public interface UsersRepositoryByQuery extends Repository<User, Integer> {
   
    //如果是查询所有列,可以省略select ....,从from开始写
    @Query("from User where name=:name")
    List<User> selectByName(String name); //select * from user where name=?

    @Query("select u from User u where name=:name and age=:age")
    List<User> selectByNameAndAge(String name, Integer age); //select * from user where name=? and age=?

    @Query("from User where name=:name and age=:age")
    List<User> selectByNameLike(String name);//select * from user  where name like ?

    //除了使用JPQL语句,也是可以使用sql原生语句,在注解中设置参数nativeQuery = true,不推荐!
    @Query(value = "select * from user where name=:name",nativeQuery 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值