SpringData JPA复杂查询一:JPQL查询

JPQL查询

@Query中的value类似sql的查询语句

*但是查询的是类和类中的属性,而不是数据库中的字段名*

一  测 jpql一个参数查询:


/*
* 符合SpringDatajpa的dao层接口规范
*JpaRepository<操作的实体类类型,实体类中主键属性的类型>
    *封装了基本的CRUD操作
 JpaSpecificationExecutor<操作的实体类类型>
    *封装了复杂查询操作(分页)
* */

public interface CustomerDao  extends JpaRepository<Customer,Long>, JpaSpecificationExecutor<Customer> {

    /*
    *
    * 案例 :根据客户名称查询客户
    *       使用 jpql的形式查询
    * jpql:from Customer where custName=?
    * 配置jpql语句,使用的@Query注解
    *
    *
    * */

    @Query(value = "from Customer  where custName=? ")
    public Customer findJpql(String custName);
}

 

public class jpqlTest {


    @Autowired
    private CustomerDao customerDao;

    //测试jpql一个参数查询
    @Test
    public void testFindJPQL()
    {
        Customer customer=customerDao.findJpql("迅腾科技公司");
        System.out.println(customer);

    }
}

 

二  测试  jpql多个参数查询

/*
*
* 案例:根据客户名称和客户id查询客户
*   jpql: from Customer where custName =? and custId=?
*
* 对于多个占位符
*       赋值的时候,默认的情况下,占位符的位置需要和方法参数中的位置保持一致
*
* 可以指定占位符参数的位置
*   *索引的范式,指定此站位的取值来源
* */
    @Query(value = "from Customer where custName=?2 and custId=?1 ")
    public Customer findCustNameAndId(Long id,String name);
  //测试jpql多个参数查询
    @Test
    public void testFindCustNameAndId()
    {
        Customer customer=customerDao.findCustNameAndId(4l,"迅腾工作人员aa");
        System.out.println(customer);

    }

三   测试  jpql的更新操作

 /*
    *
    * 使用jpql完成更新操作
    *
    *   sql:update cst_customer set cust_name=? where cust_id (column值)
    *   jpql:update Customer set custName=? where custId=?     (domin对应的属性值)
    *   @Query : 代表的事进行查询
    *       *声明此方法是用来进行更新操作
    *   @Modifying
    *       * 当前执行的事一个更新操作
    * */
    @Query(value = "update  Customer  set custName=?2 where custId=?1")
    @Modifying
    public  void updateCustomer (long custId,String custName);
 @Test
    @Transactional//添加事务支持
    @Rollback(value = false)
    public void testUpdateCust()
    {
        customerDao.updateCustomer(4l,"迅腾工作人员");
    }

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值