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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值