Spring Boot jpa Service層代碼實例

 更新時間:2019年10月07日 09:24:34   作者:行之間   我要評論
這篇文章主要介紹了Spring Boot jpa Service層代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下

這篇文章主要介紹了Spring Boot jpa Service層代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下

package com.fei.service.impl;

import java.util.ArrayList;
import java.util.List;

import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Predicate;
import javax.persistence.criteria.Root;

import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.domain.Specification;
import org.springframework.stereotype.Service;

import com.fei.NotFoundException;
import com.fei.po.Blog;
import com.fei.po.Type;
import com.fei.repository.BlogRepository;
import com.fei.service.BlogService;

/**
 * Created by zxf on 2019年10月3日
 */
@Service
public class BlogServiceImpl implements BlogService {

  @Autowired
  private BlogRepository blogRepository;

  /**
   * 根據id查詢一條博客
   * 
   * @param id
   * @return
   */
  @Override
  public Blog getBlog(Long id) {
    return blogRepository.findById(id).get();
  }

  /**
   * 多條件動態查詢博客列表
   * 
   * @param pageable
   * @param blog
   * @return
   */
  @Override
  public Page<Blog> listBlog(Pageable pageable, Blog blog) {
    return blogRepository.findAll(new Specification<Blog>() {

      @Override
      public Predicate toPredicate(Root<Blog> root, CriteriaQuery<?> cq, CriteriaBuilder cb) {
        List<Predicate> predicates = new ArrayList<>();

        String title = blog.getTitle();
        if (!"".equals(title) && title != null) {
          predicates.add(cb.like(root.<String>get("title"), "%" + title + "%"));
        }

        Long id = blog.getType().getId();
        if (id != null) {
          predicates.add(cb.equal(root.<Type>get("type").get("id"), id));
        }

        boolean isRecommend = blog.isRecommend();
        if (isRecommend) {
          predicates.add(cb.equal(root.<Boolean>get("recommend"), isRecommend));
        }

        cq.where(predicates.toArray(new Predicate[predicates.size()]));
        return null;
      }
    }, pageable);
  }

  /**
   * 保存一條博客
   * 
   * @param blog
   * @return
   */
  @Override
  public Blog saveBlog(Blog blog) {
    return blogRepository.save(blog);
  }

  /**
   * 更新一條博客,先根據id查出結果回顯
   * 
   * @param id
   * @param blog
   * @return
   */
  @Override
  public Blog updateBlog(Long id, Blog blog) {
    Blog b = blogRepository.findById(id).get();
    if (b == null) {
      throw new NotFoundException("你要更新的博客不存在!");
    }

    BeanUtils.copyProperties(b, blog);
    return blogRepository.save(blog);
  }

  /**
   * 根據id刪除一條博客
   * 
   * @param id
   */
  @Override
  public void deleteBlog(Long id) {
    blogRepository.deleteById(id);
  }

}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • java字符串的重要使用方法以及實例

    java字符串的重要使用方法以及實例

    在本篇文章里小編給大家整理了關于java字符串的重要使用方法以及實例代碼,需要的朋友們可以跟著學習參考下。
    2019-03-03
  • java實現數據庫主鍵生成示例

    java實現數據庫主鍵生成示例

    這篇文章主要介紹了java實現數據庫主鍵生成示例,需要的朋友可以參考下
    2014-03-03
  • Java排序算法之堆排思想及代碼實現

    Java排序算法之堆排思想及代碼實現

    今天小編就為大家分享一篇關于Java排序算法之堆排思想及代碼實現,小編覺得內容挺不錯的,現在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-01-01
  • Java中HashMap和Hashtable的區別淺析

    Java中HashMap和Hashtable的區別淺析

    這篇文章主要介紹了Java中HashMap和Hashtable的區別淺析,本文總結了6條它們之間的不同之處,需要的朋友可以參考下
    2015-03-03
  • java實現自定義日期選擇器的方法實例

    java實現自定義日期選擇器的方法實例

    日期選擇器是我們日常開發中經常需要用到的一個功能,下面這篇文章主要給大家介紹了關于利用java實現自定義日期選擇器的相關資料,文中給出了詳細的示例代碼,需要的朋友可以參考借鑒,下面隨著小編來一起學習學習吧。
    2017-10-10
  • 深入學習Java單元測試(Junit+Mock+代碼覆蓋率)

    深入學習Java單元測試(Junit+Mock+代碼覆蓋率)

    在做單元測試時,代碼覆蓋率常常被拿來作為衡量測試好壞的指標,甚至,用代碼覆蓋率來考核測試任務完成情況,比如,代碼覆蓋率必須達到80%或 90%。下面我們就來詳細學習下java單元測試吧
    2019-06-06
  • java實現的滿天星效果實例

    java實現的滿天星效果實例

    這篇文章主要介紹了java實現滿天星效果的方法,涉及Java繪圖的應用,非常具有實用價值,需要的朋友可以參考下
    2014-11-11
  • 詳解poi+springmvc+springjdbc導入導出excel實例

    詳解poi+springmvc+springjdbc導入導出excel實例

    本篇文章主要介紹了poi+springmvc+springjdbc導入導出excel實例,非常具有實用價值,需要的朋友可以參考下。
    2017-01-01
  • Hibernate管理Session和批量操作分析

    Hibernate管理Session和批量操作分析

    這篇文章主要介紹了Hibernate管理Session和批量操作的技巧,包括Hibernate管理Session、批量處理數據等的常用技巧及注意事項,具有一定的參考借鑒價值,需要的朋友可以參考下
    2014-12-12
  • 使用JPA中@Query 注解實現update 操作方法(必看)

    使用JPA中@Query 注解實現update 操作方法(必看)

    下面小編就為大家帶來一篇使用JPA中@Query 注解實現update 操作方法(必看)。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-06-06

最新評論

北京pk赛车人工计划软件手机版