mybatis对传入基本类型参数的判断方式

 更新时间:2022年03月12日 09:14:39   作者:cfp008  
这篇文章主要介绍了mybatis对传入基本类型参数的判断方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

对传入基本类型参数的判断

mybatis的xml文件的sql语句中parameterType为基本类型,如:

<select id="getCustomer" parameterType="Integer" resultType="Customer">
    select * from customer
    where
    <if test="id != null">id=#{id}</if>
<select>

会报错:There is no getter for property named 'id' in 'class java.lang.Integer'

这是因为Integer对象中没有id属性

解决办法

<select id="getCustomer" parameterType="Integer" resultType="Customer">
    select * from Customer
    where
    <if test="_parameter != null">id=#{_parameter}</if>
<select>

即将接收参数的参数名改为_parameter,注意改成其他参数名没用。

传入基本类型参数时test判断报错

在使用mybatis的时候出现了这样的问题:

//Dao层的接口中的代码
List<Map<String,Object>> getName(String username);
//对应的mapper中的代码
<select id="getName" resultType="java.util.Map">
    select name,client_id
    from table1
    <where> 
        <if test=" username!= null and username!='' ">
            and username= #{id}
        </if>
    </where> 
</select>

//报的错误
org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.reflection.ReflectionException: 
There is no getter for property named 'username' in 'class java.lang.String'

分析

There is no getter for property named ‘username’ in ‘class java.lang.String’,这句话打大概意思是:在“class java.lang.String”中没有名为“username”的属性的getter方法。因为mybatis默认采用ONGL解析参数,所以会自动采用对象树的形式取string.num值,引起错误。

解决办法

if test中的id用_parameter替换,而实际的语句不需要修改and a.id =#{id},因为Mybatis当只传入一个参数时#{ } 中的内容没有要求。

在Mapper中给出入参设置名称,例:public … getName(@Param(“username”) String username);这样修改后我们前面的写法就不会报错了。

小结一下

在传入基本类型的数据时,if标签中test判断的书写hi根据ognl表达式来取值的,所以不能直接写参数的名称,要利用_parameter来替代,或者利用注解@Pram("")来给参数起别名。

补充一点点:标签when中的test属性也有同样的问题!!!

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • java 避免出现NullPointerException(空指针)的方法总结

    java 避免出现NullPointerException(空指针)的方法总结

    这篇文章主要介绍了java 避免出现NullPointerException(空指针)的方法总结的相关资料,需要的朋友可以参考下
    2017-09-09
  • 详解Java变量与常量

    详解Java变量与常量

    这篇文章主要介绍了Java变量与常量,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-04-04
  • java ssm框架实现分页功能的示例代码(oracle)

    java ssm框架实现分页功能的示例代码(oracle)

    这篇文章主要介绍了java ssm框架实现分页功能的示例代码(oracle),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-03-03
  • SpringCloud Gateway加载断言predicates与过滤器filters的源码分析

    SpringCloud Gateway加载断言predicates与过滤器filters的源码分析

    这篇文章主要介绍了SpringCloud Gateway加载断言predicates与过滤器filters的详细过程,本文通过源码给大家解析的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-05-05
  • 使用mybatis-plus想要修改某字段为null问题

    使用mybatis-plus想要修改某字段为null问题

    这篇文章主要介绍了使用mybatis-plus想要修改某字段为null问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-02-02
  • Java实现图书馆借阅系统

    Java实现图书馆借阅系统

    这篇文章主要为大家详细介绍了Java实现图书馆借阅系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-03-03
  • Java查看本机端口是否被占用源码

    Java查看本机端口是否被占用源码

    这篇文章主要介绍了Java查看本机端口是否被占用的主要原理,并结合具体实例给出了操作方法,需要的朋友可以参考下
    2017-09-09
  • Go Java算法之K个重复字符最长子串详解

    Go Java算法之K个重复字符最长子串详解

    这篇文章主要为大家介绍了Go Java算法之K个重复字符最长子串详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-08-08
  • AsyncHttpClient ListenableFuture源码流程解读

    AsyncHttpClient ListenableFuture源码流程解读

    这篇文章主要为大家介绍了AsyncHttpClient ListenableFuture源码流程解读,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-12-12
  • Spring Boot Admin实践详解

    Spring Boot Admin实践详解

    在本篇文章里小编给大家整理了关于Spring Boot Admin实践的相关知识点,有需要的朋友们可以学习下。
    2019-12-12

最新评论