Springboot注記構成

2097 ワード

1.param、この方式はわかりやすいですが、@Paramで定義されているnameSQLに対応している#{name}ageSQLに対応している#{age}.
@Insert("INSERT INTO USER(NAME, AGE) VALUES(#{name}, #{age})")
int insert(@Param("name") String name, @Param("age") Integer age);

2.mapを使用すると、sqlに必要なパラメータをすべてmapに配置し、パラメータ名はmapのkey値である
@Insert("INSERT INTO USER(NAME, AGE) VALUES(#{name,jdbcType=VARCHAR}, #{age,jdbcType=INTEGER})")
int insertByMap(Map map);

Insert文に必要なパラメータについては、次のコードに示すように、mapに同じ名前の内容を入力するだけです.
Map map = new HashMap<>();
map.put("name", "CCC");
map.put("age", 40);
userMapper.insertByMap(map);

3.オブジェクトを使用して、オブジェクトの属性名はsqlのパラメータ名に対応する必要があります
@Insert("INSERT INTO USER(NAME, AGE) VALUES(#{name}, #{age})")
int insertByUser(User user);

4.添削改査の基礎操作は、junitで実行し、テストを行う場合、insert操作を実行する場合、データベースにデータを追加しません.
public interface UserMapper {

    @Select("SELECT * FROM user WHERE name = #{name}")
    User findByName(@Param("name") String name);

    @Insert("INSERT INTO user(name, age) VALUES(#{name}, #{age})")
    int insert(@Param("name") String name, @Param("age") Integer age);

    @Update("UPDATE user SET age=#{age} WHERE name=#{name}")
    void update(User user);

    @Delete("DELETE FROM user WHERE id =#{id}")
    void delete(Long id);
}

 5.クエリー結果バインド、「検索」操作については、多表関連、集計計算などの操作が必要になる場合が多いが、クエリーの結果は単純なエンティティオブジェクトではなく、データベースエンティティとは異なるパッケージクラスを返す必要がある場合が多い.この場合、@Results@Result注釈でバインドすることができる.具体的には以下の通りです.
@Results({
    @Result(property = "name", column = "name"),
    @Result(property = "age", column = "age")
})
@Select("SELECT name, age FROM user")
List findAll();

上のコードでは、@Resultのproperty属性はUserオブジェクトのメンバー名、columnはSELECTのフィールド名に対応しています