2021-03-06

项目场景:

使用mybatis发现的一些问题

问题描述:

这是在接口当中写的方法

 @Insert("INSERT INTO sys_user_role  VALUES(#{userId} ,#{roleId})")
    void saveUserRole( int userId , int roleId);

这是在service当中调用代码

mapper1.saveUserRole(userId, roleId);

这是mysql当中的表
在这里插入图片描述
这是报错情况 客户端
``

Type Exception Report
Message Request processing failed; nested exception is org.apache.ibatis.exceptions.PersistenceException:
Description The server encountered an unexpected condition that prevented it from fulfilling the request.
Exception
org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.apache.ibatis.exceptions.PersistenceException: 
### Error updating database.  Cause: org.apache.ibatis.binding.BindingException: Parameter 'userId' not found. Available parameters are [arg1, arg0, param1, param2]
### The error may involve com.itheima.dao.UserMapper.saveUserRole-Inline
### The error occurred while setting parameters
### SQL: INSERT INTO sys_user_role  VALUES(? ,?)
### Cause: org.apache.ibatis.binding.BindingException: Parameter 'userId' not found. Available parameters are [arg1, arg0, param1, param2]
	org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:982)
	org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:877)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:661)
	org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:851)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:742)
	org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
	org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:200)
	org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
Root Cause
org.apache.ibatis.exceptions.PersistenceException: 
### Error updating database.  Cause: org.apache.ibatis.binding.BindingException: Parameter 'userId' not found. Available parameters are [arg1, arg0, param1, param2]
### The error may involve com.itheima.dao.UserMapper.saveUserRole-Inline
### The error occurred while setting parameters
### SQL: INSERT INTO sys_user_role  VALUES(? ,?)
### Cause: org.apache.ibatis.binding.BindingException: Parameter 'userId' not found. Available parameters are [arg1, arg0, param1, param2]

在这里插入图片描述

# 原因分析:

首先看
错误信息是500  说明是服务器内部错误
继续往下看,发现是在sql中有问题,错误原因是



```java
org.apache.ibatis.binding.BindingException: Parameter 'userId' not found. Available parameters are [arg1, arg0, param1, param2]

到这里,问题就出来了,可能是元素名称写错了,然后就去查看

@Insert("INSERT INTO sys_user_role  VALUES(#{userId} ,#{roleId})")
    void saveUserRole( int userId , int roleId);
mapper1.saveUserRole(userId, roleId);

发现并没有问题,还是报错,奇了怪了。网上查了解决方法。

解决方案:

原来是两个变量,mybatis不清楚那个对应那个了,脑子抽了???
改成以下:

@Insert("INSERT INTO sys_user_role  VALUES(#{userId} ,#{roleId})")
    void saveUserRole( @Param("userId")int userId , @Param("roleId")int roleId);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值