• MyBatis <if>标签的一些问题


    1、常见错误:

    There is no getter for property named 'parentId' in 'class java.lang.Long'(或者String)

    org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.reflection.ReflectionException: There is no getter for property named 'parentId' in 'class java.lang.Long'

    sql是这样写的:

    sql1:

    <select id="queryByParentId" parameterType="long" resultMap="beanMap">
            SELECT * FROM <include refid="t_pt_category"/>
            <where>
                isdel = 0
                <if test="parentId != null">
                    AND parent_id = #{parentId}
                </if>
            </where>
            ORDER BY parent_id
        </select>

    此时,就报了上面的错误。

    解决1:

    把<if>标签去掉传参还是直接传递传递long,如下:sql2

    <select id="queryByParentId" parameterType="long" resultMap="beanMap">
            SELECT * FROM <include refid="t_pt_category"/>
            <where>
                isdel = 0
               AND parent_id = #{parentId}
                <!--<if test="parentId != null">
                    AND parent_id = #{parentId}
                </if> -->
            </where>
            ORDER BY parent_id
        </select>    

    这样也sql2是可以的。

    解决2:保持sql1不变,在dao层把参数换成map类型,

    Map<String, Object> params = new HashMap<>(1);
    params.put("parentId", parentId);

    此时再执行,是可以的。

    (一般通用的全部的参数都是放到map中,这种最常用)

    解决3:改写sql1,如下,全部的参数都换成"_parameter",如下sql3:

    <select id="queryByParentId" parameterType="long" resultMap="beanMap">
            SELECT * FROM <include refid="t_pt_category"/>
            <where>
                isdel = 0
                <if test="_parameter != null">
                    AND parent_id = #{_parameter}
                </if>
            </where>
            ORDER BY parent_id
        </select>

    此时直接传递long也是可以的。

    ps:我还是倾向于第二种解决方法,都用map来进行传参。

  • 相关阅读:
    Luogu4655 [CEOI2017]Building Bridges
    bzoj4892 [TJOI2017]DNA
    Luogu5058 [ZJOI2004]嗅探器
    bzoj4373 算术天才⑨与等差数列
    bzoj3122 [SDOI2013]随机数生成器
    CF940F Machine Learning
    bzoj1935 [SHOI2007]Tree 园丁的烦恼
    CF1012B Chemical table
    CF1012A Photo of The Sky
    bzoj4850 [JSOI2016]灯塔
  • 原文地址:https://www.cnblogs.com/gmq-sh/p/5624781.html
Copyright © 2020-2023  润新知