前端传输时间字段时,后端的接收方式

数据库中时间使用的字段为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>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
前端传输GeoJSON文件可以通过Ajax发送POST请求,将文件作为FormData对象的一个字段后端接收文件后可以使用Node.js中的multer中间件进行解析,然后将GeoJSON数据插入数据库。 以下是一个示例代码: 前端代码: ```javascript const fileInput = document.querySelector('input[type="file"]'); fileInput.addEventListener('change', () => { const formData = new FormData(); formData.append('file', fileInput.files[0]); axios.post('/api/upload', formData, { headers: { 'Content-Type': 'multipart/form-data' } }).then(response => { console.log(response.data); }).catch(error => { console.error(error); }); }); ``` 后端代码: ```javascript const express = require('express'); const multer = require('multer'); const { MongoClient } = require('mongodb'); const app = express(); const upload = multer(); app.post('/api/upload', upload.single('file'), async (req, res) => { const client = await MongoClient.connect('mongodb://localhost:27017'); const db = client.db('mydb'); const collection = db.collection('mycollection'); const data = JSON.parse(req.file.buffer.toString()); await collection.insertOne(data); client.close(); res.send('File uploaded successfully'); }); app.listen(3000, () => { console.log('Server started on port 3000'); }); ``` 在这个示例代码中,我们使用了Express框架和MongoDB数据库。首先,我们创建一个Express应用程序并配置multer中间件来解析上的文件。然后,我们连接到MongoDB数据库,将GeoJSON数据插入到一个名为“mycollection”的集合中。最后,我们向客户端发送一个成功消息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值