框架学习系列 mybatis 第八篇 mybatis开发dao的方式
来源:互联网 发布:sql清除注册表 编辑:程序博客网 时间:2024/06/06 22:40
本节主要内容
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的方式
- 框架学习系列 mybatis 第八篇 mybatis开发dao的方式
- 代码 框架学习系列 mybatis 第八篇 mybatis开发dao的方式
- 【SSM-MyBatis框架】MyBatis开发DAO的方式
- 框架学习系列 mybatis 第九篇 mybatis中Mapper代理的开发方式
- Mybatis框架学习(二)—DAO开发方式和Mapper代理的开发方式
- 【MyBatis-04】mybatis开发dao的方式
- MyBatis学习--mybatis开发dao的方法
- Mybatis学习记录(二)--Mybatis开发DAO方式
- Mybatis学习记录(二)--Mybatis开发DAO方式
- Mybatis学习记录(二)--Mybatis开发DAO方式
- MyBatis开发dao的两种方式
- mybatis开发原始dao的方式
- MyBatis原始Dao开发方式
- 框架学习系列 mybatis 第二篇 mybatis的工作原理
- MyBatis学习记录(3):Mapper动态代理方式开发DAO
- mybatis源码学习--spring+mybatis注解方式为什么mybatis的dao接口不需要实现类
- mybatis源码学习--spring+mybatis注解方式为什么mybatis的dao接口不需要实现类
- mybatis源码学习--spring+mybatis注解方式为什么mybatis的dao接口不需要实现类
- 如何使用JavaScript在静态页面插入PDF文件(附带效果图)?
- Ignatius and the Princess IV
- layer.open组件获取弹出层页面变量、函数
- 复杂clone
- 如何在Debian和Ubuntu下重新打包Deb文件
- 框架学习系列 mybatis 第八篇 mybatis开发dao的方式
- jenkins 启动参数 大全
- delete和truncate的区别
- 如何进行字符串解析,并打印需要的字符串
- java基础学习
- Intellij UML Support插件介绍 及 Android Context继承关系
- 免费馅饼||HDU1176
- 获取字符串高度或宽度
- HDU 2814 斐波那契循环节+欧拉函数降幂