踩坑日記,做一個筆記來用僅供自己參考若有錯誤請大佬指點

springboot返回時間數據格式化

 因爲之前默認返回時間格式是UTC格式的前端說轉碼有點麻煩所以就找了一下

   配置中加入: 

spring:
  #時間格式轉換
  jackson:
    date-format: yyyy-MM-dd HH:mm:ss
    time-zone: GMT+8

接收時間類型參數 1999-02-04 12:20格式

  參數加上這兩個註解 

@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd hh:mm")
@DateTimeFormat(pattern="yyyy-MM-dd hh:mm")

接收單個Date類型參數(yyyy-MM-dd格式) 需要使用的controller繼承此類

import org.springframework.beans.propertyeditors.CustomDateEditor;
import org.springframework.web.bind.WebDataBinder;
import org.springframework.web.bind.annotation.InitBinder;

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * @program: hm
 * @description: controller接收時間格式轉換
 * @author: liaojingtong
 * @create: 2019-09-17 10:14
 **/
public class BaseDateController {
    /**
     * 時間格式處理
     * */
    @InitBinder
    public void initBinder(WebDataBinder binder) {
        DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
        dateFormat.setLenient(true);
        binder.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat, true));
    }
}

使用場景:

/**
     * 根據日期查詢事項
     * */
    @ApiOperation(value = "根據日期查詢事項",notes = "根據具體的日期查詢事項")
    @ApiImplicitParams({
            @ApiImplicitParam(paramType="header", name = "Authorization", value = "token", required = true, dataType = "String"),
            @ApiImplicitParam(paramType="query", name = "dataTime", value = "日期", required = true, dataType = "Date"),
    })
    @RequestMapping(value = "/*********",method = RequestMethod.POST)
    public BaseResponse<List<HmMatter>> findMatterByIdDateTime( Date dataTime){
        return BaseResponse.success("查詢成功",matterService.selectMatterByIdDateTime(dataTime));
    }

示例

  /**
     * 日期時間
     */
    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd hh:mm")
    @DateTimeFormat(pattern="yyyy-MM-dd hh:mm")
    @ApiModelProperty(name = "dateTime",value = "日期時間")
    @Column(name = "date_time")
    private Date dateTime;

 接收不到前端傳來的參數,後來百度才知道需要前端Qs序列化,但是如果是json數據則不能 Qs

微服務之間 跨服務調用接口傳參要加 @RequestParam註解不然拿不到參數

示例

@FeignClient(value = "hm-learn")
public interface IndexService {

    /**
     * 根據時間段和用戶查詢完成任務數
     * */
    @RequestMapping(value = "/findClientTaskCount",method = RequestMethod.POST)
    int findClientTaskCount(@RequestParam("clientId") String clientId,@RequestParam("beginweeks") String beginweeks,
                            @RequestParam("endweeks")String endweeks);
}

mybatis回滾操作

TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();

示例:

i= hmEducationRecordMapper.insert(hmEducationRecord);//教育檔案關聯
        if (i<0){
            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();//回滾
            return BaseResponse.error("程序異常");
        }

isEmpty()方法用來判斷一個變量是否已經初始化了,所以使用此方法前應判斷是否爲null,如果未被初始化則會報空指針異常

 

控制檯打印mybatis SQL語句

mybatis:
  # spring boot集成mybatis的方式打印sql
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

mybatis坑 

  if判斷單個字符不生效 

     需要換成雙引號  或者 

'0'.toString()
<if test='nowStatus == "2" '>
      and DATE_FORMAT(date_time,'%Y%m%d') &gt; DATE_FORMAT(NOW(), '%Y%m%d')
    </if>

mysql case 的使用

case when 條件 then 輸出 else 輸出 end 結束

當前時間小於結束時間輸出0否則輸出1

CASE  WHEN DATE_FORMAT(hcc.end_time,'%Y%m%d') > DATE_FORMAT(NOW(), '%Y%m%d') THEN '0' ELSE  '1' END

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章