2013-03-22 89 views
0

我正在使用myBatis並嘗試爲類用戶創建數據庫條目。 如何將不同的字段名稱映射到列名稱? 我需要還是應該myBatis知道他們?將類字段名稱映射到myBatis中用於插入的列名稱

我的User類是這樣的:

public class User { 
    private String username; 
    private String email; 
... 

和列名:

user_name 
e_mail 

MyBatis的創建方法如下:

void createUser(User user) 

...我已經這樣試過:

<insert id="createUser" parameterType="...User"> 
     INSERT INTO users (user_name, e_mail) VALUE 
     (#{username},#{email}) 
</insert> 

這:

<insert id="createUser" parameterType="...User"> 
      INSERT INTO users (user_name, e_mail) VALUE 
      (#{user.username},#{user.email}) 
</insert> 

我不斷收到:

Parameter 'username' not found. Available parameters are [1, 0, param1, param2] 

分別參數 '用戶'

回答

3

找到了答案:

的代碼應該是這樣的:

void createUser(@Param("user")User user) 

<insert id="createUser" parameterType="...User"> 
      INSERT INTO users (user_name, e_mail) VALUE 
      (#{user.username},#{user.email}) 
</insert> 
0

如果您有這些私有變量的獲取者/設置者,您不應該指定@param註釋。你沒有在你的代碼片段中指明你的工作。 MyBatis應該足夠聰明,可以假設你有一個變量來調用變量的getter。如果你看看這裏的文檔http://mybatis.github.com/mybatis-3/sqlmap-xml.html#Parameters他們有一個例子就像你在做什麼(注意你的第一個插入映射是正確的)。

<insert id="insertUser" parameterType="User" > 
insert into users (id, username, password) 
values (#{id}, #{username}, #{password}) 
</insert> 
+0

如果您使用上面顯示的XML語法,也沒有理由使用註釋。 – jkratz 2013-03-26 14:06:53

相關問題