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



















