mybatis用postman的请求参数,mybyatis模糊查询语法
1.第一个问题
sql在数据库能查到但是,执行时就是什么都没有,网上查了下,解决办法,可能可数据库数据类型有关,如果是char(10)长度为10的话,可能不足10个都用空格补位了,所以这个时候要加trim()函数去空格,
但我加上并没有什么用,而且我数据库类型varchar可变长度
这个是用postman的请求
这个是查询结果,但当时这个参数是’37’,查询结果totel = 0
去掉参数就正常了,由此判断是传参问题,注解传参也没问题
xml页面用#进行接收
最后发现 应该sql最后编译结果是 select * from table where provCode = ”37”
这个条件去查的,不是双引号,而是嵌套了两个双引号
解决办法,其实是个失误,
postman拼接参数不加”单引中,笑哭
在就是可以使用${value} 来进行接收 ,${value} 不会自动加”号
再就是记录一些小规范 ,#和{之间不能有空格
不能写分号结束,会报无效的字符
再就是一个模糊查询的问题,首先说下两种接收参数区别
#{} 会在 变量外侧 加上 单引号
${} 并不会
但我们应尽量避免使用 ${} ,因为这个最终会将参数拼接到 sql语句上,存在sql注入的问题。
两种办法
1.使用’%${name}%’ 这种方式,但是这种方式并不好,上面说了,有sql注入的风险。
2.我们可以采用 name like concat(‘%’,#{name},’%’) 这种方式来进行字符串拼接.
但是以上拼接在oracle中是错误的,因为oracle中concat函数拼接3个要嵌套拼接
concat(concat(‘aa’,’bb’),’cc’)
或者使用
注意第二种方法后面两个只限oracle,mysql concat(‘%’,#{name},’%’)就可以 了,第一种方法则都可以
转载自:https://blog.csdn.net/qq_40846086/article/details/82178306