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来进行传参。

  • 相关阅读:
    mysql 5.7.3.0-m13安装教程
    angular的$http.post()提交数据到Java后台接收不到参数值问题的解决方法
    samentic 在IE9 不支持 transition 的解决方案
    Html
    html
    ng-style 的坑
    js 和 jq 控制 checkbox
    highchart访问一次后台服务返回多张图表数据
    highchart 动态刷新(可用于制作股票时时走势)
    c# 实现 java 的 System.currentTimeMillis() 值
  • 原文地址:https://www.cnblogs.com/gmq-sh/p/5624781.html
Copyright © 2011-2022 走看看