您好我正在尝试通过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();
}
}
任何人都可以帮我吗???
答案 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
进行操作