我想知道如何在myBatis配置中传递List并根据细节插入数据库中。
用户发布包含以下详细信息的表单,其中可以添加地址次数,因此地址是列表。 发布数据库时,我希望数据库在单独的行中插入用户的deatils(可以在INSERT语句中使用循环{但不知道如何})。
details.java private int id 私有字符串名称 私有字符串地址 私人列表儿童
尝试1
detailsMapper.xml
<resultMap id="details" type="Details">
<result property="id" column="ID"/>
<result property="name" column="NAME"/>
<result property="address" column="ADDRESS"/>
<result property="children" column="CHILDREN" javaType="java.lang.List"/>
</resultMap>
错误 - &GT;无法为儿童设定价值
尝试2
<resultMap id="detailMapper" type="String">
<result property="children" column="CHILDREN" javaType="java.lang.List"/>
</resultMap>
<resultMap id="details" type="Details">
<result property="id" column="ID"/>
<result property="name" column="NAME"/>
<result property="address" column="ADDRESS"/>
<collection property="children" resultMap="detailMapper"/>
</resultMap>
错误 - &gt;参数mixmatch,无法设置属性
<insert id="submitDetails" parameterType="Details">
INSERT INTO USER_DETAILS (NAME, ADDRESS, CHILDREN)
VALUES(
#{name, jdbcType=VARCHAR},
#{address, jdbcType=VARCHAR},
#{children, jdbcType=VARCHAR}
)
</insert>
答案 0 :(得分:1)
我们可以使用以下语法来执行此操作:
<insert id="submitDetails" parameterType="java.util.List">
INSERT INTO USER_DETAILS (NAME, ADDRESS, CHILDREN)
VALUES
<foreach item="item" collection="list" separator=",">
(#{item.name}, #{item.address}, #{item.children})
</foreach>
</insert>
您有一个详细信息列表,因此parameterType
应为java.util.List
。
进一步阅读:Mybatis batch insert