JPQR完成sql操作

1、JPQR普通查询

@Query(value = “”)

1、select 语句 from (pojo类名) where () = ? and () = ?
2、update语句 update (pojo类名) set (属性名) = ?where (属性名) = ?
3、

@Modifying 确定是一个更新的操作

对执行的update\delete操作时 需要在实现方法上添加@Transactional 事务的支持

但是改注解会自动回滚 不会提交 ,所以要加上另一个注解@Rollback(value = false)

设置事务是否会自动回滚

@Transactional
@Rollback(value = false)
public void test(){
    user.updateAll(xxx);
}

2、对sql语句的查询

1、特有的查询:需要在Dao层接口上配置方法
2、在新添加的方法上,使用注解形式配置sql查询语句
3、注解:
@Query

value : jpql语句 | sql语句

nativeQuery: false(使用jpql查询) | true (使用sql查询)

public class userDao{
    @Query(value = "select * from t_user ,nativeQuery = true")
    //统一使用List<Object []>
    List<Object []> findSql();

    //条件查询
    @Query(value = "select * from t_user where username like ?,nativeQuery = true")
    List<Object []> findSql(String username);
    
    
}

3、方法名称规则查询

是对jpql查询,更加深入的一层封装

我们只需要按照springdataJpa提供的方法名称规则定义方法,不需要再去配置jpql语句,完成查询

findBy开头:代表查询

​ 对象中属性的名称,首字母名大写 代表根据该属性名称进行查询

public class UserDao{
    /**
    *方法名的约定:
    	findBy:查询
    			对象中的属性名(首字母大写) :查询条件
    			Username
    	findByUsername -- 根据名称查询
    	默认情况:使用 = 的方式查询
    	在SpringDataJpa的运行阶段 
    		会根据方法名称进行解析  findBy from xxx(实体类)
    					属性名称 where username = 
    					
    	findBy + 属性名称 (根据属性名称进行完成匹配的查询 = )
    	findBy + 属性名称 + “查询方式(like | isnull)”
    */
    //不许要任何注解
    //根据xx查询 findBy + 属性名称 (根据属性名称进行完成匹配的查询 = )
    User findByUsername(String username);
    
    //模糊查询  findBy + 属性名称 + “查询方式(like | isnull)”
    List<User> findByUsernameLike(String username);
    
    //多条件查询 findBy + 属性名 + “查询方式” + “多条件的连接符(and | or)” + 属性名 + “查询方式”
    //对用户名和用户id进行精准匹配
    User findByUsernameLikeAndUserId(String username,Integer userId);
    
}

public class test{
    @Test
    public void testByUsername(){
        User user = userDao.findByUsername("123");
        System.out.println(user); //可以运行成功
    }
    
      @Test
    public void testByUsername(){
        List<User> user = userDao.findByUsernameLike("123%");
        for(User user1 : user){
            System.out.println(user1);
        }
    }
    
        @Test
    public void testByUsernameAndUserId(){
        User user = userDao.findByUsernameLikeAndUserId("123",1);
        System.out.println(user); //可以运行成功
    }
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值