70、Spring Data JPA 的 自定义查询(全手动,自己写完整 SQL 语句)

1、方法名关键字查询(全自动,既不需要提供sql语句,也不需要提供方法体)

2、@Query查询(半自动:提供 SQL 或 JPQL 查询)

3、自定义查询(全手动)

★ 自定义查询(全手动)

复制代码
------Spring Data什么都不干,所有查询方法的方法体完全由开发者来实现。

▲ 自定义查询方法的设计(编程步骤)

复制代码
(1) 让DAO组件接口额外继承一个自定义DAO接口
(2) 自定义DAO接口可以定义数据访问方法,
     再为该自定义DAO接口定义实现类、在该实现类中实现自定义的方法。

 Spring Data就能将自定义DAO接口的实现类中实现的查询方法"移植"给自己的DAO组件。

▲ 自定义查询方法的实现原理

复制代码
DAO组件的实现类由Spring Data使用动态代理来动态生成的,
因此DAO组件中所有查询方法的方法体都由Spring Data负责生成。

对于DAO接口中从父接口(自定义接口)中继承得到的方法,
Spring Data会直接用其父接口的实现类所实现的查询方法作为其实现。

代码演示

需求:实现一个全手动自己写sql的查询方法,根据学生名字和地址进行模糊查询

复制代码
步骤:
    (1) 让DAO组件接口额外继承一个自定义DAO接口
    (2) 自定义DAO接口可以定义数据访问方法,
          再为该自定义DAO接口定义实现类、在该实现类中实现自定义的方法。

1、让DAO组件接口额外继承一个自定义DAO接口

2、自定义DAO接口可以定义数据访问方法,再为该自定义DAO接口定义实现类、在该实现类中实现自定义的方法。

测试:

相关推荐
叫我龙翔7 小时前
【MySQL】从零开始了解数据库开发 --- 库的操作
数据库·mysql·数据库开发
没有bug.的程序员7 小时前
Redis Stream:轻量级消息队列深度解析
java·数据库·chrome·redis·消息队列
GottdesKrieges7 小时前
OceanBase容量统计:租户、数据库、表大小
数据库·oceanbase
pan3035074797 小时前
mysql 回表查询(二次查询,如何检查,如何规避)
数据库·mysql
Michaelwubo8 小时前
elasticsearch-7.17.29 集群案例,k8s方式和原始方式
数据库
TDengine (老段)8 小时前
TDengine 选择函数 Last() 用户手册
大数据·数据库·sql·物联网·时序数据库·tdengine·涛思数据
little_xianzhong8 小时前
关于对逾期提醒的定时任务~改进完善
java·数据库·spring boot·spring·mybatis
Sally璐璐8 小时前
Go正则表达式实战指南
数据库·mysql·golang
小猪咪piggy8 小时前
【JavaEE】(23) 综合练习--博客系统
java·数据库·java-ee
bikong78 小时前
一种高效绘制余晖波形的方法Qt/C++
数据库·c++·qt