• 前后端数据互传问题


    her~~llo,我是你们的好朋友Lyle,是名梦想成为计算机大佬的男人!

    博客是为了记录自我的学习历程,加强记忆方便复习,如有不足之处还望多多包涵!非常欢迎大家的批评指正。

    今天来一篇前后端数据互传问题的总结。持续更新。我在开发时如果遇到就会记录。

    问题一:时间类型互传

    java中前端传过来的时间字符串转为Date类型存入数据库

    前端传过来的是属于字符串类型,java是无法拿来直接存入数据库的,数据库datetime这的字段类型为timestamp。
    2020-07-07 10:45:57这种类型,属于yyyy-MM-dd HH:mm:ss,考虑使用java的工具SimpleDateFormat函数。

    1. String DateTime=request.getParameter("DateTime");
    2. SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    3. Date Datetime = null;
    4. try {
    5. Datetime = formatter.parse(DateTime);
    6. } catch (ParseException e1) {
    7. e1.printStackTrace();
    8. }//string格式转Date格式

    javaDate类型转为yyyy-MM-dd HH:mm:ss类型到前端

    利用到spring-boot-starter-web中的依赖的com.fasterxml.jackson包

    @JsonFormat

    1. @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    2. private Date time;//下单日期

    它的作用是,出参时,自动把Date型对象数据转化成正确的格式化后的字符串出去。

    @JsonFormat不仅可以完成后台到前台参数传递的类型转换,还可以实现前台到后台类型转换。当content-type为application/json时,优先使用@JsonFormat的pattern进行类型转换。


    问题二:多条件查询时用Map封装post请求体遇到问题

    1. public class QueryPageBean implements Serializable{
    2. private Integer currentPage;//页码
    3. private Integer pageSize;//每页记录数
    4. private Map queryString;//查询条件
    5. }

    我在这里用Map来装多个查询条件,

    1. @PostMapping("/getDeliveryOrderByCondition")
    2. public PageResult findDeliveryOrderByPage(@RequestBody QueryPageBean queryPageBean){
    3. PageResult pageResult = deliveryOrderService.pageQuery(
    4. queryPageBean.getCurrentPage(),
    5. queryPageBean.getPageSize(),
    6. queryPageBean.getQueryString()
    7. );
    8. return pageResult;
    9. }

    通过输出封装的类型可以知道,@RequestBody底层会自动将对象中类型为Map的属性封装为java.util.LinkedHashMap类型的,那么Mapper在配置时,parameterType="java.util.LinkedHashMap"这样写,

    1. <select id="selectByCondition" parameterType="java.util.LinkedHashMap" resultMap="findByIdResultMap">
    2. select id,user_id as userId,time,product_info as productInfo,status,money,update_time as updateTime
    3. from product_delivery
    4. <where>
    5. <if test="status !=null and status !=''">
    6. and status = #{status}
    7. if>
    8. <if test="orderId !=null and orderId !=''">
    9. and id = #{orderId}
    10. if>
    11. where>
    12. select>

    还有细节问题就是:

    !=null和!=''之间不要加空格,还有中英文,大小写限制都比较严格,需要规范书写。

  • 相关阅读:
    【码蹄集新手村 600 题】判断俩个矩阵是否相等,以及 exit 与 return 的区别
    leetcode:55. 跳跃游戏【经典贪心】
    好奇喵 | Tor浏览器——层层剥开洋葱
    【C++】继承- 赋值兼容转换、虚基表
    Norgen提取试剂盒丨血浆/血清循环和核外RNA提取试剂盒
    337. 打家劫舍 III
    REDIS上如何批量删除KEY?
    收银软件 收银系统 收银管理系统 选购秘籍大放送,看完这篇再买不亏!
    P1141 01迷宫(dfs+染色联通块)
    Linux 内存top命令详解
  • 原文地址:https://blog.csdn.net/weixin_58035422/article/details/126217783