框架学习系列 mybatis 第八篇 mybatis开发dao的方式

凯哥Java 凯哥java 本节主要内容 1:原生dao的开发方式 2:总结&下节预告 本文是《凯哥陪你学系列-框架学习之mybatis框架学习》中第八篇 mybatis开发dao的方式 声明:本文系凯哥Java(www.kaigejava.com)原创(微信id:kaigejava)。转载请注明出处 mybatis开发dao的方式有两种 1:原始dao的开发方式 2:Mapper代理的开发方式。 本文中,咱们先讲解原始的dao开发方式。 一:原始dao的开发方式 1.1:什么是原始dao的开发方式? 其实就是咱们正常开发方式,即开发dao接口和dao实现类。 1.2:需求 ①:根据用户id查询用户信息 ②:根据用户名称模糊查询用户列表 ③:添加用户 1.3:dao接口类开发 1.4:dao实现类开发: 1.4.1:创建实现类 1.4.2:问题思考 1:在入门程序开发中我们知道,想要使用mybatis,必须要有sqlsession才可以 而sqlsession又是有sqlsessionFactory创建的。那么我们还是像入门程序那有,每个方法都创建一个 sqlsessionFactory吗? 2:如果不是,那么这个sqlsessionfactory又该如何创建呢? 3:sqlsession可以作为成员变量/单例吗? 1.4.3:问题分析 1:selSessionFactory,它的生命周期,应该是整个应用的范围内。全局范围内只需要有一个工厂就可以,使用单例模式来实现这个功能。(注:在本例中不处理。等以后与spring集成之后,有spring来对其进行单例管理) 2:通过1的分析我们知道sqlSessionFactory是全局的,如何获取呢? 我们知道获取一个对象的实例有多种方式 new 关键字new出一个对象;构造器注入等。在这里我们就使用构造器注入方式 3:我们知道session是一次会话的,里面有内容的。所以sqlSession,它内部含有一块数据区域的。 存在线程不安全的问题,所以应该将sqlSession放到方法内部。而不是成员(全局)变量或者是单例来 1.4.5:代码开发 通过构造器方式把sqlsessionFactory注入给userDaoImpl对象 根据id获取 模糊查询: 插入数据:

1.4.6 测试代码开发 通过befor注解先初始化sqlSessionFactory对象 before注解的源码介绍 测试根据用户id进行查询的代码: 通过junit测试结果: 其实两个方法自己完成测试。 1.4.7:问题思考 本文中的代码量相对于入门程序代码来说优化了很多。那么还有没有不足的地方? 当然有。 1:存在大量的重复模板代码 2:存在硬编码(String resource = "SqlMapConfig.xml";)写死在代码中 二:总结&下节预告 通过本文学习我们需要掌握的 1:回顾接口/实现类开发模式 2:回去获取一个对象的实例方式之一 ----通过构造器注入 3:了解junit的@befor主键 下节预告:下节我们通过mapper代理的方式来解决以上问题 相关源码: 【代码】框架学习系列 mybatis 第八篇 mybatis开发dao的方式