用SSM实现选项模糊查询(出现错误 Parameter index out of range (2 > number of parameters, which is 1))

这里我做了个简单的Demo,实现选项后模糊查询

采用HTML5+SpringBoot+SpringMVC+Mybatis+MySQL

Html代码:

<form action="http://localhost:8080/searchMemberByKey" method="post">
  <select name="searchOption" id="">
    <option value="name">姓名</option>
    <option value="phone">手机号</option>
    <option value="id_no">身份证号</option>
    <option value="email">会员邮箱</option>
  </select>
  <input type="text" value="搜索关键字" name="searchKey">
  <input type="submit" value="搜索">
</form>

Controller代码:

@Controller
public class MemberController {

    @Autowired
    MemberService memberService;

    @RequestMapping(value = "searchMemberByKey",method = RequestMethod.POST)
    @ResponseBody
    public List<Member> getMemberListByKey(HttpServletRequest request){
        String searchOption = request.getParameter("searchOption");
        String searchKey = request.getParameter("searchKey");
        List<Member> members = new ArrayList<Member>();
        members = memberService.searchMember("member_" + searchOption,searchKey);
        return members;
    }

}

Service代码:

@Service
public class MemberServiceImpl implements MemberService {
    @Autowired
    MemberMapper memberMapper;

    @Override
    public List<Member> searchMember(String searchOption,String searchKey) {
        List<Member> members = new ArrayList<Member>();
        members = memberMapper.getMemberListByKey(searchOption,searchKey);
        return members;
    }

}

Mapper代码:

    //模糊查询对象列表
    @Select("SELECT * FROM member WHERE ${search_option} LIKE '%" + "${search_key}" + "%'")
    List<Member> getMemberListByKey(@Param("search_option")String searchOption,@Param("search_key")String searchKey);

MySQL:

最开始使用#{ },出现 Parameter index out of range (2 > number of parameters, which is 1) 错误,

原因是因为,#{ } 带单引号,${ } 不带单引号,将#换成$即可解决

SQL语句的查询条件是:选项+LIKE ‘% 搜索关键字 %’

修改后成功运行

 

 

 
posted @ 2022-04-02 22:41  卡鲁耶克  阅读(261)  评论(0)    收藏  举报