java吧 关注:1,245,223贴子:12,720,125
  • 10回复贴,共1

求助,有个需求,mybatis执行的语句要写在数据库里

只看楼主收藏回复

mybatis执行的语句要写在数据库里,会一直变化,如字段sql的值为
select *
from user
where status = 1
<if test="userName != null">
and t1.user_name like concat('%', #{user_name,jdbcType=VARCHAR},'%')
</if>
需要按照数据库写的语句去执行,但是用${_sql},传入,这个<if>标签会被当做语句执行,请问如何解决?


IP属地:浙江1楼2023-10-23 10:48回复
    有没有大佬解答一下


    IP属地:浙江2楼2023-10-23 10:48
    回复


      IP属地:浙江3楼2023-10-23 10:56
      回复
        用存储过程


        IP属地:山东来自Android客户端4楼2023-10-23 11:05
        回复
          建议查查 mybatis执行日志 在执行日志那里处理这种功能


          IP属地:山西5楼2023-10-23 11:07
          回复
            用存储过程或者sqlprovider+注解


            IP属地:广东来自Android客户端6楼2023-10-23 11:09
            收起回复
              没研究过,但是有同事在做这个事情,说mybatis 的标签可能不太行,因为解析动态sql是在解析参数之前进行的,只能用别的办法弄了


              IP属地:上海来自iPhone客户端7楼2023-10-23 12:40
              回复
                这个可以是可以。就是你的传参要检验,否则可能sql注入。具体办法我下午去公司后看看。


                IP属地:陕西来自Android客户端8楼2023-10-23 12:41
                回复
                  试试这种的


                  IP属地:陕西来自Android客户端9楼2023-10-23 14:09
                  收起回复