有关前端传来的参数类型问题
需求是这样的:前端只有一个输入框,但是有不同的字段信息提供给用户进行查询,比如使用名称和用户名进行模糊查询,或者是输入id进行精确查询。
解决思路
首先想到的是前端使用一个对象去接用户参数,后端也是使用对象去接受参数,后来发现前端使用一个字段信息更为方便。
前端传来参数之后,后端使用对象接受,获取到当前用户传来的信息,比如传来 “1” 但是这个是传来的字符串,需要转换成数字,这里我使用的是正则表达式,开始使用的是Integer.PasInt() 这样的开始测试的时候是正确的,因为我传递的都是数字,后来输入字符串发现,就会报异常,之后就找到了matches("\\d+")这个方法,这个可以对用户传递的字符串进行判断。
判断完类型之后,我采用的是Map的方式接受参数信息,如果是id 则put(“id”,name),否则put(“name”,name);
数据库语句使用的是类似下边这样的写法:
<if test="id != null and id!=''"> and id =#{id} and isdel=0 </if> <if test="name!= null and name!= ''"> or name like concat('%',#{name},'%') </if> //重点是看这里哦 由于前端只传来一个参数,这里我才用的就是这种方式, // 所有的查询条件都是拼接的前端传来的字段信息。 <if test="name!= null and name!= ''"> or createby like concat('%',#{name},'%') </if>