我正在使用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'
答案 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>