MyBatis是一个优秀的持久层框架(就是将某些数据持久化到硬盘或其他存储器中的框架),它把jdbc对数据库的操作进行了封装,使用户只需关注sql本身,不需要去执行jdbc的那一套复杂的操作。
MyBatis通过配置xml文件或注解的方式,将statement或preparedstatement中的sql语句与java对象中的数据相互映射,最终生成可执行的sql语句,由MyBatis执行sql语句,并将返回结果封装成java对象。
简而言之,MyBatis封装了JDBC对数据库的复杂操作,并将返回结果封装成所需的java对象。
MyBatis流程图:
1.MyBatis-config.xml文件是MyBatis的核心配置文件,这个文件中配置了运行环境,事务管理方式,是否使用连接池等,MyBatis可以通过该配置文件创建SqlSessionFactory
2.SqlSessionFactory用来创建SqlSession
3.SqlSession是用来发送sql语句到数据库执行,并返回结果,类似于jdbc中的connection
4.executor是MyBatis的一个底层对象,用于执行sql语句
5.MapperStatement也是MyBatis的一个底层对象,用于将配置文件中的sql语句映射为可执行的sql语句。
JDBC与MyBatis的对比
JDBC:
1.使用jdbc有大量重复且复杂的代码
2.jdbc中的sql语句是写死在代码中,一旦修改sql还需重新编译代码
3.jdbc本身是不支持使用连接池的,会不断的创建连接,释放资源,影响效率
4.jdbc返回的ResultSet对象,需要我们手动处理,特别麻烦
MyBatis:
1.MyBatis对JDBC进行了封装,可以简化了代码
2.MyBatis的sql语句都是写在配置文件中的,如需修改sql,修改配置文件即可
3.MyBatis本身是支持连接池的,且MyBatis还可以兼容其他连接池
4.MyBatis会将返回的结果,封装为相应的java对象,极大的减少了我们的麻烦。