Mybatis:如何在mapper.xml中使用字符串concat

问题描述:

我正在用mybatis编写一个spring web项目。我有很多分解表像user_10,user_11,user_12Mybatis:如何在mapper.xml中使用字符串concat <include refid />?

在mapper.xml,我有

<sql id="TableNameBase">user_</sql> 

    <insert id="insert"> 
    INSERT INTO <include refid="TableNameBase">#{id} 
    ... 

为〔实施例,如果我想要做的事,如:

 insert into user_10 ... 

我可以通过id = 10 但上述<include refid="TableNameBase">#{id}似乎产生user_ 10而不是预期user_10

我该怎么办?

+0

是问题中的空白'user_10'表名? – araknoid

+0

它似乎是这样的。 – Lily

看起来标签在前后添加空格。 你可以做的是定义一个参数表名是这样的:

<sql id="user_table"> 
    user_#{id} 
</sql> 

然后你就可以在下面的例子中传递参数,就像使用它:

<insert id="insert"> 
    INSERT INTO <include refid="user_table"/> 
    ... 
+0

在另一个sql语句中,有'table_name = ',但没有单引号'',所以它不行。我试过'table_name =''',但是我得到了'table_name ='user_10''但不是'table_name ='user_10'',该如何处理? – Lily

+0

据我所见,在这个代码中'table_name ='''在''之前有一个空格。顺便说一下,因为这段代码似乎是where条件的一部分(与问题不一样),所以最好将它作为参数值传递给查询,而不要使用include作为参数值。 – araknoid