框架技术
是一个应用程序的半成品;提供可重用的公共结构;按一定规则组织的一组组件
优势
不用再考虑公共问题;专心在业务实现上;结构统一,易于学习、维护;新手也可写出好程序
持久化
持久化是程序数据在瞬时状态和持久状态间转换的过程
ORM(Object Relational Mapping)
编写程序的时候,以面向对象的方式处理数据;保存数据的时候,却以关系型数据库的方式存储;
ORM解决方案包含下面四个部分;在持久化对象上执行基本的增、删、改、查操作;对持久化对象提供一种查询语言或者API;
对象关系映射工具;提供与事务对象交互、执行检查、延迟加载以及其他优化功能
Mybatis
MyBatis前身是iBatis,本是Apache的一个开源的项目;官方网站:http://mybatis.org
ORM框架:实体类和SQL语句之间建立映射关系
特点:
基于SQL语法,简单易学;能了解底层封装过程;SQL语句封装在配置文件中,便于统一管理与维护,降低程序的耦合度;方便程序代码调试
使用MyBatis的开发步骤
下载mybatis-3.2.2.jar包并导入工程;
编写MyBatis核心配置文件(configuration.xml);
创建实体类-POJO;
DAO层-SQL映射文件(mapper.xml);
创建测试类;
读取核心配置文件mybatis-config.xml;
创建SqlSessionFactory对象,读取配置文件;
创建SqlSession对象;
调用mapper文件进行数据操作
MyBatis框架优缺点
优点:
与JDBC相比,减少了50%以上的代码量
最简单的持久化框架,小巧并简单易学
SQL代码从程序代码中彻底分离,可重用
提供XML标签,支持编写动态SQL
提供映射标签,支持对象与数据库的ORM字段映射
缺点:
SQL语句编写工作量大,对开发人员有一定要求
数据库移植性差
MyBatis基本要素
MyBatis的核心对象
SqlSessionFactoryBuilder
SqlSessionFactory
SqlSession
mybatis-config.xml 系统核心配置文件
mapper.xml SQL映射文件
MybatisUtil工具类
public class MybatisUtil {
private static SqlSessionFactory sqlSessionFactory;
static {
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
Reader reader = null;
try {
reader = Resources.getResourceAsReader("mybatis-config.xml");
sqlSessionFactory = builder.build(reader);
} catch (IOException e) {
e.printStackTrace();
} finally {
if (reader != null) {
try {
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
public static SqlSession openSession() {
SqlSession session = sqlSessionFactory.openSession(false);
return session;
}
public static void closeSqlSession(SqlSession session) {
session.close();
}
}
测试类
public class MyBatisUtilTest {
private SqlSession session;
@Before
public void setUp() throws Exception {
session = MybatisUtil.openSession();
}
@Test
public void testGetAllUser() {
List<Object> selectList = session.selectList("cn.bdqn.mapper.SmbmsUserMapper.getAllUser");
for (Object object : selectList) {
System.out.println(object);
}
MybatisUtil.closeSqlSession(session);
}
@Test
public void testGetAllUser2() {
SmbmsUserMapper mapper = session.getMapper(SmbmsUserMapper.class);
List<SmbmsUser> allUser = mapper.getAllUser();
for (SmbmsUser smbmsUser : allUser) {
System.out.println(smbmsUser);
}
MybatisUtil.closeSqlSession(session);
}
}
mybatis-config.xml 系统核心配置文件
configuration 配置
properties 可以配置在Java 属性配置文件中
settings 修改 MyBatis 在运行时的行为方式
typeAliases 为 Java 类型命名一个别名(简称)
typeHandlers 类型处理器
objectFactory 对象工厂
plugins 插件
environments 环境
environment 环境变量
transactionManager 事务管理器
dataSource 数据源
mappers 映射器