您的位置:首页 > 编程语言 > Java开发

Spring-Data-JPA 自定义查询方法底层如何处理

2018-03-02 20:05 1206 查看
public interface UserDao extends JpaRepository<User, Integer>{
        //自定义查询
/**
* 方法签名已经告诉spring-data-jpa足够的信息来创建这个方法的实现了
* spring-data会检查Repository接口中所有的方法,解析方法的名称,并且基于
* 被持久化的对象来试图推测方法的目的。

* findUserByName 是如何映射的在springdata中的,springdata允许在方法名称使用四个动词:get,find,read
* 和count.其中get,find,read是同义的,这个是三个动词对应Repository方法都会查询数据并且
* 返回对象,而动词count则会返回匹配的对象数量,而不是对象本身。

* findUserByName方法非常简单,需要属性name来匹配查询User,springdata的处理也更加有意思,
* Repository方法有有个动词,一个可选的主题(Subject),关键词By以及一个断言所组成

* find是查询动词  User为主题  Name为断言,对于大多数场景主题是会省略的

* findUserByName中by后面的Name为断言也就是查询的参数,在断言中会有一个或多个限制结果的条件。如果没有就默认按照等于去查询。


*/

        User findUserByName(String name);
    /**
     * 功能:通过姓名进行模糊查询集合
     * 此时参数传递的形式为 "%李四%"
     */
    List<User>  findByNameIsLike(String name);

      /**
     * 功能:查询大于或等于参数为年龄的集合
     * 
     * findByAgeIsGreaterThanEqual:中断言为Age属性也就是查询的查询,限制条件是IsGreaterThanEqual大于或等于
     */
    List<User> findByAgeIsGreaterThanEqual(Integer age);
     /**
      * 功能:通过id降序排列
      * 不能写成findByIdOrderByDesc:这样写的话,是通过id查询对象集合,并且结果以id的降序排列
      */
    List<User> findByOrderByIdDesc();
}
以下来自官方手册:





内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: