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') > 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