Spring Boot笔记-目前对Web后端开发的认识

目录

 

 

基本概念

代码与实例


 

基本概念

此篇博文记录了本人目前对web后端开发的认识。

Web开发一般的思路:

先dao再service最后controller

而dao又分为dataobject和repository!

而这个dataobject一般是数据库的映射,比如MySQL数据库,如果用jpa,那么命名也是有讲究的,但如果使用注解,就没有这么多的讲究了。

而这个repository,为接口,结构接口extends JpaRepository,并且可以自己写一些方法。这里就可以通过jpa操作数据。

 

个人觉得Service层一般先搞一个接口,把需要的逻辑业务写到这个接口里面,在用一个类,继承这个接口,然后通过调用repository,把那些数据给记录进去。这里可以看到一般Service中都有一个@Autowired,把Repository给注入进去了。

 

对于Controller层目前还没有什么深的体会。

 

对于dao,感觉是搞数据的,估计这个就叫做数据持久层,这个名字可真骚气啊。

对于service,感觉是搞逻辑业务的,但逻辑业务不够的时候,可以新增几个函数到接口里面,继承的类去实例化。

 

还有个关键点:个人觉得除非很熟悉这套模式可以不进行go to test,这个go to test还是很有用的,至少可以保证这部分代码是可以跑的。

还有个关键的地方,就是少去用0,1,表示状态,java中的枚举,感觉比C++的爽很多,感觉就和类,对象一样。多使用枚举去表示状态,增加可读性
Spring Boot笔记-目前对Web后端开发的认识_第1张图片

 

 

代码与实例

如下的结构:

Spring Boot笔记-目前对Web后端开发的认识_第2张图片

其中dataobject就是放基本数据,与数据库进行映射的。

其中enums就是增加代码可读性,避免大量的状态用0,1表示。

其中repository为存储数据的,service就是操作这个的。

其中service中有接口,和实例,这个要分开,这样才能使得结构更加清晰,

下面给出一组的代码(ProductInfo的dao和service层代码)

ProductInfo.java

package selldemo.demo.dataobject;

import lombok.Data;

import javax.persistence.Entity;
import javax.persistence.Id;
import java.math.BigDecimal;

@Entity
@Data
public class ProductInfo {

    @Id
    private String productId;

    //名字
    private String productName;

    //单价
    private BigDecimal productPrice;

    //库存
    private Integer productStock;

    //描述
    private String productDescription;

    //小图
    private String productIcon;

    //状态 0 正常, 1 下架
    private Integer productStatus;

    //类目编号
    private Integer categoryType;
}

ProductInfoRepository.java

package selldemo.demo.repository;

import org.springframework.data.jpa.repository.JpaRepository;
import selldemo.demo.dataobject.ProductInfo;

import java.util.List;

public interface ProductInfoRepository extends JpaRepository {

    //Dao层的东西主要在service中使用
    List findByProductStatus(Integer productStatus);
}

ProdctService.java

package selldemo.demo.service;

import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import selldemo.demo.dataobject.ProductInfo;

import java.util.List;

//service层
public interface ProductService {

    ProductInfo findOne(String productId);

    //查询所有商品列表
    List findUpAll();
    Page findAll(Pageable pageable);
    ProductInfo save(ProductInfo productInfo);
}

ProductServiceImpl.java

package selldemo.demo.service.impl;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Service;
import selldemo.demo.dataobject.ProductInfo;
import selldemo.demo.enums.ProductStatusEnum;
import selldemo.demo.repository.ProductInfoRepository;
import selldemo.demo.service.ProductService;

import java.util.List;

@Service
public class ProductServiceImpl implements ProductService {

    @Autowired
    private ProductInfoRepository repository;

    @Override
    public ProductInfo findOne(String productId) {

        return repository.findOne(productId);
    }

    @Override
    public List findUpAll() {

        return repository.findByProductStatus(ProductStatusEnum.UP.getCode());
    }

    @Override
    public Page findAll(Pageable pageable) {

        return repository.findAll(pageable);
    }

    @Override
    public ProductInfo save(ProductInfo productInfo) {

        return repository.save(productInfo);
    }
}

另外的那个枚举

ProductStatusEnum.java

package selldemo.demo.enums;

import lombok.Getter;

@Getter
public enum ProductStatusEnum {

    UP(0, "在架"),
    DOWN(1, "下架");

    private Integer code;
    private String message;

    ProductStatusEnum(Integer code, String message){

        this.code = code;
        this.message = message;
    }
}

 

你可能感兴趣的:(Java,Spring,Spring,Boot,Java,Spring,Boot,jpa)