千家信息网

Spring Boot jpa Service层的示例分析

发表于:2024-11-14 作者:千家信息网编辑
千家信息网最后更新 2024年11月14日,这篇文章主要介绍了Spring Boot jpa Service层的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。示例:pac
千家信息网最后更新 2024年11月14日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日 */@Servicepublic 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 listBlog(Pageable pageable, Blog blog) {    return blogRepository.findAll(new Specification() {      @Override      public Predicate toPredicate(Root root, CriteriaQuery cq, CriteriaBuilder cb) {        List predicates = new ArrayList<>();        String title = blog.getTitle();        if (!"".equals(title) && title != null) {          predicates.add(cb.like(root.get("title"), "%" + title + "%"));        }        Long id = blog.getType().getId();        if (id != null) {          predicates.add(cb.equal(root.get("type").get("id"), id));        }        boolean isRecommend = blog.isRecommend();        if (isRecommend) {          predicates.add(cb.equal(root.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);  }}

感谢你能够认真阅读完这篇文章,希望小编分享的"Spring Boot jpa Service层的示例分析"这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!

0