Mybatis入门
一.什么是框架?
- 框架是一个提供了可重用的公共结构的半成品。
二.当前的主流框架
- Struts2框架
- Hibernate框架
- Spring框架
- Spring MVC框架
- Mybatis框架
三.搭建MyBatis环境
-
什么是数据持久化
数据持久化是将内存中的数据模型转成存储模型,以及将存储模型转换为内存中的数据模型的统称。
2.MyBatis框架及ORM -
1.MyBatis框架简介
-
MyBatis是一个开源的数据持久层框架。它内部封装通过JDBC访问数据库的操作,支持普通的SQL查询、存储过程和高级映射.
-
2.什么是ORM
-
对象/关系映射 是一种数据持久化的技术。它在对象模型和关系型数据库之间建立起对应关系,并且提供一种机制,通过JavaBen对象去操作数据库表中的数据。
-
3.MyBatis是ORM解决方案
-
基于 ORM,MyBatis在对象模型和关系数据库的表之间建立了一座桥梁。通过MyBatis,可以建立SQL关系映射,便捷地实现数据存储、查询、更改和删除等操作。
配置核心文件 configuration.xml
引入 database.properties 文件
配置 mybatis的log 实现为Log4J
配置 mybatis多套运行环境
配置事务管理,采用JDBC的事务管理
POOLED:Mybatis自带的数据源,JNDI基于tomcat的数据源
将mapper文件加入配置文件中
Configuration:配置文件的根元素节点。
Properties:通过resource属性从外部指定properties属性文件( database.properties),该属性文件描述数据库连接的相关配置
settings:设置MyBatis运行中的一些行为,比如此处设置MyBatis的log日志实现为LOG4J,即使用log4j实现日志功能。
environment:表示配置MyBatis的多套运行环境,将SQL映射到多个不同的数据库上,该元素节点下可以配置多个environment 子元素节点,但必须指定其中一个为默认运行环境。(通过default指定。)
envirinment:配置MyBatis的一套运行环境,需指定运行环境ID、事务管理、数据源配置相关信息。
mappers:MyBatis去哪里找到SQL 映射文件,整个项目可以有一个或多个SQL映射文件。
mapper:mappers的子元素节点,具体指定SQL映射文件的路径,其中resource属性的值表述了SQL映射文件的路径。
4.创建持久化类和SQL映射文件
持久化类是指其实例需要被MyBatis持久化到数据库中的类。在应用的设计中,持久化类通常对应需求中的业务实体。MyBatis一般采用POJO编程模型来实现持久化类,与POJO类配合完成持久化工作是MyBatis最常见的工作模式。
四:MyBatis框架的优缺点及其适合场合
MyBatis框架的优点: -
与JDBC相比,减少了50%以上的代码量
-
MyBatis是最简单的持久化框架,小桥并且简单易学
-
MyBatis相当灵活,不会对应用程序或者数据库的现有设计强加任何影响,SQL写在XML里,从程序代码中彻底分离,既降低耦合度,又便于统一管理和优化,还可重用。
-
提供XML标签,支持编写动态SQL语句
-
提供映射标签,支持对象与数据库的ORM字段关系映射
-
2.,MyBatis框架的缺点
-
SQL语句的编写工作量较大,对于开发人员编写SQL语句的功底有一定要求
-
SQL语句依赖于数据库,导致数据库移植性差,不能随意更换数据库
-
3.MyBatis框架适合场合
-
MyBatis专注于SQL本身,是一个足够灵活的DAO层解决方案。对性能要求很高的项目,或者需求变化较多的项目,如互联网项目,MyBatis将是不错的选择。
-
SqlSessionFactory的构造者-----SqlSessionFactoryBuilder
一. sqlSessionFactoryBuilder的作用
SqlSessionFactoryBuilder负责构建SqlSessionFactory,并且提供多个build()方法的重载。
(1).SqlSessionFactoryBuilder的生命周期和作用域
SqlSessionFactoryBuilder最大的特点是用过即丢。一旦创建了SqlSessionFactory对象,这个类就不需要存在了。
SqlSession的工厂----SqlSessionFactory
1.SqlSessionFactory的作用
SqlSessionFactory就是创建SqlSession实例的工厂。所有的MyBatis应用都是以SqlSessionFactory实例为中心,SqlSessionFactory实例可以通过SqlSessionFactoryBuilder对象来获得。有了他可以通过SqlSessionFactory提供的openSession()方法来获取SqlSession实例。
2.SqlSessionFactory的生命周期和作用域
SqlSessionFactory对象一旦创建,就会在整个应用运行过程中始终存在。没有理由去销毁或在创建它。并且在应用运行中也不建议多次创建SqlSessionFactory。
使用SqlSession进行数据持久化操作
1.SqlSession的作用
SqlSession是用于执行持久化操作的对象,类似于JDBC中Connection.它提供了面向数据库执行SQL 命令所需的所有方法,可以通过SqlSession实例直接运行已映射的SQL语句。
2.SqlSession的生命周期和作用域
SqlSession对应着一次数据库会话,由于数据会话不是永久的,因此SqlSession的生命周期也不是永久的。想反,在每次访问数据库时都需要创建它。创建SqlSession的方式只有一个,那就是使用SqlSessionFactory对象的OpenSession()方法。
关闭SqlSession是非常重要的。必须确保SqlSession在finally语句块中正常关闭。
3.SqlSession的两种使用方式
(1).通过SqlSession实例来直接执行已映射的SQL语句。例如通过调用selectList方法执行用户查询
(2)基于mapper接口方式操作数据。
创建绑定映射语句的接口,并提供接口方法