初识MyBatis

MyBatis是一个框架,前身是iBatis,本是Apache的一个开源的项目

那么什么是框架技术?
框架技术:
是一个应用程序的半成品
提供可重用的公共结构
按一定规则组织的一组组件

有哪些优势呢?
分析优势:
不用再考虑公共问题
专心在业务实现上
结构统一,易于学习、维护
新手也可写出好程序

MyBatis有什么优点呢?一个是可以半自动化的ORM实现,DAO层以及动态SQL并且其小巧灵活、简单易学,与JDBC相比,减少了50%以上的代码量,最简单的持久化框架,SQL代码从程序代码中彻底分离,可重用,提供XML标签,支持编写动态SQL,提供映射标签,支持对象与数据库的ORM字段映射
但是它也有缺点,SQL语句编写工作量大,对开发人员有一定要求,数据库移植性差

其中ORM 全称:(Object Relational Mapping)
其编写程序的时候,以面向对象的方式处理数据
保存数据的时候,却以关系型数据库的方式存储
ORM解决方案包含下面四个部分
1.在持久化对象上执行基本的增、删、改、查操作
2.对持久化对象提供一种查询语言或者API
3.对象关系映射工具
4.提供与事务对象交互、执行检查、延迟加载以及其他优化功能

ORM框架
实体类和SQL语句之间建立映射关系
特点
基于SQL语法,简单易学
能了解底层封装过程
SQL语句封装在配置文件中,便于统一管理与维护,降低程序的耦合度
方便程序代码调试

使用MyBatis的开发步骤
1.下载mybatis-3.2.2.jar包并导入工程
2.编写MyBatis核心配置文件(sqlMapConfig.xml)
3创建实体类-POJO
4.DAO层-SQL映射文件(mapper.xml)
5.创建测试类:
(1)读取核心配置文件mybatis-config.xml
(2)创建SqlSessionFactory对象,读取配置文件
(3)创建SqlSession对象
(4)调用mapper文件进行数据操作

mybatis核心对象
1.SqlSessionFactoryBuilder
用过即丢,其生命周期只存在于方法体内
可重用其来创建多个 SqlSessionFactory 实例
负责构建SqlSessionFactory,并提供多个build方法的重载

2.SqlSessionFactory
SqlSessionFactory是每个MyBatis应用的核心
作用:创建SqlSession实例

3.SqlSession
包含了执行SQL所需的所有方法
对应一次数据库会话,会话结束必须关闭
线程级别,不能共享

非集成环境下的最佳实践:
SqlSessionFactoryBuilder
用过即丢,推荐作用域范围:方法体内
SqlSessionFactory
最佳作用域范围:应用的全局作用域
生命周期与应用的生命周期相同
SqlSession
线程级
一个request请求期间

mybatis-config.xml 系统核心配置文件
configuration 配置
properties 可以配置在Java 属性配置文件中
settings 修改 MyBatis 在运行时的行为方式
typeAliases 为 Java 类型命名一个别名(简称)
typeHandlers 类型处理器
objectFactory 对象工厂
plugins 插件
environments 环境
environment 环境变量
transactionManager 事务管理器
dataSource 数据源
mappers 映射器

MyBatis 真正的强大在于映射语句,专注于SQL,功能强大,SQL映射的配置却是相当简单
SQL映射文件的几个顶级元素(按照定义的顺序)
mapper - namespace
cache - 配置给定命名空间的缓存
cache-ref – 从其他命名空间引用缓存配置
resultMap –用来描述数据库结果集和对象的对应关系
sql – 可以重用的SQL块,也可以被其他语句引用
insert – 映射插入语句
update – 映射更新语句
delete – 映射删除语句
select – 映射查询语句

其中mapper
namespace:命名空间
namespace和子元素的id联合保证唯一,区别不同的mapper
绑定DAO接口
namespace的命名必须跟某个接口同名
接口中的方法与映射文件中SQL语句id一一对应

select是MyBatis中最常用的元素之一
select语句有很多属性可以详细配置每一条语句
id
命名空间中唯一的标识符
接口中的方法与映射文件中的SQL语句id一一对应
parameterType
基础数据类型
int、String、Date等
只能传入一个,通过#{参数名}即可获取传入的值
复杂数据类型
Java实体类、Map等
通过#{属性名}或者#{map的keyName}即可获取传入值
传入SQL语句的参数类型
resultType
直接表示返回类型
基本数据类型
复杂数据类型
SQL语句返回值类型的完整类名或别名
resultMap :对外部resultMap的引用
应用场景:
数据库字段信息与对象属性不一致
复杂的联合查询,自由控制映射结果
resultType和resultMap 不能同时存在,本质上都是Map数据结构

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值