Parameter 'disname' not found. Available parameters are [3, 2, 1, 0, param1, param2, param3, 4,

本文探讨了在使用MyBatis框架进行数据库操作时,如何通过合理地使用@Param注解来优化参数传递,避免SQL注入风险,提高代码的可读性和维护性。详细介绍了将多个查询参数明确标注的方法,以及这种方式如何提升代码的清晰度。
改前:
    List<TDiseasesDto> searchByDateall(String orchardBaseInfoId,Date start,Date end,String disname,String notdisname);

改后:
 List<TDiseasesDto> searchByDateall(@Param("orchardBaseInfoId")String orchardBaseInfoId,@Param("start")Date start,@Param("end")Date end,@Param("disname")String disname,@Param("notdisname")String notdisname);


 

出现 `Parameter &#39;userName&#39; 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: &#39;testUser&#39;, password: &#39;testPassword&#39;, phonenumber: &#39;1234567890&#39;, phoneCode: 123 }; fetch(&#39;/api/updateUserJson&#39;, { method: &#39;PUT&#39;, headers: { &#39;Content-Type&#39;: &#39;application/json&#39; }, body: JSON.stringify(data) }) .then(response => response.text()) .then(result => console.log(result)) .catch(error => console.error(&#39;Error:&#39;, 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"; } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值