Mybatis入门
MyBatis是什么
MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。MyBatis的前身就是iBatis,iBatis本是apache的一个开源项目,2010年这个项目由apahce sofeware foundation 迁移到了google code,并且改名,所以市面上也会有人称为iBatis.
特点介绍
- 简单易学:本身就很小且简单。没有任何第三方依赖,最简单安装只要两个jar文件+配置几个sql映射文件易于学习,易于使用,通过文档和源代码,可以比较完全的掌握它的设计思路和实现。
- 灵活:mybatis不会对应用程序或者数据库的现有设计强加任何影响。 sql写在xml里,便于统一管理和优化。通过sql基本上可以实现我们不使用数据访问框架可以实现的所有功能,或许更多。
- 解除sql与程序代码的耦合:通过提供DAL层,将业务逻辑和数据访问逻辑分离,使系统的设计更清晰,更易维护,更易单元测试。sql和代码的分离,提高了可维护性。
- 提供映射标签,支持对象与数据库的orm字段关系映射
- 提供对象关系映射标签,支持对象关系组建维护
- 提供xml标签,支持编写动态sql
MyBatis的优点
1.基于SQL语句编程,相当灵活,不会对应用程序或者数据库的现有设计造成任何影响,SQL写在XML里,解除sql与程序代码的耦合,便于统一管理;提供XML标签,支持编写动态SQL语句,并可重用。
2.与JDBC相比,减少了50%以上的代码量,消除了JDBC大量冗余的代码,不需要手动开关连接;
3.很好的与各种数据库兼容(因为MyBatis使用JDBC来连接数据库,所以只要JDBC支持的数据库MyBatis都支持)。
4.能够与Spring很好的集成;
5.提供映射标签,支持对象与数据库的ORM字段关系映射;提供对象关系映射标签,支持对象关系组件维护。
MyBatis的缺点
1.SQL语句的编写工作量较大,尤其当字段多、关联表多时,对开发人员编写SQL语句的功底有一定要求。
2.SQL语句依赖于数据库,导致数据库移植性差,不能随意更换数据库。
MyBatis的模块图
MyBatis的流程图
MyBatis的使用过程
1.配置bean
2.写SqlMapConfig.xml配置文件,配置数据库连接以及对Mapper的管理
3.配置SqlSessionFactory,或使用MyBatis自带的DefaultSqlSessionFactory,这个类实现了SqlSessionFactory,而SqlSessionFactory主要就是一个openSession的作用
4.sql语句的写法两种,Mapper.xml或在Mapper.java中方法上写注解sql
Myabatis的两者sql语句可以混合使用,达到互补的作用,注意id不能相同,不然会报错,id重复问题,没有所谓的优先级之说,两者的区别:
Mapper.xml:
优点:1.跟接口分离、统一管理
2.复杂的语句可以不影响接口的可读性
缺点:1.过多的XML文件
Annotation注解:
优点:1.接口就能看到sql语句,可读性高,不需要再去找xml文件,方便
2.复杂的联合查询不好维护,代码的可读性差
SqlSessionFactory\SqlSession\Mapper 推荐作用域