JPQL自定义查询语句


一、JPQL自定义查询语句
  1.含义
    1、JAVA持久性查询语句(JPQL)是一种面向对象的查询语言,
       将SQL语法和简单查询予以绑定进行操作
    2、SQL面向的是表和字段访问操作数据
    3、JPQL完全面向对象,通过类名和属性访问操作数据库,而不是表名和表的属性
    4、JPQL所提供的查询语法主要分为三类
      1)select查询语句
      2)update修改语句
      3)delete删除语句
      4)不能做新增 原生继承的save方法已经满足
  2.使用规则
    1、方法名
      1)根据规范起名 (getData)
    2、查询语句  使用@Query注解进行自定义注解
    3、修改和删除语法
      1)使用@Query注解进行自定义操作
      2)使用@Modifying注解通知SpringData这是一个DELETE或UPDATE操作
      3)使用@Transactional进行事务管理
      三个注解缺一不可
    4、参数使用规则
      1)占位符?X  需要和方法中所传递的参数顺序一致。X是从1开始
      2)@Param("参数名")
        1>方法中所传递的参数使用@Param("sname")注解标识命名参数
        2>JPQL:sname使用参数
        3>如果是普通值 八种基本、包装类、String
      3)参数是对象
        1>使用@Param标注
        2>JPQL中使用:#{#对象.属性名}
二、原生SQL查询
  1.使用规则
    0、纯原声SQL操作
    1、在@Query中开启原生SQL操作  nativeQuery = true
    2、增删改操作需要使用
      1)@Modifying
      2)@Transactional
  5.错误
    1、java.sql.SQLExeption:Can not issue data manipulation statements with
       executQueery()
    2、少些了@Modifying
原生SQL实现增删改查,针对的是表和字段操作的
查询
1、根据书籍名称模糊查询
2、根据类型名称查询书籍信息
三、事务操作

事务管理@Transactional有业务层房业务层 没有业务层放持久层
如果是对单一方法进行管理 放在方法上
如果类中多个方法进行擦走 放在类统一管理
四、动态SQL
1.问题
2.解决方案
  1、继承JpaSpecificationExecutor接口调用内置方法
  2、内置方法
    1)T findOne(Specification<T>spec);单个查询
    2)List<T>findAll(Specification<T>spec);多条件查询功能
    3)Page<T>findAll(Specification<T>spec,Pageable Pageable);多条件查询+分页
  3、特殊对象
    1)Specification对象  它是查询条件对象,是一个接口,可以在实现Specification接口时,自定义动态SQL
    2)Pageable对象
      1>分页专用工具
      2>在SpringBoot
3.多条件动态SQL查询以上版本,由PageResultof(page,size)生成
4.分页实现
关键字抽象方法
问题
  1、默认方法不够用
  2、关键字抽象方法名字太长
     省事但是不能满足实际需求
     多条件查询都不能实现

动态SQL:多条件
1、需要一个对象专门存放查询的条件
2if判断来拼接sql
3、值比较  banme = #{}








在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值