将类字段名称映射到myBatis中的列名以进行插入

时间:2013-03-22 18:34:53

标签: mybatis

我正在使用myBatis并尝试为User类创建一个db条目。 如何将不同的字段名称映射到列名称? 我需要或者myBatis应该知道吗?

我的用户类如下所示:

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

,列名为:

user_name
e_mail

myBatis create方法如下所示:

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]

分别参数'user'

2 个答案:

答案 0 :(得分: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>

答案 1 :(得分:0)

如果您拥有这些私有变量的getter / setter,则不必指定@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>