jackson反序列化myql的datetime类型为LocalDateTime时间错误

在jackson反序列化mysql中的datetime类型的数据的时候,发现时间总是不一致,发现是mysql的分区和当前运行程序的分区不一致导致的

  • 检查mysql的时区:

show variables like "%time_zone%";

+------------------+--------+ | Variable_name | Value | +------------------+--------+ | system_time_zone | CST | | time_zone | SYSTEM | +------------------+--------+ 2 rows in set (0.00 sec) #time_zone说明mysql使用system的时区,system_time_zone说明system使用CST时区

  • 修改mysql的时区:
第一种方法
> set global time_zone = '+08:00'; ##修改mysql全局时区为北京时间,即我们所在的东8区
> set time_zone = '+08:00'; ##修改当前会话时区
> flush privileges; #立即生效
第二种方法
# vim /etc/my.cnf ##在[mysqld]区域中加上
default-time_zone = '+08:00'
# /etc/init.d/mysqld restart ##重启mysql使新时区生效

springboot 如何接受前台axios传过来的array数据,需要为POST方式,GET会覆盖相同的参数名称

默认情况下,axios传过来的array数据格式是: http://test.com/abc?params[]=test&params[]=testw3w3, 需要特殊转换springboot才能解析成对应的List<String> 格式的参数

  • axios端传递的方法如下:
  // 此处ids是数组类型,主要用到了paramsSerializer,或者设置地址: var queryString = Object.keys(params).map(key => key + '=' + params[key]).join('&');
      axios.post(urls.PERMISSION_BATCH_ID_URL, null, { params: { ids: ids },
        paramsSerializer: params => {
          const keys = Object.keys(params)
          let options = ''

          keys.forEach((key) => {
            const isParamTypeObject = typeof params[key] === 'object'
            const isParamTypeArray = isParamTypeObject && (params[key].length >= 0)

            if (!isParamTypeObject) {
              options += `${key}=${params[key]}&`
            }

            if (isParamTypeObject && isParamTypeArray) {
              params[key].forEach((element) => {
                options += `${key}=${element}&`
              })
            }
          })
          return options ? options.slice(0, -1) : options
        } }).then(res => {
      }).catch(error => {
        console.error(error)
      })

  • springboot接受数组参数的方法如下,需要格式为ids=123&ids=456&ids=8743434&ids=4546573424
// 经测试此处的List<String> ids 也可以为 List[] ids
@PostMapping("/batch")
    public WebResponse deletePermissionsBatch(@RequestParam("ids") List<String> ids) {
        WebResponse response = WebResponse.getResponse();
        if (ids.size() > 0) {
            ServiceResponse serviceResponse = permissionService.removePermissionBatch(ids);
            boolean serviceResponseSuccess = serviceResponse.isSuccess();
            if (!serviceResponseSuccess) {
                response.fail(serviceResponse.getResponseCode());
            }
        } else {
            log.warn("至少输入一个权限ID: {}", ids.toString());
            response.fail(PermissionResponseCode.PERMISSION_BATCH_MISSING);
        }
        return response;
    }
最后更新: 9/18/2019, 1:45:55 PM
本文浏览量