mybatis代理类Demo

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mybatis代理类Demo相关的知识,希望对你有一定的参考价值。

前言

  简单实现通过代理接口来实现对数据的查询demo,也是对mybatis的一个熟练。首先是编写接口代理。

  public interface IBookMapper {

    List<BookModel> getBookList() throws Exception;
  }

 

   代理接口编写完毕后,需要在sqlMapConfig中添加映射,同时编码对应的mapper配置。我的接口和接口对应的mapper.xml是放在一个包下面的,目的是为了通过mappers映射器的package映射直接映射类过来。

 

<configuration>
  <properties resource="book.properties">
  </properties>
  <environments default="mysql">
    <environment id="mysql">
      <transactionManager type="JDBC" />
      <dataSource type="POOLED">
        <property name="driver" value="${jdbc.driver}" />
        <property name="url"
          value="jdbc:mysql://localhost:3306/mytest?characterEncoding=utf-8" />
        <property name="username" value="${jdbc.username}" />
        <property name="password" value="${jdbc.pwd}" />
      </dataSource>
    </environment>
  </environments>

  <mappers>
    <package name="Mapper" />
  </mappers>
</configuration>

   对应的mapper配置

<mapper namespace="Mapper.IBookMapper">
  <select id="getBookList" resultType="Models.BookModel">
      select * from book
  </select>
</mapper>

 需要注意的是:mapper配置中的namespace是我们要找的代理接口,需要整个命名空间权限名。我们在sqlSessionConfig中的mappers映射器中的pacakge的name是我们要去映射的包,包里面有我们的代理接口和映射配置文件,配置文件的名字和代理接口的名字是一样的。如下图:

技术分享

 

   基本已经完成,接下来我们开始通过junit来测试我们的结果。

  

  @Test
  public void selectTest() {
    SqlSession openSession = factory.openSession();
    IBookMapper mapper = openSession.getMapper(IBookMapper.class);
    List<BookModel> list = null;
    try {
      list = mapper.getBookList();
    } catch (Exception e) {
      e.printStackTrace();
    }
    openSession.close();
    if (list != null) {
      for (BookModel b : list) {
        System.out.println(b);
      }
    }

  }

   测试结果,在我们的控制台输出我们的查询结果:

  技术分享

 

 

 

 

 

总结

  对于学习新的东西,有人指导一下我想会更好,没有指导,在自己学完以后,做个demo是对所学的东西的最好的诠释。即使有人指导,有人教,那么在听取以后,要去思考把东西融入到自己的理解中然后按照自己的理解去demo一下会更加能加深对知识的巩固。一定是接着别人的讲,而不是按照别人的讲。更多的是要去与大家分享,很可能会得到更多的收获。

            don‘t say you finish study,no,it just as  beginning

以上是关于mybatis代理类Demo的主要内容,如果未能解决你的问题,请参考以下文章

Mybatis常用类原理

探索Mybatis之JDK动态代理:探究Proxy.newProxyInstance()生成的代理类解析

三个类告诉你MyBatis是如何用动态代理实现的

mybatis mapper动态代理

Mybatis源码解析,一步一步从浅入深:映射代理类的获取

mybati的Dao代理