MyBatis String类型传递参数问题

Posted JAVA架构师圈子

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MyBatis String类型传递参数问题相关的知识,希望对你有一定的参考价值。

问题描述:

        根据 关键字 模糊查询 用户组,关键字为用户组的名称 或 代码;


首先创建Mybatis Dao 层:




然后写Mapper.xml 映射文件:


MyBatis String类型传递参数问题

运行的时候会报错:

        Mybatis查询sql传入一个字符串传参数,报There is no getter for property named 'keyWords' in 'class java.lang.String'。


问题解决办法:

第一种解决方法:

    

        在接口参数里加上mybatis中的@param注解

Mybatis Dao 层:


MyBatis String类型传递参数问题


Mapper.xml 映射文件:

MyBatis String类型传递参数问题


第二种解决方法:

        MyBatis要求如果参数为String的话,不管接口方法的形参是什么,在Mapper.xml中引用时需要改变为_parameter才能识别 。


Mybatis Dao 层:


Mapper.xml 映射文件:


#{}与${}的区别:

        #{}拿到值之后,拼装sql,会自动对值添加引号” 
        ${}则把拿到的值直接拼装进sql,如果需要加单引号”,必须手动添加,一般用于动态传入表名或字段名使用,同时需要添加属性statementType=”STATEMENT”,使用非预编译模式。


注:statementType:STATEMENT(非预编译),PREPARED(预编译)或CALLABLE中的任意一个,这就告诉 MyBatis 分别使用Statement,PreparedStatement或者CallableStatement。默认:PREPARED。 


以上是关于MyBatis String类型传递参数问题的主要内容,如果未能解决你的问题,请参考以下文章

String是值传递还是引用传递

基本类型包装类型引用类型String等作为实参传递后值会不会改变?

mybatis不同参数传递取值方式

mybatis不同参数传递取值方式

Mybatis学习笔记

方法参数的值传递