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

140 篇文章 4 订阅
47 篇文章 1 订阅

目录

 

 

基本概念

代码与实例


 

基本概念

此篇博文记录了本人目前对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++的爽很多,感觉就和类,对象一样。多使用枚举去表示状态,增加可读性

 

 

代码与实例

如下的结构:

其中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<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 {

    @Autowired
    private ProductInfoRepository repository;

    @Override
    public ProductInfo findOne(String productId) {

        return repository.findOne(productId);
    }

    @Override
    public List<ProductInfo> findUpAll() {

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

    @Override
    public Page<ProductInfo> 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;
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IT1995

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值