zoukankan      html  css  js  c++  java
  • Spring data jpa 使用技巧记录

      软件152 尹以操

    最近在用Springboot 以及Spring data jpa  ,使用jpa可以让我更方便的操作数据库,特开此帖记录使用jpa的一些小技巧。

      一、使用spring data jpa需要定义接口,并继承jpa的接口,可以根据功能的不同来继承不同的接口,主要可以继承CrudRepository,JpaRepository等,继承的接口,里需要传两个泛型参数,第一个是这个接口操作的实体类名,第二个是这个实体类的主键类型,如:CrudRepository<UserEntity,Integer> :      

      1.Repository是一个空接口,即是一个标记接口。
        2.若我们定义的接口继承了Repository,则该接口会被IOC容器识别为一个Repository Bean,纳入到IOC容器中,进而可以在该接口中定义满足一定规范的方法。IOC容器中实际存放了继承了Repository的接口的实现类,而这个实现类由spring帮助完成 。在applicationContext.xml中我们配置了springdata:这里的base-package指定了Repository Bean所在的位置,在这个包下的所有的继承了Repository的接口都会被IOC容器识别并纳入到容器中,如果没有继承Repository则IOC容器无法识别。
         3.我们也可以通过注解的方式替代继承Repository接口@RepositoryDefinition(domainClass=需要处理的实体类的类型,IdClass=逐渐的类型)。
         4.除了使用注解和继承Repository接口我们还可以继承Repository的子接口与实现类,他们的关系如下:
            Repository:仅仅是一个标识,表明任何继承它的均为仓库接口类。
            CrudRepository:继承Repository,实现了一组CRUD操作相关的方法。 PagingAndSortingRepository:继承CrudRepository,实现了一组分页排序相关的方法。
            JpaRepository:继承PagingAndSortingRepository,实现一组JPA规范的相关方法。
            自定义的XxxxRepository:需要继承JpaRepository,这样的XxxxRepository接口就具备了通用的数据访问控制层的能力。
            JpaSpecificationExecutor:不属于Repository体系,实现一组JPACriteria查询相关的方法。

      参考文章:http://blog.sina.com.cn/s/blog_74d509430102wgae.html 

      二、在这个接口中定义一些方法,这些方法可以对数据库进行操作,这些方法名可以依照JPA的命名规则来取,这样我们就可以不用写SQL语句了。具体可以百度。

      三、使用方式方法和技巧:  

        如下图:

        

        注意写原生SQL,需要在@Query注解里面加上nativeQuery = true,使用HQL则不用。

        如果该方法执行的是修改或删除操作,需要加上@Modifying注解,如图:

        

        如果查询的结果是一个对象集合,则这个方法的返回值可以写作List<EntityName>或Iterable<EntityName>,如果在SQL中用到group by分组查询,如:返回的结果是两列数据,则可以用Object[][]来接收返回的内容,如图:

        

    未完待续。

  • 相关阅读:
    初识python 2.x与3.x 区别
    装饰器
    函数的进阶
    Spring Boot启动问题:Cannot determine embedded database driver class for database type NONE
    22.Spring Cloud Config安全保护
    23.Spring Cloud Bus 无法更新问题(踩坑) Spring cloud config server Could not fetch remote for master remote
    24.Spring Cloud之Spring Cloud Config及Spring Cloud Bus
    Spring Boot整合Spring Data Elasticsearch 踩坑
    项目中Spring Security 整合Spring Session实现记住我功能
    32.再谈SpringBoot文件上传
  • 原文地址:https://www.cnblogs.com/hyyq/p/6964549.html
Copyright © 2011-2022 走看看