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接口定义实现类、在该实现类中实现自定义的方法。
测试: