0

myBatisを使用して、Userクラスのdbエントリを作成しようとしています。さまざまなフィールド名を列名にマップするにはどうすればよいですか?myBatisがそれらを知っている必要がありますか、または知っている必要がありますか?

私のUserクラスは次のようになります。

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

列名は次のとおりです。

user_name
e_mail

myBatiscreateメソッドは次のようになります。

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

これらのプライベート変数のゲッター/セッターがある場合は、@paramアノテーションを指定する必要はありません。コードスニペットでそうすることを示していません。MyBatisは、変数があると仮定して、変数のゲッターを呼び出すのに十分賢いはずです。こちらのドキュメント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 に答える