Metrics
0
Watch 2.8K Star 5.7K Fork 2.8K

ThinkGem / JeeSite 4.xJavaAGPL-3.0

mybatis 参数使用了@param注解 ${}依然取不到值 ----idea不行 --eclipse可以

Open
yourSmile  Created at

该问题是怎么引起的?

使用eclipse没有问题,换成idea 会出现mybatis参数找不到,提示可能的参数 【0 1 param1 】
,使用@param注解,自定义名称,使用#{name}可以取值,使用${name},始终提示取不到值

重现步骤

报错信息

提示可能的参数 【0 1 param1 】

6732_thinkgem total 2 participants

Comments (2)

6732_thinkgem
ThinkGem 2019-07-05 10:06 owner

贴下具体代码和返回的错误信息,帮你分析下

yourSmile 2019-07-12 17:13
//dao层
import io.lettuce.core.dynamic.annotation.Param;
@MyBatisDao
public interface TestDataChildDao extends CrudDao<TestDataChild> {
	public List<String> Test(@Param("id") String  id, @Param("testSort") String testSort);
}
//dao-xml
<mapper namespace="com.jeesite.modules.test.dao.TestDataChildDao">
<select id="Test" resultType="java.lang.String">
    select * from test_data_child where id=#{id} and test_sort=#{testSort}
    // 使用id=#{param1} and test_sort=#{param2} 这样取值是没有问题的
</select>
// 调用
testDataChildDao.Test("11","22");

错误信息:
org.apache.ibatis.binding.BindingException: Parameter 'id' not found. Available parameters are [arg1, arg0, param1, param2]

疑问:按照mybatis源码做法加入@Param注解,应该是没有问题,但是却报错了,使用$或#取值都不行,我怀疑@Param包是不是导错了,切换成mybaits的包import org.apache.ibatis.annotations.Param;就正常了,问题是:为什么,导错包了(用的是importio.lettuce.core.dynamic.annotation.Param;),eclipse却可以正常使用,mybatis也不报错????????
@ThinkGem

Sign in and comment

Assignee
Labels
Not set
Project
Milestone
Branch
Scheduled start
Not set
Scheduled end
Not set
Top level
Priority

Help Search

183227_9af5e6a8_1826025 111910_4d91f001_1826025