1 MyBatis历史
1)MyBatis是Apache的一个开源项目iBatis, 2010年6月这个项目由Apache Software Foundation 迁移到了Google Code,随着开发团队转投Google Code旗下, iBatis3.x正式更名为MyBatis ,代码于2013年11月迁移到Github。
2)iBatis一词来源于“internet”和“abatis”的组合,是一个基于Java的持久层框架。 iBatis 提供的持久层框架包括SQL Maps和Data Access Objects(DAO)。
2 MyBatis简介
1)MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架
2)MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集
3)MyBatis可以使用简单的XML或注解用于配置和原始映射,将接口和Java的POJO(Plain Ordinary Java Object,普通的Java对象)映射成数据库中的记录
- DBUtils : BookDao --> BookDaoImpl
- MyBatis : BookDao --> BookDao.xml(映射文件)
- 映射文件充当的是之前实现类的角色
- 实体类的属性和表格的字段,其实是映射关系
- 映射: 一一对应的关系
4)Mybatis 是一个 半自动的ORM(Object Relation Mapping)框架
- 因为支持定制化sql,所以是半自动
- 全自动持久层框架(Hibernate),开发者可以不写sql语句,sql语句自动生成
- 消耗性能
- 处理复杂业务不灵活
3 如何下载MyBatis(Maven配置后自动下载,了解即可)
4 为什么要使用MyBatis – 现有持久化技术的对比
1)JDBC
①SQL夹在Java代码块里,耦合度高导致硬编码内伤
②维护不易且实际开发需求中sql有变化,频繁修改的情况多见
2)Hibernate笨重和JPA
①长难复杂SQL,对于Hibernate而言处理也不容易
②内部自动生产的SQL,不容易做特殊优化
③基于全映射的全自动框架,大量字段的POJO进行部分映射时比较困难。导致数据库性能下降
3)MyBatis
①对开发人员而言,核心sql还是需要自己优化
②sql和java编码分开,功能边界清晰,一个专注业务、一个专注数据