JavaEE三层架构以及统一响应思维

1.DAO获取数据层,从数据库获取数据

import mybatisdemo.Pojo.User;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;

import java.util.List;

@Mapper

public interface MapperUser {
    @Select("select name,age from person where name=#{name}")
    List<User>select(String name);
}

2.Service数据逻辑处理。我当时难以理解的点是用什么样的的形式返回自定义的返回值。

还有自定义状态码。最后想到使用全局变量aum拿到数据,再进行逻辑处理。将处理后的结果返回值再return回去交给控制层返回结果集。状态码同样使用全局变量,根据不同的逻辑处理结果赋值不同状态码。最后再定义一个状态码返回方法getCode。返回状态码全局变量code的具体值


import mybatisdemo.Mapper.MapperUser;
import mybatisdemo.Pojo.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;


@Service
public class ServiceA {
    @Autowired
    private MapperUser mapper;//数据变量
    Integer aum;//年龄变量
    String xum;//姓名变量
    String code;//返回代码变量
    public List<User> listMapper(String name){
        List<User> empList = mapper.select(name);
        empList.stream().forEach(emp->{
            aum=emp.getAge();
            xum=emp.getName();
        });
        return empList;
    }
    public String getMessage (){
        if (aum <18){
           String msg= "玩家:"+xum+"未成年禁止入内";
           code="M01";
            return msg;
        }else {
           String  msg ="欢迎玩家"+xum+"进入游戏";
            code="M02";
            return msg;
        }
    }
    public String getCode(){
        return code;
    }
}

3.控制层,前端请求name通过依赖注入交给service。service通过

List<User> empList = mapper.select(name);

再交给Dao层进行条件查询。


import mybatisdemo.Pojo.Result;
import mybatisdemo.Pojo.User;
import mybatisdemo.service.ServiceA;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@RestController
public class Controller {
    @Autowired
    private ServiceA serviceA;
    @RequestMapping("/heloo")
    public Result list(String name) {
        List<User> users = serviceA.listMapper(name);

        String msg=serviceA.getMessage();
        String code= serviceA.getCode();
        Result result = new Result(code,home,users);
        return result;
       }
    }

4.结合第三步,定义统一响应结果类,将状态码code,返回值msg,数据结果集users响应返回给前端。下述代码是统一响应结果类Result和Spring Boot结合Mybatis配置数据库代码

package mybatisdemo.Pojo;

public class Result {
    private String code;
    private String msg;
    private Object data ;

    public Result() {
    }

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

    public String getCode() {
        return code;
    }

    public void setCode(String 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;
    }

    @Override
    public String toString() {
        return "Result{" +
                "code=" + code +
                ", msg='" + msg + '\'' +
                ", data=" + data +
                '}';
    }
}

5.数据库配置

spring.application.name=MyBatisDemo
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/mysql2
spring.datasource.username=root
spring.datasource.password=123

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值