数据库中时间使用的字段为timestamp类型,注意传输的数据格式,若不符合timestamp的样式,是无法存储到数据库中的,合格样式例子:2023-03-17 15:06:02
下面用update方式来演示使用map和使用实体类的区别
1.使用map来接收,接受时,对应的字段值都为string类型,此种方法不需要实体类
前端代码
function queryCenterAddEnt() {
var paramMap = {
"submitTime":"2023-03-17 15:06:02",
"taskCreateTime":"2023-03-17 15:06:02",
};
$.ajax({
url: G3.cmdPath + "/update",
type: 'post',
dataType : 'json',
contentType:'application/json',
data : JSON.stringify(paramMap),
success: function(data) {
G3.alert("提示", '请求成功' + data);
},
error: function(error) {
G3.alert("提示", '请求失败' + error);
}
})
}
后端controller
/**
* 修改(参数为map)
* @param map
* @return
*/
@RequestMapping({"/update"})
@ResponseBody
public int updateUniteTask(@RequestBody Map<String, Object> map) {
return uniteTaskService.updateUniteTask(map);
}
mapper.xml,由于传输的都为string类形,<if>判断语句要判断两种数据为空的情况
<if test="submitTime != null and submitTime !=''">
注意,传入map类型参数时,parameterType="map"
<update id="updateUniteTask" parameterType="map">
update portal_task
<set>
<if test="submitTime != null and submitTime !=''">
`SUBMIT_TIME` = #{submitTime},
</if>
<if test="taskCreateTime != null and taskCreateTime !=''">
`TASK_CREATE_TIME` = #{taskCreateTime},
</if>
</set>
where `SERIAL_NO` = #{serialNo}
</update>
2.使用实体类
实体类代码,前端代码没有本质的区别,只要保证参数的字段名一致就可以,实体类的时间的字段类型也可以设置为string、long,区别只是xml的if判断不同
@Table(
name = "portal_task"
)
@Data
public class UniteTask {
@Id
@Column(name = "SERIAL_NO")
private String serialNo; // 业务主键,业务新增、更新、删除的唯一标识
@Column(name = "SUBMIT_TIME")
private Timestamp submitTime; // 业务提交时间
@Column(name = "TASK_CREATE_TIME")
private Timestamp taskCreateTime; // 任务到达时间
}
controller
/**
* 修改(参数为实体类Entity)
* @param uniteTask
* @return
*/
@RequestMapping({"/updateEntity"})
@ResponseBody
public int updateUniteTaskEntity(@RequestBody UniteTask uniteTask) {
return uniteTaskService.updateUniteTask(uniteTask);
}
mapper.xml
实体类类型参数,parameterType="com.data.UniteTask",parameterType参数后面是实体类在工程包中的具体位置
当类型为Timestamp类型时,空值的情况只有null这一种,因此if判断,只需判断一种情况
<if test="taskCreateTime != null">
submitTime !=''的情况只在字符串类型中存在,若此时也进行判断,就会产生Timestamp 和string类型不一致的sql报错
<update id="updateUniteTaskEnt" parameterType="com.data.UniteTask">
update portal_task
<set>
<if test="submitTime != null">
`SUBMIT_TIME` = #{submitTime},
</if>
<if test="taskCreateTime != null">
`TASK_CREATE_TIME` = #{taskCreateTime},
</if>
</set>
where `SERIAL_NO` = #{serialNo}
</update>
当参数类型为string时,需要进行submitTime !=''的判断,确保传入的值不为空
<update id="updateUniteTaskEnt" parameterType="com.data.UniteTask">
update portal_task
<set>
<if test="submitTime != null and submitTime !=''">
`SUBMIT_TIME` = #{submitTime},
</if>
<if test="taskCreateTime != null and taskCreateTime !=''">
`TASK_CREATE_TIME` = #{taskCreateTime},
</if>
</set>
where `SERIAL_NO` = #{serialNo}
</update>