看完了以前的mybatis原始的dao开发方法是否是以为有点笨重,甚至说没有发挥mybatisjava
做为一个框架的优点。总结了一下,原始的dao方法有如下几点不足之处程序员
SqlSession sqlSession = sqlSessionFacory.openSession();
sqlSession.commit();
sqlSession.close();
这三行代码几乎在每一个方法里面都能看见,设想可否将这些代码提取出来,大大减轻程序员的工做量。spring
因此既然出现了问题,改进是势在必行的。接下来就让咱们看看如何改进。sql
固然就是今天的主题mapper代理开发方式了mybatis
正在这种开发方式中,程序员须要编写mapper.xml文件,其实就是一个相似于以前的user.xml的文件app
另外在mapper代理方法中程序员只要写mapper接口(至关于dao接口)遵循一些开发规范,mybatis能够自动生成mapper接口实现类代理对象(就是实现接口类不用我们去写了)框架
具体有如下几个规范:测试
在mapper.xml中的namespace等于mapper接口地址 ui
根据以上规范能够写出根据id查询用户信息方法的定义了编码
为了更好地理解上面的规范,下面给出映射文件方便进行对比
总结一下:以上规范就是对下面代码进行统一辈子成
由于别的方法都大同小异,因此这里只写了一个方法findUserById,下面测试也是同样,直接测试mapper接口里的findUserById方法,别的方法就不去测试了
代码以下:
public class UserMapperTest { private SqlSessionFactory sqlSessionFactory; @Before public void setUp() throws Exception { //获得配置文件流 InputStream inputStream = Resources.getResourceAsStream("sqlMapConfig.xml"); //建立会话会话工厂 sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); } @Test public void testFindUserById() throws Exception { //建立会话 SqlSession sqlSession = sqlSessionFactory.openSession(); //建立mapper代理对象 UserMapper userMapper= sqlSession.getMapper(UserMapper.class); //调用代理对象的方法,打印结果 System.out.println(userMapper.findUserById(32)); } }
里面最重要的一句就是
UserMapper userMapper= sqlSession.getMapper(UserMapper.class);
这句代码把咱们以前的建立接口的实现类这一步的工做省略了,直接生成一个代理对象,而后经过这个对象去调用方法,执行一系列操做
结果以下:
好了,到这里两种dao开发方法都讲完了,固然后面与spring整合以后的dao开发方法更系统,用起来更棒更爽,请期待更新。。。