Mybatis官方文档
Mybatis的作用
MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis可以使用简单的XML用于配置和原始映射,将接口和Java的POJO类映射成数据库中的记录
使开发者只需要关注 SQL 本身,而不需要花费精力去处理例如注册驱动、创建connection、创建statement、手动设置参数、结果集检索等jdbc繁杂的过程代码。
为什么使用Mybatis
1. JDBC
① SQL夹在Java代码块里,耦合度高导致硬编码内伤
② 维护不易且实际开发需求中sql是有变化,频繁修改的情况多见
③ 要自已创建connection、创建statement、手动设置参数、结果集检索等
2. Hibernate
① 长难复杂SQL,对于Hibernate而言处理也不容易
② 内部自动生产的SQL,不容易做特殊优化。
③ 基于全映射的全自动框架,javaBean存在大量字段时无法只映射部分字段。导致数据库性能下降。
3. Mybatis
① 对开发人员而言,核心sql还是需要自己优化
② MyBatis是一个半自动化的持久化层框架。
③ MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架。
入门程序
Mybatis核心Api
1. SqlSessionFactoryBuilder
SqlSessionFactoryBuilder用于创建SqlSessionFacoty,加载配置文件;
SqlSessionFacoty一旦创建完成就不需要SqlSessionFactoryBuilder了;因为SqlSession是通过SqlSessionFactory创建的,所以可以将SqlSessionFactoryBuilder当成一个工具类使用,最佳使用范围是方法范围即方法体内局部变量。
2. SqlSessionFactory
创建sqlSession的工厂,是一个接口,接口中定义了openSession的不同重载方法
SqlSessionFactory的最佳使用范围是整个应用运行期间,一旦创建后可以重复使用,通常以单例模式管理SqlSessionFactory。
3. SqlSession
连接到数据库的一个会话,sqlSession中定义了数据库操作方法。
每个线程都应该有它自己的SqlSession实例,SqlSession的实例不能共享使用,它也是线程不安全的。因此最佳的范围是请求或方法范围,绝对不能将SqlSession实例的引用放在一个类的静态字段或实例字段中。