MyBatis [アノテーションを使用して開発]

8. アノテーションを利用した開発

8.1 インターフェース指向の開発

違いの 3 つの側面

オブジェクト指向とは、問題を考えるときにオブジェクトを 1 つの単位として捉え、そのプロパティとメソッドを考慮することを意味します。

プロセス指向とは、問題を考えるときに、特定のプロセス(ビジネスプロセス)を単位として、その実現を検討することを意味します。

インターフェイス設計と非インターフェイス設計は再利用技術のためのものであり、オブジェクト指向 (プロセス) は問題ではなく、システム全体のアーキテクチャに反映されます。

8.2 アノテーションを利用した開発

1. アノテーションはインターフェースに実装されます

   @Select("select * from mybatis.user")
    List<User> getUsers();

2. コア構成ファイルでのバインド

<!--绑定接口-->
    <mappers>
        <mapper class="com.jiang.mapper.UserMapper"></mapper>
    </mappers>

3. テスト

public class UserMapperTest {

    @Test
    public void test(){
        SqlSession sqlSesssion = MybatisUtils.getSqlSesssion();
        //底层主要应用反射
        UserMapper mapper = sqlSesssion.getMapper(UserMapper.class);
        List<User> users = mapper.getUsers();
        for (User user: users
             ) {
            System.out.println(user);
        }
        sqlSesssion.close();
    }

本質: リフレクションメカニズムの実装

最下層: 動的プロキシ

Mybatisの詳細な実行プロセス

 8.3 クラッド

ツールクラスの作成時にトランザクションを自動的にコミットできます

 @Test
    public void test(){
        SqlSession sqlSesssion = MybatisUtils.getSqlSesssion();
        //底层主要应用反射
        UserMapper mapper = sqlSesssion.getMapper(UserMapper.class);
       /* User user = mapper.getUserById(1);
        System.out.println(user);*/
        /*for (User user: users
             ) {
            System.out.println(user);
        }*/
        mapper.addUser(new User(5,"youyou","123123"));

        sqlSesssion.close();
    }
 @Select("select * from mybatis.user")
    List<User> getUsers();

    //方法存在多个参数,所有的参数前面必须加上@Param
    @Select("select * from user where id=#{id}")
    User getUserById(@Param("id") int id);

    @Insert("insert into user(id,name,pwd)values(#{id},#{name},#{password})")
    int addUser(User user);
<!--绑定接口-->
    <mappers>
        <mapper class="com.jiang.mapper.UserMapper"></mapper>
    </mappers>

@Param() アノテーションについて

  • 基本型またはString型のパラメータを追加する必要があります
  • 参照型を追加する必要はありません
  • 基本タイプが 1 つだけの場合は無視できますが、全員に追加することをお勧めします。
  • SQL で参照するのは、ここで @Param() に設定された属性名です。

#{} と ${}

#SQLインジェクションを防ぐためにプリコンパイルされた意味があります


https://www.bilibili.com/video/BV1NE411Q7Nx?p=19&spm_id_from=pageDriver

おすすめ

転載: blog.csdn.net/qq_48108092/article/details/124168650