使用 ibatis 将字符串列表插入到多列中的表中

Posted

技术标签:

【中文标题】使用 ibatis 将字符串列表插入到多列中的表中【英文标题】:insert a list of strings to a table in multiple columns using ibatis 【发布时间】:2015-11-04 21:18:03 【问题描述】:

我想使用 ibatis 将字符串列表插入到多行的数据库中。

ie) id = 1
    [a,b,c,d] as list of strings.

该表应将值存储为

 1    a
    1    b
    1    c
    1    d.

我可以通过重复使用插入查询来实现。谁能告诉我这是否可以通过单个查询来实现?任何帮助或指针都会有所帮助。

【问题讨论】:

【参考方案1】:

可以使用ibatis的iterate标签。

 <insert id="" parameterClass="YourClass">
        <iterate property="ListOfStrings">
        INSERT 
            INTO table(colum1,colum2)
            VALUES (#id, #listofStrings[]#)
        </iterate>

    </insert> 

试试这个:-

 <insert id="insert" parameterClass=""> 
  INSERT INTO table 
    (col1, col2) 
  VALUES 
  <iterate property="list" conjunction=","> 
    (#id#, #list[]#) 
  </iterate> 
</insert> 

【讨论】:

你能告诉我现在有什么问题吗? 原因:java.lang.RuntimeException:发生错误。原因:com.ibatis.common.xml.NodeletException:解析 XML 时出错。原因:java.lang.RuntimeException:解析 XPath '/sqlMapConfig/sqlMap' 时出错。原因:com.ibatis.common.xml.NodeletException:解析 XML 时出错。原因:org.xml.sax.SAXParseException:元素类型“iterate”的内容必须匹配“(include|iterate|isParameterPresent|isNotParameterPresent|isEmpty|isNotEmpty|isNotNull|isNull|isNotEqual|isEqual|isGreaterThan|isGreaterEqual|isLessThan|isLessEqual| isPropertyAvailable|isNotPropertyAvailable)"。 能否验证一下您使用的ibatis版本,可能是您的DTD不支持迭代? 我用的是ibatis2.7.4

以上是关于使用 ibatis 将字符串列表插入到多列中的表中的主要内容,如果未能解决你的问题,请参考以下文章

拆分分隔符分隔的字符串并插入到oracle 11中的表中

将 C# 对象列表中的多行数据插入 Oracle 12 数据库中的表中

使用 SqlBulkCopy,如何将数据插入到非默认数据库架构中的表中?

Mysql

使用 WordPress $wpdb 将数据插入到 WordPress 数据库中的表中

将记录插入到具有180列的表中