javascript
Spring Boot笔记-目前对Web后端开发的认识
目錄
?
?
基本概念
代碼與實例
?
基本概念
此篇博文記錄了本人目前對web后端開發(fā)的認識。
Web開發(fā)一般的思路:
先dao再service最后controller
而dao又分為dataobject和repository!
而這個dataobject一般是數據庫的映射,比如MySQL數據庫,如果用jpa,那么命名也是有講究的,但如果使用注解,就沒有這么多的講究了。
而這個repository,為接口,結構接口extends JpaRepository,并且可以自己寫一些方法。這里就可以通過jpa操作數據。
?
個人覺得Service層一般先搞一個接口,把需要的邏輯業(yè)務寫到這個接口里面,在用一個類,繼承這個接口,然后通過調用repository,把那些數據給記錄進去。這里可以看到一般Service中都有一個@Autowired,把Repository給注入進去了。
?
對于Controller層目前還沒有什么深的體會。
?
對于dao,感覺是搞數據的,估計這個就叫做數據持久層,這個名字可真騷氣啊。
對于service,感覺是搞邏輯業(yè)務的,但邏輯業(yè)務不夠的時候,可以新增幾個函數到接口里面,繼承的類去實例化。
?
還有個關鍵點:個人覺得除非很熟悉這套模式可以不進行go to test,這個go to test還是很有用的,至少可以保證這部分代碼是可以跑的。
還有個關鍵的地方,就是少去用0,1,表示狀態(tài),java中的枚舉,感覺比C++的爽很多,感覺就和類,對象一樣。多使用枚舉去表示狀態(tài),增加可讀性
?
?
代碼與實例
如下的結構:
其中dataobject就是放基本數據,與數據庫進行映射的。
其中enums就是增加代碼可讀性,避免大量的狀態(tài)用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 {@Idprivate String productId;//名字private String productName;//單價private BigDecimal productPrice;//庫存private Integer productStock;//描述private String productDescription;//小圖private String productIcon;//狀態(tài) 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<ProductInfo, String> {//Dao層的東西主要在service中使用List<ProductInfo> 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<ProductInfo> findUpAll();Page<ProductInfo> 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 {@Autowiredprivate ProductInfoRepository repository;@Overridepublic ProductInfo findOne(String productId) {return repository.findOne(productId);}@Overridepublic List<ProductInfo> findUpAll() {return repository.findByProductStatus(ProductStatusEnum.UP.getCode());}@Overridepublic Page<ProductInfo> findAll(Pageable pageable) {return repository.findAll(pageable);}@Overridepublic 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;} }?
總結
以上是生活随笔為你收集整理的Spring Boot笔记-目前对Web后端开发的认识的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: HTTP之Last-Modified、E
- 下一篇: Spring学习笔记-构造和Set方法注