首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

MyBatis 寫入 PostgreSQL hstore 欄位的正確映射寫法

     編輯:程式設計綜合問答

問題

實體類欄位 mapperRule 對應 PG hstore 型別,直接 #{mapperRule} 插入報型別不符。

解決方案

在 XML `` 語句中對該欄位進行**型別轉換**:

<insert id="insertImportMapper" parameterType="...ImportMapper">
    insert into t_pm_sys_import_mapper
    (uuid, mapper_name, matched_org_uuid, mapper_rule, creator_uuid, create_time, modify_time)
    values
    (#{uuid}, #{mapperName}, #{matchedOrgUuid}, #{mapperRule}::hstore, #{creatorUuid}, current_timestamp(0), current_timestamp(0))
</insert>

關鍵:#{mapperRule}::hstore 明確告訴 PG 將字串轉為 hstore。

補充

  • 實體屬性型別可為 String(JSON 字串)或 Map(需自定 TypeHandler 自動序列化)。
  • 若用 Map,需實作 TypeHandler,在 setParameter 中用 ps.setObject(i, map, Types.OTHER) 並確保 PG JDBC 驅動支援 hstore(需在連線 URL 加 ?stringtype=unspecified 或呼叫 HStoreUtils.toString(map))。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved