将类字段名称映射到myBatis中用于插入的列名称
问题描述:
我正在使用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]
分别参数 '用户'
答
找到了答案:
的代码应该是这样的:
void createUser(@Param("user")User user)
<insert id="createUser" parameterType="...User">
INSERT INTO users (user_name, e_mail) VALUE
(#{user.username},#{user.email})
</insert>
答
如果您有这些私有变量的获取者/设置者,您不应该指定@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>
如果您使用上面显示的XML语法,也没有理由使用注释。 – jkratz 2013-03-26 14:06:53