SpringBoot2.X项目基本构建基础(一)

一、 前提环境准备

JDK1.8+以上

Maven3.5+以上

IDEA(旗舰版)

PostMan(以上软件有需要的可以私信我)

二、基本的包结构及相关介绍

controler层

controller通过service的接口来控制业务流程,也可通过接收前端传过来的参数进行业务操作。

domain层

是数据库在项目中的类,包含实体类的属性和对应属性的set、get方法。

mapper层

也称Dao层,会定义实际使用到的方法,比如增删改查。数据源和数据库连接的参数都是在配置文件中进行配置的,配置文件一般在同层的XML文件夹中。对数据进行持久化操作。

service层

主要是针对具体的问题的操作,把一些数据层的操作进行组合,间接与数据库打交道(提供操作数据库的方法)。

要做这一层的话,要先设计接口,在实现类。

utils层

工具类层,通用的、与业务无关的,可以独立出来,可供其他项目使用

在这里插入图片描述
基本逻辑:
在这里插入图片描述
新手小白,个人见解,如有疑问还请指出,谢谢。

三、首先创建一个Maven项目

可以在线创建网址请点击
在这里插入图片描述

HTTP接口GET请求方法

定义一个工具类接口

utils层
package net.xdclass.demoproject.utils;

public class JsonData {
    private int code;

    private String msg;

    private Object data;


    public int getCode() {
        return code;
    }

    public void setCode(int code) {
        this.code = code;
    }

    public String getMsg() {
        return msg;
    }

    public void setMsg(String msg) {
        this.msg = msg;
    }

    public Object getData() {
        return data;
    }

    public void setData(Object data) {
        this.data = data;
    }

    public JsonData(int code, Object data){
        this.code=code;
        this.data=data;
    }
    public JsonData(int code,Object data,String msg){
        this.code=code;
        this.data=data;
        this.msg=msg;

    }
    public static JsonData buildSucess(Object data){
        return new JsonData(0,data);
    }
    public static JsonData buildErro(String msg){
        return new JsonData(-1,msg);
    }
    public static JsonData buildSucess(String msg,int code){
        return new JsonData(code,msg);
    }
}

GET请求一般用于查询请求

视频列表查询为例

domain层
package net.xdclass.demoproject.domain;

//import javax.xml.crypto.Data;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonProperty;

import java.util.Date;

import java.io.Serializable;
import java.util.List;

public class Video implements Serializable {
    private int id;

    private  String title;

    private String summary; //概要

    private int price;  //价格

    @JsonProperty("conver_Img")  //另存名
    private String converImg;  //封面图

    @JsonProperty("crete_Time")
    @JsonFormat(pattern="yyyy-MM-dd hh:mm:ss",locale="zh",timezone="GMT+8")  //日期格式化
    private Date creteTime; //创建时间

    @JsonProperty("chapter_list")
//    @JsonInclude(JsonInclude.Include.NON_NULL)
    private List<Chapter> chapterlist;

    public List<Chapter> getChapterlist() {
        return chapterlist;
    }

    public void setChapterlist(List<Chapter> chapterlist) {
        this.chapterlist = chapterlist;
    }  //视频里面章信息

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public String getSummary() {
        return summary;
    }

    public void setSummary(String summary) {
        this.summary = summary;
    }

    public int getPrice() {
        return price;
    }

    public void setPrice(int price) {
        this.price = price;
    }

    public String getConverImg() {
        return converImg;
    }

    public void setConverImg(String converImg) {
        this.converImg = converImg;
    }

    public Date getCreteTime() {
        return creteTime;
    }

    public void setCreteTime(Date creteTime) {
        this.creteTime = creteTime;
    }

    public Video(int id, String title) {
        this.id = id;
        this.title = title;
        this.creteTime = new Date();
    }

    @Override
    public String toString() {
        return "Video{" +
                "id=" + id +
                ", title='" + title + '\'' +
                ", summary='" + summary + '\'' +
                ", price=" + price +
                ", converImg='" + converImg + '\'' +
                ", creteTime=" + creteTime +
                ", chapterlist=" + chapterlist +
                '}';
    }
}

mapper层
@Repository   //mapper层注释
public class VideoMapper {
    //模仿数据库数据
    private static Map<Integer, Video> videoMap = new HashMap<>();
    static {  
        videoMap.put(1,new Video(1,"xd"));
        videoMap.put(2,new Video(2,"xid"));
        videoMap.put(3,new Video(3,"xud"));
        videoMap.put(4,new Video(4,"xdd"));
    }
    
//    将map集合转换成list集合
    public List<Video> listVideo (){
            List<Video> list =new ArrayList<>();
            list.addAll( videoMap.values());

        return list;
    }
}

	service层

在这里插入图片描述

@Service //service蹭注释
public class VideoServiceimpl implements VideoService {

    @Autowired  //相当于new一个videoMapper,可直接调用
    private VideoMapper videoMapper;

//    重写接口里面的方法,返回给list
    @Override
    public List<Video> listVideo() {
        return videoMapper.listVideo();
    }
}

controler层
@RestController //返回json格式;不用Controller是因为这个无法返回json格式
@RequestMapping("/api/v1/pub/video") //相当于url路径
public class VideoController {

    @Autowired
    private VideoService videoService;
//    @RequestMapping(value = "list",method = RequestMethod.GET)
    @GetMapping("list")
    public JsonData list(){
       List<Video> list= videoService.listVideo();


        return JsonData.buildSucess(list);
    }
测试结果(返回mapper里面的信息)

在这里插入图片描述

用户登录接口(Post)

	controler层
    @PostMapping("login") 
    public JsonData login(@RequestBody User user){
        System.out.println("user" + user.toString());
//        调用service的login方法
       String token= userService.login(user.getUsername(),user.getPwd());
       //如果token不为空则调用成功否则错误
        return token != null?JsonData.buildSucess(token):JsonData.buildErro("账号密码错误"); 
    }

mapper层
@Repository
public class UserMapper {
    private static Map<String , User> videoMap= new HashMap<>();
    static {
        videoMap.put("xd1",new User(1,"xd1","123"));
        videoMap.put("jack",new User(2,"jack","1234"));
        videoMap.put("xd3",new User(3,"xd3","12345"));
        videoMap.put("xd4",new User(4,"xd4","1234567"));

    }
    public User login(String usernam ,String pwd){
       User user= videoMap.get(usernam);

//判断是否为空
       if (user==null){
           return null;
       }
       if (user.getPwd().equals(pwd)){
           return user;
       }
       return null;
    }
service层

在这里插入图片描述

@Service
public class UserServiceimpl implements UserService {
    private static Map<String, User> map=new HashMap<>();

    @Autowired
    private UserMapper userMapper;
    
//    调用mapper层判断是否为空,不为空给每一个用户设置一个id
    @Override
    public String login(String username, String pwd) {

        
        User user=  userMapper.login(username,pwd);
        if (user==null){
            return null;
        }else {
         String token=   UUID.randomUUID().toString();
         System.out.println(token);
         map.put(token,user);
         return token;
        }
    }
实现

在这里插入图片描述

对象数组提交接口

以视频里面的章节为例

新建一个domain

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
注意事项:
修改别名的时候之后也要用别名
指定字段不返回:@JsonIgnore
指定日期格式:@JsonFormat(pattern=“yyyy-MM-dd hh:mm:ss”,locale=“zh”,timezone=“GMT+8”)
空字段不返回:@JsonInclude(Include.NON_NULL)
指定别名:@JsonProperty

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值