dongxurr 2020-01-19
MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。MyBatis的前身就是iBatis,iBatis本是apache的一个开源项目,2010年这个项目由apahce sofeware foundation 迁移到了google code,并且改名,所以市面上也会有人称为iBatis.
1.基于SQL语句编程,相当灵活,不会对应用程序或者数据库的现有设计造成任何影响,SQL写在XML里,解除sql与程序代码的耦合,便于统一管理;提供XML标签,支持编写动态SQL语句,并可重用。
2.与JDBC相比,减少了50%以上的代码量,消除了JDBC大量冗余的代码,不需要手动开关连接;
3.很好的与各种数据库兼容(因为MyBatis使用JDBC来连接数据库,所以只要JDBC支持的数据库MyBatis都支持)。
4.能够与Spring很好的集成;
5.提供映射标签,支持对象与数据库的ORM字段关系映射;提供对象关系映射标签,支持对象关系组件维护。
1.SQL语句的编写工作量较大,尤其当字段多、关联表多时,对开发人员编写SQL语句的功底有一定要求。
2.SQL语句依赖于数据库,导致数据库移植性差,不能随意更换数据库。
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 推荐作用域