Parameter 'phone' not found. Available parameters are [0, 1, param1, param2]关于mybatis多个参数问题

今天写ssm项目,需要dao层需要传入多个参数,我直接传入多个字符串而没有使用map,于是出现了Parameter 'phone' not found. Available parameters are [0, 1, param1, param2]错误.如下:

dao层接口方法:

	User selectUserByPhoneAndPassword(String phone,String password);//通过密码和手机号查询用户信息
xml中sql语句:

	<mapper namespace="com.bjpowernode.p2p.mapper.user.UserMapper">

	<resultMap id="BaseResultMap" type="com.bjpowernode.p2p.model.user.User">
		<id column="id" jdbcType="INTEGER" property="id" />
		<result column="phone" jdbcType="VARCHAR" property="phone" />
		&
出现 `Parameter 'userName' not found. Available parameters are [phonenumber, param1, username, param2]` 错误,通常是由于 Java 代码中参数名大小写不匹配、参数传递方式与接收方式不一致、MyBatis 映射问题等原因导致的。以下是具体的解决办法: #### 1. 检查 Java 代码中参数名大小写 确保 Java 方法中参数名的大小写与前端传递的参数名一致。例如,若前端传递的是 `userName`,Java 方法中也应使用 `userName`: ```java @RestController @RequestMapping("/api") public class UserController { @PutMapping("/updateUser") public String updateUser(@RequestParam String userName, @RequestParam String password, @RequestParam String phonenumber, @RequestParam Integer phoneCode) { // 处理逻辑 return "User information updated successfully"; } } ``` #### 2. 检查 MyBatis 映射 如果使用 MyBatis 进行数据库操作,要保证 XML 文件中的参数值与 `@Param` 注解中的值对应。若接口中的多个参数属于一个 JavaBean 可以不使用注解 `@Param("xxx")`;反之,不是同一个 JavaBean 需要使用 `@Param("xxx")` 标明[^1]。示例如下: ```java public interface UserMapper { void updateUser(@Param("userName") String userName, @Param("password") String password, @Param("phonenumber") String phonenumber, @Param("phoneCode") Integer phoneCode); } ``` XML 文件: ```xml <update id="updateUser"> UPDATE users SET password = #{password}, phonenumber = #{phonenumber}, phoneCode = #{phoneCode} WHERE userName = #{userName} </update> ``` #### 3. 检查参数传递方式 确保前端传递参数的方式与 Java 后端接收参数的方式一致。如果前端使用 JSON 格式传递参数,后端应使用 `@RequestBody` 接收;如果使用表单数据传递,后端使用 `@RequestParam` 接收。 前端使用 JSON 传递参数示例: ```javascript const data = { userName: 'testUser', password: 'testPassword', phonenumber: '1234567890', phoneCode: 123 }; fetch('/api/updateUserJson', { method: 'PUT', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.text()) .then(result => console.log(result)) .catch(error => console.error('Error:', error)); ``` 后端使用 `@RequestBody` 接收: ```java class UserInfo { private String userName; private String password; private String phonenumber; private Integer phoneCode; // Getters and Setters // ... } @RestController @RequestMapping("/api") public class UserController { @PutMapping("/updateUserJson") public String updateUserJson(@RequestBody UserInfo userInfo) { // 处理逻辑 return "User information updated successfully"; } } ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值