mybatis字符串拼接

在业务场景中遇到MyBatis字符串拼接问题,最初通过SQL的CONCAT函数可以正常运行并获取数据。但在MyBatis里,发现需要使用两个CONCAT来实现相同的功能。问题在于MyBatis中的字符串拼接方式不同于直接执行的SQL,需要特别注意。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

业务场景,在sql中进行字符串的拼接,当时写的sql在数据库中运行可以查到数据,因此没有考虑sql,问题,一直在考虑参数绑定的问题,

 <select id="getProgramMenuDataList" resultType="com.iboyaa.synthetical.entity.dto.ProgramMenuDTO">
        SELECT DISTINCT pm.id, pm.menuname ,c.value AS programtype ,u.username as operator,pm.createtime
        ,pm.modifytime,c1.value as statusname, s.name as servername ,
        <!--&lt;!&ndash;-CONCAT('/',t.serverid,'/',REPLACE(t.thumbsrc,'\\','/')) as thumbsrcName ->-->
        CONCAT(CONCAT('/',t.serverid,'/',REPLACE(t.thumbsrc,'\\','/'))) as thumbsrcName
        from
        zs_program_menu_info pm
        LEFT JOIN  zs_program_menu_dtl  pmd ON pmd.menuid = pm.id

        LEFT JOIN  zs_program_info p on p.id = pmd.programid
        LEFT JOIN (SELECT code,VALUE from zs_code where type = '' )c ON c.code = pm.category
        LEFT JOIN (SELECT code,VALUE from zs_code where type = '' )c1 ON c1.code = pm.status
        LEFT JOIN ventuz_server_info  s ON s.id = pm.serverid
        --  LEFT JOIN (SELECT menuid,operator FROM zs_program_menu_log where type='') pmo ON pmo.menuid = p.id
        LEFT JOIN  ventuz_template_info t ON t.serverid = p.serverid and  t.id =  p.menuid
        LEFT JOIN zs_user_info  u  on   u.id = pm.operator

        WHERE  pm.isdel = 0
      

        group by   pm.id
        order by pm.createtime desc

    </select>

CONCAT(’/’,t.serverid,’/’,REPLACE(t.thumbsrc,’\’,’/’)) as thumbsrcName
这是SQL版,sql在拼接时只需要一个CONCAT
后来就想着是否为mybatis语法的原因,
在mybatis中,字符串拼接需要两个CONCAT
CONCAT(CONCAT(’/’,t.serverid,’/’,REPLACE(t.thumbsrc,’\’,’/’))) as thumbsrcName

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值