MyBatis String类型传递参数问题
Posted JAVA架构师圈子
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MyBatis String类型传递参数问题相关的知识,希望对你有一定的参考价值。
问题描述:
根据 关键字 模糊查询 用户组,关键字为用户组的名称 或 代码;
首先创建Mybatis Dao 层:
然后写Mapper.xml 映射文件:
运行的时候会报错:
Mybatis查询sql传入一个字符串传参数,报There is no getter for property named 'keyWords' in 'class java.lang.String'。
问题解决办法:
第一种解决方法:
在接口参数里加上mybatis中的@param注解
Mybatis Dao 层:
Mapper.xml 映射文件:
第二种解决方法:
MyBatis要求如果参数为String的话,不管接口方法的形参是什么,在Mapper.xml中引用时需要改变为_parameter才能识别 。
Mybatis Dao 层:
Mapper.xml 映射文件:
#{}与${}的区别:
#{}拿到值之后,拼装sql,会自动对值添加引号”
${}则把拿到的值直接拼装进sql,如果需要加单引号”,必须手动添加,一般用于动态传入表名或字段名使用,同时需要添加属性statementType=”STATEMENT”,使用非预编译模式。
注:statementType:STATEMENT(非预编译),PREPARED(预编译)或CALLABLE中的任意一个,这就告诉 MyBatis 分别使用Statement,PreparedStatement或者CallableStatement。默认:PREPARED。
以上是关于MyBatis String类型传递参数问题的主要内容,如果未能解决你的问题,请参考以下文章