Mybatis 3ソースコード解析(19)-mapper生成プロセス-例
1937 ワード
Mybatisはmapper形式のアクセスインタフェースを提供し、インタフェースを定義し、簡単な注釈を加えることでデータベース操作を実現します.
このmapperがどのように使われているかを見てみましょう.
先にインタフェースを定義
そのまま使えます
UserDaoオブジェクトがMapperProxyとして印刷されているのが見えます.エージェントです.UserDaoインタフェースは実装されていませんが、MybatisはJDKを利用した動的エージェントを生成してくれました.
次の章では、次のように分析します. Mybatisはどのように関連する注釈を読み取り、コンフィギュレーションに加えたのか. MybatisはどのようにUserDaoのエージェントオブジェクトを生成しますか. MybatisはどのようにUserDaoの中の方法を実現したのか.
このmapperがどのように使われているかを見てみましょう.
先にインタフェースを定義
public interface UserDao
{
// Mybatis Sql
@Select("select * from tab_user where user_id=#{USER_ID}")
public List
mybatis-config.xmlプロファイルに構成を追加するには、次の手順に従います.
// class, package, mybatis
そのまま使えます
public static void mapperTest(SqlSessionFactory sqlSessionFactory)
{
SqlSession sqlSession=sqlSessionFactory.openSession();
UserDao userDao=sqlSession.getMapper(UserDao.class);
System.out.println(userDao);
Map param=new HashMap<>();
param.put("USER_ID", "user_01");
System.out.println(userDao.queryUser_2(param));
System.out.println(userDao.queryUser(param));
}
出力の結果はorg.apache.ibatis.binding.MapperProxy@17d99928
[{user_id=user_01, user_name=liys, cust_id=cust_01, svc_num=13800138000}]
[{user_id=user_01, user_name=liys, cust_id=cust_01, svc_num=13800138000}]
UserDaoオブジェクトがMapperProxyとして印刷されているのが見えます.エージェントです.UserDaoインタフェースは実装されていませんが、MybatisはJDKを利用した動的エージェントを生成してくれました.
次の章では、次のように分析します.