设为首页 加入收藏

TOP

快速搭建SpringBoot3.x项目(五)
2023-09-23 15:44:18 】 浏览:195
Tags:SpringBoot3.x 项目
ic class Result<T> implements Serializable { private static final long serialVersionUID = 1L; private String code; private String msg; private T data; public static<T> Result<T> success() { return success(null); } public static<T> Result<T> success(T data) { Result result = new Result<>(); result.setCode(ResultCode.SUCCESS.getCode()); result.setMsg(ResultCode.SUCCESS.getMsg()); result.setData(data); return result; } public static <T> Result<T> error(String msg) { Result<T> result = new Result<>(); result.setCode(ResultCode.ERROR.getCode()); result.setMsg(ResultCode.ERROR.getMsg()); return result; } }

到此,统一响应返回我们已经封装好了,我们来改造一下Controller中的代码看看效果

SysUserController未改之前

@RequestMapping(value = "/querySysUser",method = RequestMethod.GET)
public List<SysUser> querySysUser(){
    return sysUserService.querySyserList();
}

SysUserController修改之后

@RequestMapping(value = "/querySysUser",method = RequestMethod.GET)
public Result querySysUser(){
    return Result.success(sysUserService.querySyserList());
}

前端返回结果

统一响应体返回

五、定义值对象VO

从上面的返回结果,我们会发现将密码等敏感信息返回到了前端,这是非常不可取的

这时,我们就需要根据前端的需求,灵活地选择需要展示的数据字段

如果你还傻傻分不清PO BO VO DTO POJO DAO DO 这些概念,可以看看知乎的这篇文章,个人觉得还是说的比较清楚的了

https://www.zhihu.com/question/39651928/answer/2490565983

image-20230914224644771

5.1 定义VO

定义一个需要返回前端的VO

@Data
public class UserInfoVO {

    /**
     * 用户名
     */
    private String username;
    /**
     * 用户昵称
     */
    private String nickname;

    /**
     * 用户性别
     */
    private String sex;
    /**
     * 用户生日
     */
    private Date birthday;
    /**
     * 用户邮箱
     */
    private String email;
    /**
     * 用户电话
     */
    private String phone;
    /**
     * 用户地址
     */
    private String addr;
}

5.2 service 改造

interface SysUserService 改造前

public interface SysUserService {
    List<SysUser> querySyserList();
}

interface SysUserService 改造后

public interface SysUserService {
    List<UserInfoVO> querySyserList();
}

SysUserServiceImpl 改造前

@Service
public class SysUserServiceImpl implements SysUserService {

   @Resource
    private SysUserMapper  userMapper;
    @Override
    public List<SysUser> querySyserList() {
        return userMapper.querySyserList();
    }
}

SysUserServiceImpl改造后

@Service
public class SysUserServiceImpl implements SysUserService {

   @Resource
    private SysUserMapper  userMapper;
    @Override
    public List<UserInfoVO> querySyserList() {
        List<UserInfoVO> userInfoVOList = new ArrayList<UserInfoVO>();

        List<SysUser> sysUserList= userMapper.querySyserList();

        for (SysUser sysUser : sysUserList) {
            UserInfoVO userInfoVO = new UserInfoVO();
            BeanUtils.copyProperties(sysUser,userInfoVO);
            userInfoVOList.add(userInfoVO);
        }

        return userInfoVOList;
    }
}

service 返回由原来的SysUser -->变成UserInfoVO

5.3 接口测试

浏览器地址栏输入:http://localhost:8080/sysUser/querySysUser

这时返回前端的json数据中已经没有密码了

接口测试

六、日期时间处理

认真看文章的小伙伴可能已经发现了,前面返回的json数据中,日期是 "birthday": "1999-09-18T16:00:00.000+00:00" 这样的

这样的日期可读性非常差,有没有什么方法可以格式化下日期呢?

其实呢,日期格式化非常简单,我们只需要在之前定义好的UserInfoVO 的日期属性上加上一个注解即可

import com.fasterxml.jackson.annotation.JsonFormat;

@JsonFormat(pattern = "yyyy-MM-dd")
private Date birthday;

我们来测试一下

通过格式化的日期就是我们习惯的日期格式了

日期显示

七、统一异常处理

日常开发中,我们处理异常一般都会用到try-catchthrowthrows 的方式抛出异常。

这种方式不仅仅程序员

首页 上一页 2 3 4 5 6 7 下一页 尾页 5/7/7
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇JDK8升级JDK11最全实践干货来了 下一篇快速搭建linux centos 部署环境及..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目