springboot jpa 的使用

一、引入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;
    }

猜你喜欢

转载自www.cnblogs.com/lyon91/p/9034816.html