Spring Boot jpa Service层代码实例

这篇文章主要介绍了Spring Boot" title="Spring Boot">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);

}

}

以上是 Spring Boot jpa Service层代码实例 的全部内容, 来源链接: utcz.com/z/358616.html

回到顶部