定义
框架:
是一种经过检验的、具有特定功能的半成品软件。
框架针对特定的功能或架构需要,对代码进行了封装进行了封装并提供相应的API,不同的框架能够提供不同的功能。
使用框架技术构建项目的优势:
- 无需考虑开发中的公共问题、基础问题,框架已经做好实习现。
- 可以专注于项目的业务逻辑设计,提高开发效率,并且有助于提高核心业务的开发质量。
- 项目架构统一,便于沟通协作、便于修改维护。
- 框架汇集软件分析、设计、实现等多方面的优秀经验,可以帮助开发者快速构建结构优美、运行稳定且性能优良的高质量应用。
MyBatis框架:
是一个基于ORM(Object Relational Mapping,对象/关系映射)的优秀的持久化框架。但是,MyBatis框架不是一个完整的ORM实现,而是一种半自动化的ORM实现。MyBatis框架的主要特点是SQL映射器机制。
什么是持久化?什么是ORM?
持久化就是将内存中有用的数据以某种技术保存起来,并且可以再次取出来的应用。就是,可以将内存中的数据模型转换为存储模型,以及将存储模型转换为内存中的数据模型。
ORM是一种关系型数据库和面向对象编程语言之间进行数据转换的编程技术。
MyBatis框架内的优缺点:
优点:
- 与直接使用JDBC相比,代码量减少50%以上。
- 简单小巧且易学易用,能够快速上手应用。
- 基于原生SQL,使用灵活,不会对数据库的现有设计产生任何影响。
- SQL语句通过XML文件进行维护,与程序代码解耦,便于统一管理和优化,并可方便地重用。
- 支持编写动态SQL语句,与应用代码解耦。
- 支持Java对象属性与查询结果集字段的映射(ORM)。
缺点:
- SQL语句的编写工作量较大,且对开发人员的SQL使用经验有一定要求。
- 原生SQL语句依赖特定的数据库产品,导致数据库移植性差,不能方便的更换数据库。
MyBatis框架专注于SQL语句本身,是一个足够灵活的持久化层解决方案。
MyBatis框架的基本要素
MyBatis框架的核心对象:
MyBatis框架的核心对象包括核心接口和类。
- SqlSessionFactory实例是MyBatis框架应用程序的核心。
- SqlSessionFactory实例是SqlSessionFactoryBuilder对象根据XML配置文件或Configuration类的实例进行构建。
- 通过SqlSessionFactory实例可获取SqlSession实例。SqlSession实力包含执行SQL操作的方法,可以通过该实例执行已映射的SQL语句。
SqlSessionFactoryBuilder:
核心build()重载方法有以下三种
- build(Reader reader,String environment,Properties properties)。
- build(InputStream inputSteram,String environment,Properties properties)。
- build(Configuration config)。
SqlSessionFactory:
SqlSessionFactory提供了openSession()方法来获取SqlSession实例。
openSession()方法中boolean类型的参数用于控制是否开启自动提交。如下代码所示,true表示开启自动提交,关闭事务控制;false表示关闭自动提交,开启事务控制。
openSession(boolean autoCommit)
若不传入参数,如下代码所示,则默认为ture。
openSession()
SqlSession:
SqlSession表示一次数据库会话。SqlSession实例是非线程安全的,不能被共享,没个线程都应该使用自己独立的SqlSession实例,SqlSession实例的生命周期不应是永久的。因此,SqlSession实例最佳的作用域是一次HTTP请求,或方法作用域内。
SqlSession执行绑定的SQL语句有两种方式:基于字符串常量、基于Mapper接口。
MyBatis框架的核心配置文件
核心配置文件中设置的是MyBatis框架的全局信息,包括数据库连接及事务信息、MyBatis框架运行的所需的各种特性,以及一些影响MyBatis框架运行时行为的属性。
- properties元素:描述的是一些外部的、可替代的属性。
- settings元素:settings元素中设置的选项可以影响MyBatis框架的运行时行为。
- typeAliases元素:可以为Java类型配置一个简短的别名。
<typeAliases alias="xxx" type="xxx.xxx.Xxx"/>
<package name="xxx.xxx"/>
- environments元素:可以针对开发、测试、生产部署等不同需求,为MyBatis框架分别配置多套运行时环境,可以在运行项目时灵活选择,从而减少环境切换时的修改工作量。
- mappers元素:通知MyBatis框架查找定义了SQL语句的SQL映射文件的路径。
SQL映射文件
SQL映射文件的几个元素如下:
- mapper:SQL映射文件的根元素。只有一个属性namespace,用于区分不同的mapper,必须全局唯一。
- cache:为给定命名空间中的缓存配置。
- cache-ref:引用其他命名空间中的缓存配置。
- resultMap:用来描述查询结果集中的字段和Java实体类属性的对应关系。
- sql:定义可重用的SQL语句块,可以在其他语句映射中引用,提高编写和维护SQL语句的效率。
- insert:映射insert语句。
- update:映射update语句。
- delete:映射delete语句
- select:映射select语句。