1. 程式人生 > >Springboot @RequestBody + Retrofit @Body 之實體類欄位含有日期Date型別的提交方式

Springboot @RequestBody + Retrofit @Body 之實體類欄位含有日期Date型別的提交方式

有時候進行引數提交時需要提交很多的引數,一個個引數寫太麻煩,則可以利用POST即兩者的註解直接實體類進行提交,他們會自動進行欄位的對映,相當於json資料格式提交,可以省很多事,但是需要注意欄位為日期Date型別時的處理。

演示程式碼:

springboot controller類:

@RequestMapping("addNewConference/")
    public BaseResult<Conference> addNewConference(@RequestBody Conference conference) {
        System.out.println(conference);
        // 如果id不存在,則新增
if (conference.getConferenceId() == null) { conference.setReleaseTime(new Date()); conference.setStatus(Conference.STATUS_SOON); if (conferenceService.insert(conference)) { ConferencePushUtils.PushConference(conference);//推送會議 return
ResultUtils.getSuccBaseResult(conference); } else { return ResultUtils.getErrorBaseResult(3, "會議釋出失敗"); } } // 否則更新 conferenceService.updateById(conference); return ResultUtils.getSuccBaseResult(conference); }

Retrofit介面:

//釋出會議
@POST("/conference/addNewConference/") Call<BaseResult> sendNewMeeting(@Body Conference conference);

Retrofit 例項化:

Gson gson=new GsonBuilder().setDateFormat("yyyy-MM-dd HH:mm:ss").create();
        Retrofit retrofit = new Retrofit.Builder().client(client).baseUrl(Api.BASE_URL)
                .addConverterFactory(GsonConverterFactory.create(gson)).build();

Conference 實體類 —–關鍵在於給date日期加上格式化format

package com.glut.meetingsign.model;

import com.baomidou.mybatisplus.enums.IdType;
import com.fasterxml.jackson.annotation.JsonFormat;

import java.util.Date;
import com.baomidou.mybatisplus.annotations.TableId;
import com.baomidou.mybatisplus.activerecord.Model;
import com.baomidou.mybatisplus.annotations.TableName;
import java.io.Serializable;

/**
 * <p>
 * 
 * </p>
 *
 * @author FlyMegoc
 * @since 2017-05-03
 */
@TableName("me_conference")
public class Conference extends Model<Conference> {

    public final static int STATUS_SOON=1;//即將開始
    public final static int STATUS_CANCLE=2;//已取消
    public final static int STATUS_END=3;//已結束

    private static final long serialVersionUID = 1L;

    /**
     * 會議id
     */
    @TableId(value="conferenceId", type= IdType.AUTO)
    private Integer conferenceId;
    /**
     * 會議主題
     */
    private String title;
    /**
     * 會議內容
     */
    private String content;
    /**
     * 會議時間
     */
    @JsonFormat(locale="zh", timezone="GMT+8", pattern="yyyy-MM-dd HH:mm:ss")
    private Date conferenceTime;
    /**
     * 會議狀態:即將開始、已經取消、已經結束
     */
    private Integer status;
    /**
     * 會議地點
     */
    private String address;
    /**
     * 釋出時間
     */
    @JsonFormat(locale="zh", timezone="GMT+8", pattern="yyyy-MM-dd HH:mm:ss")
    private Date releaseTime;
    /**
     * 釋出人id
     */
    private Integer userId;


    public Integer getConferenceId() {
        return conferenceId;
    }

    public void setConferenceId(Integer conferenceId) {
        this.conferenceId = conferenceId;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public String getContent() {
        return content;
    }

    public void setContent(String content) {
        this.content = content;
    }

    public Date getConferenceTime() {
        return conferenceTime;
    }

    public void setConferenceTime(Date conferenceTime) {
        this.conferenceTime = conferenceTime;
    }

    public Integer getStatus() {
        return status;
    }

    public void setStatus(Integer status) {
        this.status = status;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    public Date getReleaseTime() {
        return releaseTime;
    }

    public void setReleaseTime(Date releaseTime) {
        this.releaseTime = releaseTime;
    }

    public Integer getUserId() {
        return userId;
    }

    public void setUserId(Integer userId) {
        this.userId = userId;
    }

    public static final String CONFERENCEID = "conferenceId";

    public static final String TITLE = "title";

    public static final String CONTENT = "content";

    public static final String CONFERENCETIME = "conferenceTime";

    public static final String STATUS = "status";

    public static final String ADDRESS = "address";

    public static final String RELEASETIME = "releaseTime";

    public static final String USERID = "userId";

    @Override
    protected Serializable pkVal() {
        return this.conferenceId;
    }

    @Override
    public String toString() {
        return "Conference [conferenceId=" + conferenceId + ", title=" + title + ", content=" + content
                + ", conferenceTime=" + conferenceTime + ", status=" + status + ", address=" + address
                + ", releaseTime=" + releaseTime + ", userId=" + userId + "]";
    }

}

關鍵點:對實體類的Date日期型別欄位進行格式化操作,且保證兩者的格式化格式一致