0

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

我的用户类如下所示:

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]

分别参数“用户”

4

2 回答 2

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>
于 2013-03-22T19:20:27.187 回答
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>
于 2013-03-26T14:05:47.003 回答