mybatis拼接好的SQL片段传入查询

传入一个SQL片段,如 WEAVE_TYPE='on' and STATUS='quit' 。
然后拼接到where条件中,进行查询,报错:java.sql.SQLException: ORA-00936: missing expression

xml写法如下:
SELECT * from BASE where 1=1 and ${condition}
其中condition是传入的SQL片段。

请问,有什么办法解决?

5个回答

mybatis 是先进行预处理的,所以你传入的片段也好其他也好,都会当做一个值来看待,如果你想要条件的话,可以封装到MAP中 使用mybatis的
xxxxx field就是你要拼接的字段 进行处理

1,用 $ ,容易sql注入;最好用 # ;
2,可以用<#if test 进行动态sql拼接,不要把sql写到代码中;
3,${condition} 报错,应该是mybatis自动加了 引号造成的;


and status = #{status}

 <if test="status != null">
and status = #{stauts}
</if>

如果你使用了mybatis ,使用这个sql拼接就是对它的侮辱哈。它本来就提供了《if》 标签可以进行条件判断
,建议你还是将参数封装在对象中,然后在配置文件 中使用mybatis 提供的机制进行拼接。使用#{属性值}。进行预处理。
而且如果你是使用 前台获取到的参数进行拼接的话,还会产生sql注入的危险

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问