2017-10-10 73 views
1

我正在用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

回答

0

看起來標籤在前後添加空格。 你可以做的是定義一個參數表名是這樣的:

<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

相關問題