2013-03-22 48 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

相关问题