首页>代码>springdata jpa 1.7.0.RELEASE各种查询方法总结demo大全,通过junit测试>/springdata_jpa_demo/src/main/java/com/zuidaima/springdata/service/impl/UserServiceImpl.java
package com.zuidaima.springdata.service.impl;

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

import javax.annotation.Resource;
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Path;
import javax.persistence.criteria.Predicate;
import javax.persistence.criteria.Root;

import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import org.springframework.data.domain.Sort.Direction;
import org.springframework.data.jpa.domain.Specification;
import org.springframework.stereotype.Service;

import com.zuidaima.springdata.entity.User;
import com.zuidaima.springdata.repository.UserRepository;
import com.zuidaima.springdata.service.UserService;

/**
 * *@author javaniu 2013-06-04 22:27:23
 */

@Service
public class UserServiceImpl implements UserService {

	@Resource
	public UserRepository userRepository;

	@Override
	public User findOneByName(final String name) {
		Specification<User> specification = new Specification<User>() {
			@Override
			public Predicate toPredicate(Root<User> root,
					CriteriaQuery<?> query, CriteriaBuilder criteriaBuilder) {
				Predicate _name = criteriaBuilder.equal(root.get("name"), name);
				return criteriaBuilder.and(_name);
			}
		};
		return userRepository.findOne(specification);
	}

	@Override
	public Page<User> findAllByLargeThanId(final Long id, int page, int count,
			Sort sort) {
		Specification<User> specification = new Specification<User>() {
			@Override
			public Predicate toPredicate(Root<User> root,
					CriteriaQuery<?> query, CriteriaBuilder criteriaBuilder) {
				Path<Long> $id = root.get("id");
				Predicate _id = criteriaBuilder.gt($id, id);
				return criteriaBuilder.and(_id);
			}
		};
		Pageable pageable = new PageRequest(page - 1, count, sort);
		return userRepository.findAll(specification, pageable);
	}

	@Override
	public User findAllByIdAndName(final Long id, final String name) {
		Specification<User> specification = new Specification<User>() {
			@Override
			public Predicate toPredicate(Root<User> root,
					CriteriaQuery<?> query, CriteriaBuilder criteriaBuilder) {
				List<Predicate> predicates = new ArrayList<Predicate>();
				Path<Long> $id = root.get("id");
				Predicate _id = criteriaBuilder.equal($id, id);
				predicates.add(_id);
				Path<Long> $name = root.get("name");
				Predicate _name = criteriaBuilder.equal($name, name);
				predicates.add(_name);
				return criteriaBuilder.and(predicates
						.toArray(new Predicate[] {}));
			}
		};
		return userRepository.findOne(specification);
	}

	@Override
	public Page<User> findAllByLikeName(final String name, int page, int count) {
		Specification<User> specification = new Specification<User>() {
			@Override
			public Predicate toPredicate(Root<User> root,
					CriteriaQuery<?> query, CriteriaBuilder criteriaBuilder) {
				Path<String> _name = root.get("name");
				Predicate _key = criteriaBuilder.like(_name, "%" + name + "%");
				return criteriaBuilder.and(_key);
			}
		};
		Sort sort = new Sort(Direction.DESC, "id");
		Pageable pageable = new PageRequest(page - 1, count, sort);
		return userRepository.findAll(specification, pageable);
	}

	@Override
	public Page<User> findAllByInIds(final List<Long> ids) {
		Specification<User> specification = new Specification<User>() {
			@Override
			public Predicate toPredicate(Root<User> root,
					CriteriaQuery<?> query, CriteriaBuilder criteriaBuilder) {
				return criteriaBuilder.in(root.get("id")).value(ids);
			}
		};
		int page = 1;
		int count = ids.size();
		Sort sort = new Sort(Direction.DESC, "id");
		Pageable pageable = new PageRequest(page - 1, count, sort);
		return userRepository.findAll(specification, pageable);
	}

	@Override
	public List<User> findAllByIds(List<Long> ids) {
		return userRepository.findAllByIds(ids);
	}

	@Override
	public User findAllByName(String name) {
		return userRepository.findAllByName(name);
	}

}
最近下载更多
hait69396  LV8 2018年11月3日
13699231229  LV2 2018年4月25日
1119616605  LV18 2018年2月25日
BigBean  LV2 2017年9月19日
lingdu5h  LV3 2017年9月6日
der2030  LV17 2017年8月3日
jinbiao5  LV3 2017年6月29日
xiaoxinwt  LV10 2017年6月28日
vitalist  LV10 2017年6月19日
lisinian  LV6 2017年6月14日
最近浏览更多
fengshengtian  LV8 2022年2月26日
2021年11月11日
暂无贡献等级
253702090  LV3 2021年8月15日
徐万强  LV9 2021年6月2日
dieudonne  LV8 2021年3月2日
liudcc  LV5 2021年1月19日
Coincidance  LV8 2020年12月3日
gepanjiang 2020年10月23日
暂无贡献等级
As youi wish  LV1 2020年9月2日
猴哥猴哥  LV12 2020年5月18日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友