最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Mybatis批量更新數(shù)據(jù)庫錯(cuò)誤問題

 更新時(shí)間:2024年08月05日 09:26:37   作者:何中應(yīng)  
這篇文章主要介紹了Mybatis批量更新數(shù)據(jù)庫錯(cuò)誤問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

問題

記錄一次使用Mybatis批量更新數(shù)據(jù)庫的錯(cuò)誤,錯(cuò)誤信息,

Error updating database. Cause: org.postgresql.util.PSQLException: 錯(cuò)誤: 字段 "update_time" 的類型為 timestamp without time zone, 但表達(dá)式的類型為 text 建議:你需要重寫或轉(zhuǎn)換表達(dá)式 位置:391

如下圖,說我有一個(gè)字段是timestamp類型,但是我表達(dá)式計(jì)算出來的是text類型

分析&解決

JavaBean對(duì)象如下,updateTime是Date類型

import lombok.Data;

import javax.persistence.Table;
import java.io.Serializable;
import java.util.Date;

@Table(name = "tb_user")
@Data
public class User implements Serializable {

    private Integer id;

    private String username;

    private String password;

    private Date createTiem;

    private Date updateTime;
}

批量更新SQL如下

    <update id="updateBatch" parameterType="java.util.ArrayList">
        update tb_user
        set

        username = case
        <foreach collection="users" item="user">
            when id = #{user.id}
            <choose>
                <when test="user.username != null and user.username != ''">then #{user.username}</when>
                <otherwise>then username</otherwise>
            </choose>
        </foreach>
        end,

        password = case
        <foreach collection="users" item="user">
            when id = #{user.id}
            <choose>
                <when test="user.password != null and user.password != ''">then #{user.password}</when>
                <otherwise>then password</otherwise>
            </choose>
        </foreach>
        end,

        update_time = case
        <foreach collection="users" item="user">
            when id = #{user.id}
            <choose>
                <when test="user.updateTime != null">then #{user.updateTime}</when>
                <otherwise>then update_time</otherwise>
            </choose>
        </foreach>
        end

        where
        <foreach collection="users" item="user" separator="or">
            id = #{user.id}
        </foreach>
    </update>

關(guān)于Mybatis批量更新對(duì)象,參考下面這篇文章:

Mybatis批量更新對(duì)象數(shù)據(jù)的兩種方法

  • 老實(shí)說,我也不知道為什么,之前用都沒問題。
  • 我推測(cè)是不是postgres的原因,我之前用的是MySQL。

找不出來原因,我使用了下面這種方式解決:

        update_time = case
        <foreach collection="users" item="user">
            when id = #{user.id}
            <choose>
                <when test="true">then now()</when>
                <otherwise>then update_time</otherwise>
            </choose>
        </foreach>
        end

就是說,我對(duì)象不傳這個(gè)字段了,直接使用數(shù)據(jù)庫自帶的now()方法來更新,反正都是獲取當(dāng)前時(shí)間。

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java三個(gè)類加載器及它們的相互關(guān)系

    Java三個(gè)類加載器及它們的相互關(guān)系

    Java在需要使用類別的時(shí)候,才會(huì)將類別加載,Java的類別載入是由類別載入器(Class loader)來達(dá)到的,預(yù)設(shè)上,在程序啟動(dòng)之后,主要會(huì)有三個(gè)類別加載器,文中詳細(xì)介紹了這三個(gè)類加載器,需要的朋友可以參考下
    2021-06-06
  • Spring Boot之內(nèi)嵌tomcat版本升級(jí)操作示例

    Spring Boot之內(nèi)嵌tomcat版本升級(jí)操作示例

    這篇文章主要為大家介紹了Spring Boot之內(nèi)嵌tomcat版本升級(jí)操作示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06
  • SpringBoot緩存方法返回值的方法詳解

    SpringBoot緩存方法返回值的方法詳解

    如何緩存方法的返回值?應(yīng)該會(huì)有很多的辦法,這篇文章主要為大家介紹兩個(gè)比較常見并且比較容易實(shí)現(xiàn)的辦法:自定義注解和SpringCache,希望對(duì)大家有所幫助
    2023-10-10
  • 一文盤點(diǎn)五種最常用的Java加密算法

    一文盤點(diǎn)五種最常用的Java加密算法

    大家平時(shí)的工作中,可能也在很多地方用到了加密、解密,比如:支付功能等,所以本文為大家盤點(diǎn)了Java中五個(gè)常用的加密算法,希望對(duì)大家有所幫助
    2023-06-06
  • java計(jì)算時(shí)間差的方法

    java計(jì)算時(shí)間差的方法

    這篇文章主要介紹了java計(jì)算時(shí)間差的方法,涉及java針對(duì)時(shí)間的轉(zhuǎn)換與計(jì)算相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-07-07
  • 通過dom4j解析xml字符串(示例代碼)

    通過dom4j解析xml字符串(示例代碼)

    本篇文章主要是對(duì)通過dom4j解析xml字符串的示例代碼進(jìn)行了介紹,需要的朋友可以過來參考下,希望對(duì)大家有所幫助
    2013-12-12
  • Spring-AOP 靜態(tài)正則表達(dá)式方法如何匹配切面

    Spring-AOP 靜態(tài)正則表達(dá)式方法如何匹配切面

    這篇文章主要介紹了Spring-AOP 靜態(tài)正則表達(dá)式方法如何匹配切面的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • dubbo整合springboot新手入門教程詳解

    dubbo整合springboot新手入門教程詳解

    這篇文章主要介紹了dubbo整合springboot新手入門詳解,當(dāng)一臺(tái)計(jì)算機(jī)的程序需要調(diào)用另一臺(tái)計(jì)算機(jī)代碼的時(shí)候,就涉及遠(yuǎn)程調(diào)用。此時(shí)dubbo就粉末登場(chǎng)了,需要的朋友可以參考下
    2019-07-07
  • Idea的Generate Sources無法生成QueryDSL問題及解決方法

    Idea的Generate Sources無法生成QueryDSL問題及解決方法

    這篇文章主要介紹了解決Idea的Generate Sources無法生成QueryDSL問題,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-02-02
  • 推薦幾本學(xué)習(xí)java的書籍

    推薦幾本學(xué)習(xí)java的書籍

    本文給大家推薦了幾本學(xué)習(xí)Java的書籍,非常適合Java的初學(xué)者,有需要的朋友可以看看
    2014-10-10

最新評(píng)論

武安市| 多伦县| 尉犁县| 云林县| 清徐县| 伊宁市| 拉孜县| 石首市| 富平县| 广德县| 隆化县| 建始县| 富锦市| 剑阁县| 紫阳县| 扎兰屯市| 兰西县| 阳高县| 福鼎市| 海南省| 离岛区| 恩平市| 湖北省| 玛纳斯县| 新竹市| 深州市| 汝南县| 翁牛特旗| 东方市| 呼伦贝尔市| 崇州市| 西和县| 西林县| 安乡县| 九江市| 惠来县| 乡宁县| 静安区| 庐江县| 丰都县| 平远县|