美文网首页Java 程序员Java
SpringDataJpa持久层常用操作

SpringDataJpa持久层常用操作

作者: 程序花生 | 来源:发表于2021-09-06 16:26 被阅读0次

    前言

    心态好了,就没那么累了。心情好了,所见皆是明媚风景。

    “一时解决不了的问题,那就利用这个契机,看清自己的局限性,对自己进行一场拨乱反正。”正如老话所说,一念放下,万般自在。如果你正被烦心事扰乱心神,不妨学会断舍离。断掉胡思乱想,社区垃圾情绪,离开负面能量。心态好了,就没那么累了。心情好了,所见皆是明媚风景。

    SpringDataJPA 是 Spring Data 技术下的子项目,使用 SpringDataJPA 访问数据只需要数据访问层接口实现 JpaRepository 接口即可。由于 JpaRepository 接口继承了 PagingAndSortingRepository 接口,所以也有它的一些 功能。

    默认继承方法

    前面的案例中已经介绍了添加的方法,那如下我们需要查找一个或者多个,删除一个或者多个该如何做呢,查找单个或 者多个,我们只需要在上一个案例的基础上,在com.cyj.springboot.controller下的StudentController类下,添 加如下代码:

    /** * http://localhost:8090/findOne?id=1 
    * @param id 
    * @return student */ 
    @RequestMapping("/findOne") 
    public Object findStudentById(int id) { 
        Student student = repository.findOne(id); 
        return student; 
    }
    

    查询单个运行效果如下:


    关键字抽象方法

    • 按照Spring Data 的规则,我们可以通过定义在Repository接口下的方法来执行查询等自定义操作,查询的方法必

    须以find、get、read开头,同时涉及条件查询时,SpringDataJpa支持将条件属性定义在数据访问层接口下的方法 名中。其中命名约定如下: - 条件属性通过条件关键字连接。 - 条件属性的首字母必须大写

    SpringDataJpa解析方法吗的原则

    框架在进行方法名解析时,会先把方法名多余的前缀截取掉,比如 find、findBy、read、readBy、get、getBy

    然后对剩下部分进行解析。并且如果方法的最后一个参数是 Sort 或者 Pageable 类型,也会提取相关的信息,以便 按规则进行排序或者分页查询。如下表列举部分关键字抽象方法的含义:

    • And — 等价于 SQL 中的 and 关键字,比如 findByUsernameAndPassword(String user, Striang pwd);
    • Or — 等价于 SQL 中的 or 关键字,比如 findByUsernameOrAddress(String user, String addr);
    • Between — 等价于 SQL 中的 between 关键字,比如 findBySalaryBetween(int max, int min);
    • LessThan — 等价于 SQL 中的 “<”,比如 findBySalaryLessThan(int max);
    • GreaterThan — 等价于 SQL 中的”>”,比如 findBySalaryGreaterThan(int min);
    • IsNull — 等价于 SQL 中的 “is null”,比如 findByUsernameIsNull();
    • IsNotNull — 等价于 SQL 中的 “is not null”,比如 findByUsernameIsNotNull();
    • NotNull — 与 IsNotNull 等价;
    • Like — 等价于 SQL 中的 “like”,比如 findByUsernameLike(String user);
    • NotLike — 等价于 SQL 中的 “not like”,比如 findByUsernameNotLike(String user);
    • OrderBy — 等价于 SQL 中的 “order by”,比如 findByUsernameOrderBySalaryAsc(String user);
    • Not — 等价于 SQL 中的 “! =”,比如 findByUsernameNot(String user);
    • In — 等价于 SQL 中的 “in”,比如 findByUsernameIn(Collection userList) ,方法的参数可以是 Collection

    类型,也可以是数组或者不定长参数;

    • NotIn — 等价于 SQL 中的 “not in”,比如 findByUsernameNotIn(Collection userList) ,方法的参数可以是

    Collection 类型,也可以是数组或者不定长参数;

    SpringDataJpa关键字抽象方法的使用

    再上一个案例基础上,查找姓名中包含“刘”的全部学生信息。

    在com.cyj.springboot.repository下配置StudentRepository类中添加如下代码:

    public interface StudentRepository extends JpaRepository<Student, Integer>{ 
        //根据姓名模糊查找学生信息 
        public List<Student> findByStudentNameContaining(String name); 
    }
    

    在StudentController类下添加如下代码:

    /*** 
    * http://localhost:8090/findStudentByName?name=刘 
    * @param name 
    * @return */ 
    @RequestMapping("/findStudentByName") 
    public Object findStudentByName(String name) {             
        List<Student> student = repository.findByStudentNameContaining(name); return student; 
    }
    

    启动测试,运行效果如下:

    作者:Sunny_Chen
    链接:https://juejin.cn/post/7003954282194026533
    来源:掘金

    相关文章

      网友评论

        本文标题:SpringDataJpa持久层常用操作

        本文链接:https://www.haomeiwen.com/subject/fwzewltx.html