Ibatis插入操作

时间:2013-04-15 05:19:13

标签: java database ibatis

您好我正在尝试通过ibatis插入一个对象列表,但我得到一个例外 org.apache.ibatis.mapping.SqlMapperException:表达式'boxlist'计算为空值。

<insert id="insertList" parameterType="java.util.List">
    INSERT INTO boxtable (
    size,length)
    VALUES
    <foreach item="box" collection="boxList" separator=",">
        (#{box.size},#{box.length})
    </foreach>
</insert>

我的dao类就像

public void insert(List<box> boxList)
        throws SQLException {

    try {                            
        sqlSession = sqlSessionFactory.openSession(AUTO_COMMIT); 
        int status = sqlSession.insert("insertlist", boxList);
        logger.debug("status :: " + status);
        sqlSession.commit();
    } catch (Throwable ee) {
        logger.error("e", ee);
    sqlSession.rollback();
    } finally {
        sqlSession.close();
    }

}

任何人都可以帮我吗???

2 个答案:

答案 0 :(得分:1)

如果我没记错,你需要传递一个包含boxList属性的对象,或者你可以传递一个包含boxList键的地图。例如

public class Wrapper {
    private List<box> boxList;
}


<insert id="insertList" parameterType="Wrapper">
    INSERT INTO boxtable (
    size,length)
    VALUES
    <foreach item="box" collection="boxList" separator=",">
        (#{box.size},#{box.length})
    </foreach>
</insert>

答案 1 :(得分:0)

尝试在sql语句中的<isPropertyAvailable>之前使用<foreach>。您也可以尝试使用<iterate>,但不要忘记将[]附加到您的箱子清单(如#boxlist[]#

有关ibatis中动态sql语句的更多信息,请按照此link

进行操作