zoukankan      html  css  js  c++  java
  • 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;
        }
  • 相关阅读:
    (干货).NET开发丰富的公共类库助你事半功倍(供下载免费使用)
    .NET+模块编排+数据库操作类的封装+分层架构+实体类+Ajax.net+Athem.NET+javascript+Activex组件+用户权限等
    IOS条形码扫描
    企业架构研究总结(2)——问题的由来和基本概念(转载)
    企业架构研究总结(1)——参考资料列表(转载)
    理解.NET中的异常(一)
    [转]《Java Generics and Collections》读书笔记三:协变式覆盖与泛型重载
    [转]《Java Generics and Collections》读书笔记二:子类化与通配符
    转:C++单例模式
    [转] java package import
  • 原文地址:https://www.cnblogs.com/lyon91/p/9034816.html
Copyright © 2011-2022 走看看