Springboot @RequestBody + Retrofit @Body 之实体类字段含有日期Date类型的提交方式

来源:互联网 发布:深信服广域网优化 编辑:程序博客网 时间:2024/09/21 08:16

有时候进行参数提交时需要提交很多的参数,一个个参数写太麻烦,则可以利用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日期类型字段进行格式化操作,且保证两者的格式化格式一致

0 0
原创粉丝点击