MyBatisSystemException-ibatis中的Param引入的异常

一、遇到问题

    之前开发了个接口,根据参数type不同,返回不同的数据。

    因为需求中已经明确type参数肯定不为空,于是在SQL对应的XML文件中直接写  where,没有加任何判断。

    这次开发,又有新的需求,type可以为空,如果为空,则表示返回全部。

    想想也不难,在原先的基础上改改就行,于是加入如下代码:

where 1=1
        <if test="type!=null and type!=''">
            and DQLX=#{type}
        </if>

信心满满的测试,结果报错:

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

仔细检查了好久,也没发现有啥问题,排除法试试——去掉新增加的代码,又正常起来了……

好吧!一时有点无解,想到了mapper层的参数,一般如果只有一个参数,则不需要加Param参数,之前需求都验证过的,所以,应该不会是这块的问题。

可是也没有其他地方了呀,索性加上注解试试,果然加上注解后就不报错了。

问题是解决了,可我还是一脸懵逼,当只有一个参数时,为啥有的时候要加上Param注解,有的时候不需要呢?

本着遇到问题再学习的原则,学习下

二、ibatis中的Param-个人小结

没有找到合适的参考文档,姑且记下自己遇到的问题及感觉吧

1、当SQL中只有一个参数时,一般参数可以不用加Param注解;

2、当有多个时,必须要有Param注解;

3、如果参数用在<if/>等标签中,不管有几个,都要加Pram注解;

建议:

      任何情况下都加上Pram注解

@Param("value")的作用:

         Param注解的作用是  给参数命名, 参数命名后就  能根据名字得到参数值 ,正确的   将参数传入sql语句 中 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值