主流框架一:Mybatis框架(1)概括,环境搭建示例

一:框架概括与三层架构

1.什么是框架?

首先说说框架,简单来说框架就是将我们繁琐的代码实现进行封装,从而极简的实现功能,大大提高开发效率。不同框架解决不同的问题。

2.三层MVC架构

在javaweb中我们说到了三层架构,其中有表现层(展示数据),业务层(处理业务,进行事务处理),持久层(与数据库进行交互)
在这里插入图片描述
三层架构所用框架
3.持久层(dao)技术解决方案

(1)JDBC技术:

	Connection

	PreparedStatement

	ResultSet

(2)其他的比如Spring的JdbcTemplate:

Spring中对jdbc的简单封装

(3)Apache的DBUtils:

它和Spring的JdbcTemplate很像,也是对Jdbc的简单封装

以上这些都不是框架JDBC是规范Spring的JdbcTemplate和Apache的DBUtils都只是工具类
在这里插入图片描述
持久层(dao层)总图

二:Mybatis概述

Mybatis是一个持久层的框架,用java编写。它封装了jdbc操作的很多细节,是开发者只需关注sql语句本身,而无需关注那些注册驱动,创建连接等繁杂的过程,他使用的是一种ORM思想实现结果集的封装。

ORM(Objece Relational Mapping)思想:顾名思义 对象关系的映射。

简答来说就是把 数据库和实体类属性 所对应起来让我们可以操作实体类就实现操作数据库。

数据库中是user id password 则实体类中就必须是user id password,我们只需要做到实体类中的属性和数据库表的字段名称保持一致。

三:Mybatis环境搭建

1.准备:

创建Maven工程导入jar坐标和Mybatis的坐标
在这里插入图片描述
在main中创建实体类和dao的接口(例如User和com.itheima.dao.IUserDao)
在这里插入图片描述
实体类和dao的接口

在resource资源目录下创建Mybatis整体的主配置文件SqlMapConifg.xml以及映射的配置文件

mybatis的主配置文件
在这里插入图片描述
创建映射配置文件IUserDao.xml

映射配置文件指的是每个dao独立的配置文件
在这里插入图片描述

环境搭建的注意事项:

1.创建IUserDao.xml和IUserDao.java时名称是为了和我们之前学习javaweb的知识相同一致。

在Mybatis中它把持久层的操作接口名称和映射文件也叫作Mapper(即mapper=dao)所以:IUserDao 和 IUserMapper是一样的

2.在IDEA创建目录的时候,它和包不一样,包在创建时:com.itheima.dao它是三级结构

目录在创建时:com.itheima.dao是一级目录

3.Mybatis的映射配置文件位置必须和 dao接口的包结构相同,也要是com.itheima.dao.

4.映射配置文件(IUserDao.xml)mapper标签和namespace属性的取值必须是dao接口的全限定类名

5.映射配置文件(IUserDao.xml)对数据库的操作配置(select),id 属性必须是dao接口的方法名(findAll)

因此,我们遵从了以上点时,我们就无需再在开发中书写dao的实现类了(只需要写接口)。
在这里插入图片描述
2.代码案例分析

一切环境配置准备就绪后,我们开始编写测试工具类,来实现功能。

编写测试类:com.itheima.test.MybatisTest
在这里插入图片描述
(1)读取主的配置文件(主配置里面包含映射配置)

InputStream in = Resources.getResourceAsStream(“SqlMapConfig.xml”);

2)创建SqlSessionFactory工厂(构建者设计模式):项目给设计者builder,builder替我们项目生成一个工厂。

SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
SqlSessionFactory factory = builder.build(in);

(3)创建SqlSession对象(工厂模式):使用工厂来创建SqlSession对象。

SqlSession session = factory.openSession(); //工厂factory来生产session对象

(4)创建Dao接口的代理对象(代理模式):使用session来创建代理对象

IUserDao userDao = session.getMapper(IUserDao.class);

(5)使用代理对象来执行dao的方法

List users = userDao.findAll(); 最后打印users即可

(6)释放资源:session.close(); in.close();
在这里插入图片描述
注意:不要忘记在映射配置中告知mybatis要封装到哪个实体类中配置的方式:指定实体类的全限定类名 com.itheima.domain.User

四:Mybatis基于注解的编程

(1)可以把IUserDao.xml映射配置移除

(2)在dao接口的方法上使用@select注解,并且知道SQL语句,

在这里插入图片描述
(3)同时需要在主配置文件SqlMapConfig.xml中的mapper配置时,使用class属性指定dao接口的全限定类名。(com.itheima.dao.IUserDao)
在这里插入图片描述
并且我们在实际开发中,都是越简便越好,所以都是采用不写dao实现类的方式。不管使用XML还是注解配置。但是Mybatis它是支持写dao实现类的。

发布了47 篇原创文章 · 获赞 18 · 访问量 4881

猜你喜欢

转载自blog.csdn.net/qq_43605085/article/details/96478686