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},'%')就可以 了,第一种方法则都可以

猜你喜欢

转载自blog.csdn.net/qq_40846086/article/details/82178306