zoukankan      html  css  js  c++  java
  • SpringDataJPA

    看着自己弟弟在成都聚全家之力盘一套房,

    看着自己二哥,在成都也为车贷房贷奔波劳累,身心俱惫,

    生活不易啊,这个社会环境下,就像从数据库拿数据一样,只拿我们想要的,或许会活的滋润很多吧。

    最近的这个项目接触到了SpringDataJPA的使用,就结合一些资料做个学习总结

      首先说说 SpringData 吧,大家都知道Spring善于整合,吸天下功力,一博己身越龙门,

      现在的Spring就是那个越过龙门大展宏图的鲤

      SpringData是Spring开发团队提供的一系列对持久层框架的整合的规范接口,

        比如redis,mongodb,jpa,elasticSearch等,mybatis(卖女求荣,hahahaha...)

      今天我们的主角就是JPA,

    SpringDataJPA:

      核心:AOP (JPA只是一套标准的接口定义,Hibernate底层的实现)

      玩法:持久层接口继承以下两个接口,可完成常规的单表简单复杂查询

        JpaRepository<T,ID>       : 该接口提供了基本的增删改查

        JpaSpecificationExecutor<T>  :用于做复杂的条件查询

      查询方法名自动生成 和 @Query注解 ):

        1.方法名自动生成

        在使用的时候,接口中定义了很多的查询API,可以直接使用(findAll(),findByID()...)

          让人摸不透的是可以自定义方法名完成查询 

          

          语法规则如下:

          

        2. @Query注解然后就是手写sql了,手写sql又分为面向对象查询,和原生sql查询,取决于一个 @nativeQuery=“”的boolean值

           @nativeQuery,默认为false,采用面向对象的方式进行查询,

             手动设置为true后,就可以在value中键入原生sql语句了(推荐使用这种,可以在客户端检验正确性)

        /**
         * 根据标签id 查询热门的回答列表
         * @param labeiId        
         * @param pageable 分页对象
         * @return
         */
        //开启手写sql 不使用面向对象的方式查询
        @Query(nativeQuery = true, value = "SELECT * FROM tb_problem p WHERE p.`id`IN(SELECT problemid FROM tb_pl WHERE labelid = ?)ORDER BY reply DESC")
        Page<Problem> findHot(String labeiId,Pageable pageable);
    

      修改和删除:如果想完成修改和删除的话,就得另外加上一个注解了  @Modifying

          加了@modefying注解后,业务层必须加上事务注解才能进行修改和删除   @Transactional

        

    若有错误,欢迎指出修正

       

  • 相关阅读:
    从技术演变的角度看互联网后台架构
    设计模式的六大原则
    Xinetd服务的安装与配置详解
    linux route详细解读
    Linux信号处理
    Go语言的成功也预示着Rust的成功【转】
    Nginx/LVS/HAProxy负载均衡软件的优缺点详解
    C#代码覆盖率实践-vsinstr和OpenCover
    MYSQL企业常用架构与调优经验分享
    StrongLoop
  • 原文地址:https://www.cnblogs.com/msi-chen/p/10602146.html
Copyright © 2011-2022 走看看