前端搜索框将一个变量传入后端,后端Java通过MyBatis查询MySQL数据库时,用这个变量对数据库内两个字段查询过滤,两个字段内任何一个字段符合这个变量都可以被查询出来,且当同一条数据两个字段值相同时,查询时不能重复出现两条数据
回答:这里需求说明的还是很详细的,直接采用Ajax传过来那个变量,应该是一个字符串,然后直接采用mybatis的Java代码进行QueryWrapper的条件过滤,等于第一个字段或者等于第二个字段,得到的是一个List,应该会自动把交集只取一次
参数占位符
1.#{} 会将其转换成?,防止sql注入问题 和prepareStatement类似
2.${} 拼sql,会存在sql注入问题
3.使用时机:
*参数传递的时候:#{}
*表明或者列明不固定的情况下:${},但是也存在sql注入问题
特殊字符的处理 例如:select * from tb_brand where id<${id};是不可以的
1.转义字符 小于号的转义字符 < select * from tb_brand where id < ${id};
2.CDATA区 在中间加入大写的CD确定 就可以正常写入小于号了
parameterType="integer"是参数类型,可以省略
<select id="selectAllById" parameterType="integer" resultMap="brandResultMap">
select * from tb_brand where id = ${id};
</select>