Mybatis
1. 理解数据持久化概念和ORM原理
2. 理解MyBatis的概念以及优点特性
3. 搭建MyBatis环境
4. 了解MyBatis与JDBC的区别与联系
5. 理解核心类的作用域和生命周期
6. 掌握全局配置文件结构内容
一.Mybatis的搭建(半自动化的ORM实现,Dao层,动态Sql,小巧灵活,简单易学)
1.持久化(程序数据在瞬时装态和持久状态间转换的过程)
持久化,就是内存数据和硬盘数据状态的转换
2. ORM思想
简化数据库操作
Dao层
Object Relation Mapping 对象关系映射(1.编写程序时以面向对象的方式处理数据2.保存数据时以关系型数据库方式存储)
ORM解决方案:
A. 在持久化对象上执行基本的增、删、改、查操作
B. 对持久化对象提供一种查询语言或者API
C. 对象关系映射
D. 提供与事务对象交互、执行检查、延迟加载以及其他优化功能
MyBatis特点:
a.基于Sql语法,简单易学
b.了解底层封装过程
c.sql语句封装在配置文件中,便于统一管理和维护,降低程序的耦合度
d.方便程序代码调试
3.搭建MyBatis环境步骤
1. 下载mybatis-3.2.2.jar包并导入工程
2. 编写MyBatis核心配置文件(configuration.xml)
3. 创建实体类
4. DAO层-SQL映射文件(mapper.xml)
5. 创建测试类
4.MyBatis的优缺点
优点:
a. 与JDBC相比,减少了50%以上的代码量
b. 最简单的持久化框架,小巧并简单易学
c. SQL代码从程序代码中彻底分离,可重用
d. 供XML标签,支持编写动态SQL
e. 提供映射标签,支持对象与数据库的ORM字段映射
缺点:
a. SQL语句编写工作量大,对开发人员有一定要求
b. 数据库移植性差
5.MyBatis的核心对象:
SqlSessiongFactoryBuid,SqlSessionFactory,SqlSession
注:SqlSessiongFactoryBuid:用过即丢,其生命周期只存在于方法体内,可重用其来创建多个 SqlSessionFactory 实例,负责构建SqlSessionFactory,并提供多个build方法的重载
SqlSessionFactory:SqlSessionFactory是每个MyBatis应用的核心
作用域:Application,生命周期与应用的生命周期相同,单例
存在于整个应用运行时,并且同时只存在一个对象实例
SqlSession:包含了执行SQL所需的所有方法。对应一次数据库会话,会话结束必须关闭,线程级别,不能共享。基于Mapper接口方式操作数据、
二.MyBatis入门案例
3.1导入jar包
依赖
<!--MySQL配置-->
<dependency>
<groupId>MySQL</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.0.8</version>
</dependency>
<!--MyBatis核心jar包-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.2.2</version>
</dependency>
3.2书写大配置
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!--实现小配置中type的简写(可以省略包,直接写实体类名) 如果没有需要在全路径中加全路径 -->
<!--<typeAliases>
<package name="cn.entity"></package>
</typeAliases>-->
<!-- <typeAliases>
<package alias="User" type="cn.smbms.pojo.User"/></package>
</typeAliases>-->
<properties resource="database.properties"></properties>
<settings>
<setting name="cacheEnabled" value="false"/>
</settings>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"></transactionManager>
<dataSource type="POOLED">
<property name="driver" value="${database.driver}" />
<property name="url" value="${database.url}" />
<property name="username" value="${database.username}" />
<property name="password" value="${database.password}"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="Departmentdao.xml"></mapper><!--连接小配置 如果实现dao的小配置都在resource下面可以直接写类名 不在需要写全路劲-->
<!-- <package name="bdqn.dao"></package>-->