框架学习系列 mybatis 第八篇 mybatis开发dao的方式
本节主要内容
1:原生dao的开发方式
2:总结&下节预告
本文是《凯哥陪你学系列-框架学习之mybatis框架学习》中第八篇 mybatis开发dao的方式
声明:本文系凯哥原创。转载请注明出处--头条号
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的方式