SpringDataJpa (jpql 复杂查询 部分)

jpql的查询方式:java持久化查询语言:

特点:语法或关键字和SQL语句类似

查询的是类和类中的属性

 

需要将jpql语句配置到接口方法上

  1. 特有的查询:需要在dao接口上配置方法
  2. 在新添加的方法上,使用注解的形式配置jpql查询语句
  3. 注解 : @Query
  4. public interface StudentDao extends JpaRepository<Student,Integer>, JpaSpecificationExecutor<Student> {
        /**
         * 此时StudentDao 就已经具备了基本的CRUD操作了
         */
    
    
        /**
         * 案例: 根据用户名称查询用户
         * 根据jpql的形式查询
         *  jpql: from Student where name = ?
         *
         *配置jpql语句   使用@Query注解
         *
         *  ? 后面还有个数字表示这是第几个参数
         *
         */
        @Query(value = "from Student  where name= ?1")
        public List<Student> findJpql(String name);
    
    
    }
    
    
    
    
    
    
    
        @Test
        public void testfindjpql() {
            System.out.println(studentDao);
            List<Student> list = studentDao.findJpql("张喜");
            for (Object object : list) {
                System.out.println(object);
            }
        }
    
    
    
    
    
    
        /**
         * 根据客户名称和id查询用户
         * jpql: from Student where name = ?1 and id = ?2
         */
        @Query(value = "from Student where name = ?1 and id = ?2")
        Student finduserByIdAndName(String name,Integer id);  //占位符的位置必须和方法中的参数的额位置保持一致  不然会报错

     

更新操作:


   /**
     * 使用jpql完成更新操作
     *  根据id更新客户的名称
     *
     *  sql: update student set name = ? where id = ?
     *
     *  jpql: update Student set name = ? where id =  ?
     *@Query:代表的是进行查询
     *  *声明方法是用来进行更新操作  @Modifying
     *
     */

    @Query(value = "update Student set name = ?1 where id =  ?2")
    @Modifying
    void updateUserNameById(String name,Integer id);






















    /**
     * 更新操作
     *      springdatajpa中使用jpql完成  更新/删除操作   需要手动添加事务支持   @Transactional   (之后会默认回滚事务)
     *
     */
    @Test
    @Transactional   //对事务进行更新和删除操作的时候要加这个注解    添加事务支持
    @Rollback(value = false)   //阻止事务回滚
    public void uopda(){
        studentDao.updateUserNameById("侯嘉",47);
    }

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值