第一章 初始MyBatis
第一章 初始MyBatis
SpringMVC+Spring+MyBatis框架
1.简历制作使用模板的好处:
不用考虑布局,排版等。提高效率
可专心在简历内容上
结构统一,便于人事阅读
新手也可以做出专业的简历
- 框架技术
是一个应用程序的半成品
提供可重用的公共结构
按一定规则组织的一组组件
优势:
不用再考虑公共问题
专心在业务实现上
结构统一,易于学习、维护
新手也可写出好程序
- 主流框架
Struts2 耦合度高 封装Severlet
MVC设计模式的实现
拦截器
可变和可重用的标签
HIBERNATE
ORM,简化数据库操作
DAO层
Spring
依赖注入容器 / AOP实现
声明式事务
简化Java EE应用
黏合剂,将大家组装到一起
Spring MVC
结构最清晰的MVC Model2实现
高度可配置,支持多种视图技术
定制化开发
MyBatis
半自动化的ORM实现
DAO层
动态SQL
小巧灵活、简单易学
持久化是程序数据在瞬时状态和持久状态间转换的过程
4.ORM:(Object Relational Mapping)
编写程序的时候,以面向对象的方式处理数据
保存数据的时候,却以关系型数据库的方式存储
ORM解决方案包含下面四个部分
在持久化对象上执行基本的增、删、改、查操作
对持久化对象提供一种查询语言或者API
对象关系映射工具
提供与事务对象交互、执行检查、延迟加载以及其他优化功能
5.MyBatis的核心对象及其作用
SqlSessionFactoryBuilder 方法体内
用过即丢,其生命周期只存在于方法体内
可重用其来创建多个 SqlSessionFactory 实例
负责构建SqlSessionFactory,并提供多个build方法的重载
SqlSessionFactory 全局
SqlSessionFactory是每个MyBatis应用的核心
作用:创建SqlSession实例
作用域:Application
生命周期与应用的生命周期相同
单例
存在于整个应用运行时,并且同时只存在一个对象实例
SqlSession request一个请求区间
包含了执行SQL所需的所有方法
对应一次数据库会话,会话结束必须关闭
线程级别,不能共享
SqlSession的两种使用方式
通过SqlSession实例直接运行映射的SQL语句
基于Mapper接口方式操作数据
mybatis-config.xml 系统核心配置文件
mapper.xml SQL映射文件
6.使用MyBatis的开发步骤
>下载mybatis-3.2.2.jar包并导入工程
>编写MyBatis核心配置文件(configuration.xml)
>创建实体类-POJO
>DAO层-SQL映射文件(mapper.xml)
>创建测试类
读取核心配置文件mybatis-config.xml
创建SqlSessionFactory对象,读取配置文件
创建SqlSession对象
调用mapper文件进行数据操作
7.MyBatis框架优缺点
优点
与JDBC相比,减少了50%以上的代码量
最简单的持久化框架,小巧并简单易学
SQL代码从程序代码中彻底分离,可重用
提供XML标签,支持编写动态SQL
提供映射标签,支持对象与数据库的ORM字段映射
缺点
SQL语句编写工作量大,对开发人员有一定要求
数据库移植性差
配置properties元素的两种方式
通过外部指定的方式(database.properties),实现动态配置
直接配置为xml,实现动态配置
resource属性值的优先级高于property子节点配置的值
environments元素
表示配置MyBatis的多套运行环境,将SQL映射到多个不同的数据库上
子元素节点:environment,但是必须指定其中一个为默认运行环境(通过default指定)
mappers元素
映射器,定义SQL映射语句
须在配置中引用mapper映射文件
方式一:使用类资源路径获取资源
方式二:使用URL获取资源
8.Hibernate与MyBatis的异同
开发方面
hibernate开发中,sql语句已经被封装,直接可以使用,加快系统开发;
Mybatis 属于半自动化,sql需要手工完成,稍微繁琐;
sql优化方面
Hibernate 自动生成sql,有些语句较为繁琐,会多消耗一些性能;
Mybatis 手动编写sql,可以避免不需要的查询,提高系统性能;
对象管理比对
Hibernate 是完整的对象-关系映射的框架,开发工程中,无需过多关注底层实现,只要去管理对象即可;
Mybatis 需要自行管理 映射关系;
Hibernate优势
Hibernate的DAO层开发比MyBatis简单,Mybatis需要维护SQL和结果映射。
Hibernate对对象的维护和缓存要比MyBatis好,对增删改查的对象的维护要方便。
Hibernate数据库移植性很好,MyBatis的数据库移植性不好,不同的数据库需要写不同SQL。
Hibernate有更好的二级缓存机制,可以使用第三方缓存。MyBatis本身提供的缓存机制不佳。
Mybatis优势
MyBatis可以进行更为细致的SQL优化,可以减少查询字段。
MyBatis容易掌握,而Hibernate门槛较高。
Mybatis:小巧、方便、高效、简单、直接、半自动化
Hibernate:强大、方便、高效、复杂、间接、全自动化