首页 > 解决方案 > 在“foreach”项目中使用“选择”项目时捕获 NoSuchPropertyException 异常

问题描述

我想将批处理db记录插入mysql,所以我使用foreachand chooseitems编写mybatis映射xml。

但是,它NoSuchPropertyException在我运行测试功能时给了我。映射xml代码是这样的:

<insert id="insertIntervalConfig" parameterType="java.util.List" useGeneratedKeys="true"  keyProperty="id">
    INSERT INTO
        <include refid="tableName"></include>
        <include refid="insertFields"></include>
    VALUES
        <foreach collection="list" item="item" index="index" separator=",">
            (
                <choose><when test="item.appId == null">0</when><otherwise>#{item.appId, jdbcType=INTEGER}</otherwise></choose>,
                <choose><when test="item.stageId == null">0</when><otherwise>#{item.stageId, jdbcType=INTEGER}</otherwise></choose>,
                <choose><when test="item.intervalType == null">0</when><otherwise>#{item.intervalType, jdbcType=INTEGER}</otherwise></choose>,
                <choose><when test="item.accountTypeName == null">''</when><otherwise>#{item.accountTypeName, jdbcType=VARCHAR}</otherwise></choose>,
                <choose><when test="item.accountTypeCode == null">''</when><otherwise>#{item.accountTypeCode, jdbcType=VARCHAR}</otherwise></choose>,
                #{item.accountMin, jdbcType=INTEGER}, #{item.accountMax, jdbcType=INTEGER},
                <choose><when test="item.displayName== null">''</when><otherwise>#{item.displayName, jdbcType=VARCHAR}</otherwise></choose>,
                <choose><when test="item.sequenceId == null">0</when><otherwise>#{item.sequenceId, jdbcType=INTEGER}</otherwise></choose>
            )
        </foreach>

</insert>

我的测试功能是这样的

List<IntervalConfigDO> configList = new ArrayList<IntervalConfigDO>();
configList.add(config1);
configList.add(config2);
intervalConfigDao.insertIntervalConfig(configList);

详细例外是:

org.mybatis.spring.MyBatisSystemException:嵌套异常是 org.apache.ibatis.builder.BuilderException:评估表达式“item.appId == null”时出错。原因:org.apache.ibatis.ognl.NoSuchPropertyException

我发现当我删除该choose项目时它可以工作,但我不知道为什么,有人可以提供一些提示吗?

标签: javamysqlmybatisspring-mybatis

解决方案


推荐阅读