一、引入pom
<!-- jpa --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency>
二、一套增删改查带分页
public ResponseEntity<Page<SkuQuota>> findByPage(Pageable pageable) throws ParseException { Page<SkuQuota> list = skuQuotaService.findByPage(pageable); return new ResponseEntity<>(list, HttpStatus.OK); }
自定义方法,接收参数(方式有两种)
@Override public Page<SkuQuota> findByPage(Pageable params) { Sort sort = new Sort(Direction.DESC, "vmiCreatetime"); Pageable pageable = new PageRequest(params.getPageNumber(), params.getPageSize(), sort); Page<SkuQuota> rickPage = skuQuotaRepository.findAll(pageable); return rickPage; } public interface SkuQuotaRepository extends BaseRepository<SkuQuota,String>{ @Modifying @Transactional @Query("update SkuQuota s set s.hubAllocation = ?1 where s.skuNo = ?2 and s.soldTo= ?3") public int distributeBySkuAndSoldTo(String hubAllocation,String skuNo,String soldTo); }
不用写注解@Query
HubInfo findByHubId(String hbId);
规律就是find+参数名即可
自定义 Repository
/** * 自定义的基础BaseRepository,合并分页,排序,条件查询 * * @version 1.0 * * @author sdevil507 */ @NoRepositoryBean public interface BaseRepository<T,ID extends Serializable> extends JpaRepository<T, ID>,JpaSpecificationExecutor<T>{ }
根据条件查询
@Override public List<SkuQuotaHubVo> findHubBySoldTo(String skuNo, String soldTo) { PageRequest request = this.buildPageRequest(0, 10); Specification<SkuQuota> spec = new Specification<SkuQuota>() { @Override public Predicate toPredicate(Root<SkuQuota> root, CriteriaQuery<?> query, CriteriaBuilder cb) { List<Predicate> list = new ArrayList<Predicate>(); if (null != skuNo && !"".equals(skuNo)) { list.add(cb.equal(root.get("skuNo").as(String.class), skuNo)); } if (null != soldTo && !"".equals(soldTo)) { list.add(cb.equal(root.get("soldTo").as(String.class), soldTo)); } Predicate[] ps = new Predicate[list.size()]; return cb.and(list.toArray(ps)); } }; Page<SkuQuota> result = skuQuotaRepository.findAll(spec, request); return List; }
Enitiy
参数对应数据库字段
@Entity @Table(name = "sku_quota") public class SkuQuota extends BaseEntity{ /** 商品编码*/ @Column(name="SKU_NO") private String skuNo; /** 分销商子公司编号*/ @Column(name="SOLD_TO") private String soldTo; /** 品牌*/ @Column(name="BRAND") private String brand; @MappedSuperclass public abstract class BaseEntity { @Id @GenericGenerator(name = "idGenerator", strategy = "uuid") @GeneratedValue(generator = "idGenerator") @Column(name = "ID") protected String id; public String getId() { return id; } public void setId(String id) { this.id = id; }