Caused by: org.apache.ibatis.binding.BindingException: Parameter ‘xxx‘ not found. Available paramete

Caused by: org.apache.ibatis.binding.BindingException: Parameter ‘xxx’ not found. Available parameters are [argN, … ,arg1, arg0, paramN,…, param1, param2]

错误信息:绑定异常:参数“xxx” 没找到


问题描述:

提示:这里描述项目中遇到的问题:
例如:数据传输过程中数据不时出现丢失的情况,偶尔会丢失一部分数据
APP 中接收数据代码:

@Override
        public void run() {
            bytes = mmInStream.read(buffer);
            mHandler.obtainMessage(READ_DATA, bytes, -1, buffer).sendToTarget();
        }

我的Junit错误日志信息:

org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.binding.BindingException: Parameter 'loginName' not found. Available parameters are [password, arg0, param1, param2]
			at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:77)
			at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:446)
			at com.sun.proxy.$Proxy20.selectOne(Unknown Source)
			at org.mybatis.spring.SqlSessionTemplate.selectOne(SqlSessionTemplate.java:166)
			at org.apache.ibatis.binding.MapperMethod.execute(MapperMethod.java:83)
			at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:59)
			at com.sun.proxy.$Proxy22.selectByLoginNameAndPassword(Unknown Source)
			at com.quan.test.TeacherDaoTest.testSelectByLoginnameAndPassword(TeacherDaoTest.java:20)
			at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
			at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
			at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
			at java.lang.reflect.Method.invoke(Unknown Source)
			at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
			at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
			at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
			at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
			at org.springframework.test.context.junit4.statements.RunBeforeTestExecutionCallbacks.evaluate(RunBeforeTestExecutionCallbacks.java:73)
			at org.springframework.test.context.junit4.statements.RunAfterTestExecutionCallbacks.evaluate(RunAfterTestExecutionCallbacks.java:83)
			at org.springframework.test.context.junit4.statements.RunBeforeTestMethodCallbacks.evaluate(RunBeforeTestMethodCallbacks.java:75)
			at org.springframework.test.context.junit4.statements.RunAfterTestMethodCallbacks.evaluate(RunAfterTestMethodCallbacks.java:86)
			at org.springframework.test.context.junit4.statements.SpringRepeat.evaluate(SpringRepeat.java:84)
			at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
			at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:251)
			at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:97)
			at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
			at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
			at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
			at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
			at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
			at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61)
			at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70)
			at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
			at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:190)
			at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:86)
			at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
			at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:459)
			at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:678)
			at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382)
			at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192)
		Caused by: org.apache.ibatis.binding.BindingException: Parameter 'loginName' not found. Available parameters are [password, arg0, param1, param2]
			at org.apache.ibatis.binding.MapperMethod$ParamMap.get(MapperMethod.java:204)
			at org.apache.ibatis.reflection.wrapper.MapWrapper.get(MapWrapper.java:45)
			at org.apache.ibatis.reflection.MetaObject.getValue(MetaObject.java:122)
			at org.apache.ibatis.executor.BaseExecutor.createCacheKey(BaseExecutor.java:219)
			at org.apache.ibatis.executor.CachingExecutor.createCacheKey(CachingExecutor.java:146)
			at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:82)
			at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:148)
			at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:141)
			at org.apache.ibatis.session.defaults.DefaultSqlSession.selectOne(DefaultSqlSession.java:77)
			at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
			at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
			at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
			at java.lang.reflect.Method.invoke(Unknown Source)
			at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:433)
			... 37 more

解决方案:

找到对应的数据访问层(也叫Dao层),我这里是在TeacherDao.java里面:

public interface TeacherDao { 

	// 根据登录名和密码查询教师
	Teacher selectByLoginNameAndPassword(String loginName, String password);
	

错误信息说我“loginName”没找到,可能方法的参数没传进去。

简单改改:(加上@Param注解即可,org.apache.ibatis.annotations.Param 全类名)

import org.apache.ibatis.annotations.Param;

public interface TeacherDao { 

	// 根据登录名和密码查询教师
	Teacher selectByLoginNameAndPassword(@Param("loginName") String loginName, @Param("password")String password);
	
}
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值