标签:作用 面向 路径 结果类型 简化 好处 sel 操作 代码调试
MyBatis是一个开源的数据持久层框架。
持久化是程序数据在瞬时状态和持久状态间转换的过程
它的其主要思想是将程序中的大量sql语句剥离出来,配置在配置文件中,实现SQL的灵活配置,它的好处就是将SQL与程序代码分类,可以在不修改程序代码的情况下,直接在配置文件中修改SQL语句。
MyBatis 的前身是iBatis,本是Apache的一个开源项目,2010年这个项目由Apache Software Foundation迁移到Google Code,并改名为MyBatis,2013年迁移到Github。
http://mybatis.org
ORM(Object/Relational Mapping)即对象/关系映射,是一种数据持久化技术。
实体类和SQL语句之间建立映射关系
基于SQL语法,简单易学
能了解底层封装过程
SQL语句封装在配置文件中,便于统一管理与维护,降低程序的耦合度
方便程序代码调试
下载mybatis-3.2.2.jar包并导入工程
编写MyBatis核心配置文件(configuration.xml)
创建实体类-POJO
DAO层-SQL映射文件(mapper.xml)
创建测试类
asm-3.3.1.jar:操作java字节码的类库
cglib-2.2.2.jar:用来动态集成java类或实现接口
commons-logging-1.1.1.jar:通用日志处理
javassist-3.17.1-GA.jar:分析、编辑和创建java字节码的类库
log4j-1.2.17.jar:日志系统
slf4j-api-1.7.5.jar:日志系统的封装,对外提系统统一的API接口
slf4j-log4j12-1.7.5.jar:slf4j对log4j的相应驱动,完成slf4j绑定log4j
优点
与JDBC相比,减少了50%以上的代码量
最简单的持久化框架,小巧并简单易学
SQL代码从程序代码中彻底分离,可重用
提供XML标签,支持编写动态SQL
提供映射标签,支持对象与数据库的ORM字段映射
缺点
SQL语句编写工作量大,对开发人员有一定要求
数据库移植性差
MyBatis专注于SQL本身,是一个足够灵活的DAO层解决方案,适用于性能要求较高或者需求多变的互联网项目
configuration:配置文件的根元素节点
properties:通过resource属性从外部指定properties属性文件,该属性文件描述数据库连接的相关配置(Driver,URL,用户名,密码)在resources目录下
settings:设置MyBatis运行中的一些行为
environments:表示配置MyBatis的多套运行环境,将SQL映射到不同的数据库上,可以配置多个,但是必须指定一个默认运行环境
environment:配置MyBatis的一套运行环境,需指定运行环境ID,事务管理,数据源配置
mappers:找SQL映射文件
mapper:mappers的子元素节点,具体指定sql映射文件的路径
(元素节点有顺序,不按顺序报错)
核心接口和类、
MyBatis核心配置文件(mybatis-config.xml)
SQL映射文件(mapper.xml)
SqlSessionFactoryBuilder的作用:
SqlSessionFactoryBuilder负责构建SqlSessionFactory,并且提供多个build()方法的重载
特点:
用过即丢,最佳范围存在于方法体内,局部变量
SqlSessionFactory是每个MyBatis应用的核心
作用:创建SqlSession实例(用openSession()方法获取)
生命周期:
一直存在,不建议多次创建,最佳作用域(Application)
SqlSession:(sqlSession.selectList()、sqlSession.getMapper(Mapper.class)调用接口方法)
用于执行持久化操作对象,类似于JDBC中的Connection
包含了执行SQL所需的所有方法
对应一次数据库会话,会话结束必须关闭
线程级别,不能共享
(在SqlSession里可以执行多次SQL语句,但一旦关闭了SqlSession就需要重新创建)
id:命名空间中唯一的标识符
parameterType:查询语句传入参数的类型的完全限定名获别名,支持基本、复杂数据类型
resultType:查询语句返回结果类型的完全限定名获别名
int、String、Date等
只能传入一个,通过#{参数名}即可获取传入的值
复杂数据类型
Java实体类、Map等
通过#{属性名}或者#{map的keyName}即可获取传入值
基本数据类型
复杂数据类型
应用场景:
数据库字段信息与对象属性不一致
复杂的联合查询,自由控制映射结果
(二者不能同时存在,本质上都是Map数据结构)
id:resultMap的唯一标识
type:表示该resultMap的映射结果类型
association:一对多
association的子元素:
collection:(集合)
ofType:完整java类名或者别名,即集合所包含的类型
property:映射数据库的实体对象的属性
动态SQL元素:
trim属性:
优:
与JDBC相比,减少了50%以上代码量
小巧简单,易学
相当灵活,不会对应用程序或者数据库的现有设计强加任何影响,SQL写在XML中。从程序中彻底分离,降低耦合度,便于统一管理和优化,并可重用
提供XML标签,支持编写动态SQL语句
提供映射标签,支持对象与数据库的ORM字段关系映射
缺:
工作量大,对开发人员编写SQL语句功底有要求
依赖数据库,导致数据库移植性差,不能随便更换
适用场合:
需求变化较多的项目
标签:作用 面向 路径 结果类型 简化 好处 sel 操作 代码调试
原文地址:https://www.cnblogs.com/caotian/p/9197996.html