V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
esolve
V2EX  ›  问与答

mybatis 里如何连接字符串?

  •  
  •   esolve · 2017-09-26 15:38:57 +08:00 · 9068 次点击
    这是一个创建于 2616 天前的主题,其中的信息可能已经有所发展或是发生改变。

    像是下面的 table_name='user_'#{groupId}

    连接是错误的

    譬如如果 id 是 132,应该是变成了'user_'132,而不是期望的'user_132'

     <select id="tableExists" parameterType="String" resultType="Integer">
        SELECT COUNT(*)
        FROM information_schema.tables
        WHERE table_schema='api_db'
        AND table_name='user_'#{groupId}
     </select>
    
    5 条回复    2017-09-26 16:10:16 +08:00
    Aegwynn
        1
    Aegwynn  
       2017-09-26 15:49:20 +08:00
    oracle:'user_'||#{groupId}
    mysql:concat('user_',#{groupId})

    顺便吐槽 lz,你这什么 jb 用法,拼接放到上层语言不行么?
    LichMscy
        2
    LichMscy  
       2017-09-26 15:52:13 +08:00
    一楼正解

    传 parameter 的时候直接拼上'user_',减少在 SQL 中拼接,不然就用 concat,建议掌握下 mybatis 的原理
    novaeye
        3
    novaeye  
       2017-09-26 15:53:40 +08:00
    "#"符号换成"$"符号.
    参考: http://www.jianshu.com/p/b3b4a4fb8a54
    hcymk2
        4
    hcymk2  
       2017-09-26 16:00:11 +08:00
    用 getMetaData().getTables() 来判断表是否存在吧。
    esolve
        5
    esolve  
    OP
       2017-09-26 16:10:16 +08:00
    @Aegwynn 分表了啊,如果在 java 层的话,那就要在业务层拼接了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4591 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 05:34 · PVG 13:34 · LAX 21:34 · JFK 00:34
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.