zoukankan      html  css  js  c++  java
  • 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来进行传参。

  • 相关阅读:
    [LeetCode]Subsets II
    [LeetCode]Subsets
    [LeetCode]Combinations
    [LeetCode]Minimum Window Substring
    [LeetCode]Search a 2D Matrix
    [LeetCode]Edit Distance
    [LeetCode]Simplify Path
    Adaboost算法
    [LeetCode]Text Justification
    31、剑指offer--从1到n整数中1出现次数
  • 原文地址:https://www.cnblogs.com/gmq-sh/p/5624781.html
Copyright © 2011-2022 走看看