初识Mybatis(Mybatis入门,基础搭建环境)
Mybatis
本文学习思路:

一、Mybatis简介
什么是mybatis
MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation
迁移到了google code,并且改名为MyBatis 。2013年11月迁移到Github。
iBATIS一词来源于“internet”和“abatis”的组合,是一个基于Java的持久层框架。iBATIS提供的持久层框架包括SQLMaps和Data Access Objects(DAOs)
- Mybatis前身是IBatis,本是Apache的一个开源的项目
- 官方网站
- http://mybatis.org
- ORM框架
- 实体类和SQL语句之间建立映射关系
- 特点
- 基于SQL语法,简单易学
- 能了解底层封装过程
- SQL语句封装在配置文件中,便于统一管理与维护,降低程序的耦合度
- 方便代码调试
mybatis能干什么

Mybatis的优缺点
- 优点
- 与JDBC相比,减少了50%以上的代码量
- 最简单的持久化框架,小巧并简单易学
- SQL代码从程序代码中彻底分离,可重用
- 提供XML标签,支持编写动态SQL
- 提供映射标签,支持对象与数据库的ORM字段映射
- 缺点
- SQL语句编写工作量大,对工作人员有一定的要求
- 数据库移植性差

二、为什么需要框架技术
举个例子-写简历

框架技术
- 框架技术
- 是一个应用程序的半成品
- 提供可重用的公共结构
- 按一定规则组织的一组部件
- 分析优势
- 不用再考虑公共问题
- 专心在业务实现上
- 结构统一,易于学习、维护
- 新手也可以写出好程序
拥有框架技术,我们只有要“填写我们需要填写的部分”,就可以事半功倍!
主流框架的介绍



持久化和ORM
持久化是程序数据在瞬时状态和持久状态间转换的过程
namespace=cn.ebuy.dao.SystemUserMapper与接口进行匹配
如下图:

- ORM(Object Relational Mapping)
- 编写程序的时候,以面向对象的方式处理数据
- 保存数据的时候,却以关系型数据库的方式存储
- ORM在解决方案包含下面四个部分
- 在持久化对象上执行基本的增、删、改、查操作
- 在持久化对象提供一种查询语言或者API
- 对象关系映射工具
- 提供与事务对象交互,执行检查、延迟加载以及其他优化功能
三、搭建Mybatis开发环境
使用Mybatis的开发步骤
- 1.下载mybatis的相关jar包并导入功能(pom文件导入即可)
- 2.编写Mybatis核心配置文件(mybatis-config.xml文件)
- 3.创建实体类-pojo
- DAO层-SQL映射文件(mapper.xml)
- 5.创建测试
- 读取核心配置文件mybatis-config.xml文件
- 创建SqlSessionFactory会话工厂对象,读取配置文件
- 创建SqlSession会话对象
- 调用mapper文件进行数据操作
四、Mybatis搭建中的核心接口和类结构
大致过程(调用方法实现如下):

SqlSessionFactoryBuilder
- 用过即丢,其生命周期只存在方法体内(没有close方法)
- 可重用其来创建多个SqlSessionFactory实例
- 负责构建SqlSessionFactory,并提供多个build方法的重载

SqlSessionFactory
- SqlSessionFactory是每个Mybatis应用的核心
- 作用:创建SqlSession实例

- 作用域:Application
- 生命周期与应用的生命周期相同
- 单例:
- 存在与整个应用运行时,并且同时只存在一个对象实例
SqlSession
- 包含了执行SQL所需的所有方法
- 对应一次数据库会话,会话结束必须关闭
- 线程级别,不能共享


- SqlSession的获取方式

- SqlSession的两种使用方式
- 通过SqlSession实例直接运行映射的SQL语句
- 基于Mapper接口方式进行操作数据
方式一:

方式二:

核心配置文件详解
database.properties
示例:
driver=oracle.jdbc.driver.OracleDriver
url=jdbc:oracle:thin:@localhost:1521:orcl1
username=用户名
password=密码
mybatis-config.xml文件
示例:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!--加载数据库连接信息-->
<properties resource="database.properties"><!--
<property name="driver" value="oracle.jdbc.driver.OracleDriver"/>
<property name="url" value="jdbc:oracle:thin:@localhost:1521:orcl1"/>
<property name="username" value="c##ebuy"/>
<property name="password" value="www123"/>-->
</properties>
<!--配置日志输出为log4j-->
<settings>
<setting name="logImpl" value="log4j"/>
</settings>
<!--<typeAliases>
<typeAlias type="cn.ebuy.pojo.SystemRole" alias="role"/>
</typeAliases>-->
<environments default="oracle">
<environment id="oracle">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</dataSource>
</environment>
</environments>
<mappers>
<!--<mapper resource="cn/ebuy/dao/SystemUserMapper.xml"/>
<mapper resource="cn/ebuy/dao/SystemRoleMapper.xml"/>-->
<package name="cn.ebuy.dao"/>
</mappers>
</configuration>

配置properties文件的两种方式
- 通过外部指定的方式(database.properties),实现动态配置
配置properties的resource属性(推荐)

- 直接配置为xml,实现动态配置

两种方式的优先级
- 若是两种方式同时都用了,那么那种方式优先呢?
- 配置properties的resource指定
- 配置properties的name和value
结论:
resource属性的优先级高于properties子节点配置的值
settings元素标签
settings标签中可以配置多个setting标签

typeAliases元素标签
- 类型别名
- 仅仅只关联XML配置,简写冗长的Java类名(但是我一般是写完整类名,方便ctrl进去实体类)

environments元素标签
- environments元素
- 表示配置Mybatis的多套运行环境,将SQL映射到多个不同的数据库上
- 子元素节点:environment,但是必须指定其中一个为默认运行环境(通过default指定)
注意:

大致图解如下:

- 事务管理器

-
dataSource
- dataSource元素使用基本的JDBC数据源接口来配置JDBC连接对象的资源
- 有三种内建的数据源类型
-
语法

- 示例:

POOLED 采用传统的javax.sql.DataSource规范中的连接池,mybatis中有针对规范的实现
UNPOOLED 采用传统的获取连接的方式,虽然也实现Javax.sql.DataSource接口,但是并没有使用池的思想。
JNDI 采用服务器提供的JNDI技术实现,来获取DataSource对象,不同的服务器所能拿到DataSource是不一样。
————————————————
版权声明:本文为CSDN博主「原野的稻草人」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/QGhurt/article/details/106431398
mappers元素标签
- 映射器,定义SQL映射语句
- 必须在配置中引用mapper映射文件
- 方式一:使用类资源路径获取资源(常用)

也可以通过扫描包进行映射,避免了写多个xml文件繁琐!
如下:
<mappers>
<package name="cn.ebuy.dao"/>
</mappers>
- 方式二:使用URL获取资源(没用过):


浙公网安备 33010602011771号