框架学习系列 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接口类开发

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

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

1.4:dao实现类开发:

1.4.1:创建实现类

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

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

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对象

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

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

根据id获取

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

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

模糊查询:

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

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

插入数据:

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

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

1.4.6 测试代码开发

通过befor注解先初始化sqlSessionFactory对象

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

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

before注解的源码介绍

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

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

测试根据用户id进行查询的代码:

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

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

通过junit测试结果:

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

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

其实两个方法自己完成测试。

1.4.7:问题思考

本文中的代码量相对于入门程序代码来说优化了很多。那么还有没有不足的地方?

当然有。

1:存在大量的重复模板代码

2:存在硬编码(String resource = "SqlMapConfig.xml";)写死在代码中

二:总结&下节预告

通过本文学习我们需要掌握的

1:回顾接口/实现类开发模式

2:回去获取一个对象的实例方式之一 ----通过构造器注入

3:了解junit的@befor主键

下节预告:下节我们通过mapper代理的方式来解决以上问题

相关源码:

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

阅读全文
0 0
原创粉丝点击