MyBatis,是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装。MyBatis可以使用简单的XML或注解用于配置和原始映射,将接口和Java的POJO(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。
个人认为MyBatis最大的特点有以下3点:
- 不屏蔽SQL,意味着可以更为精确地定位SQL语句,也可以对其进行优化和改造,有利于互联网系统性能提高。
- 提供强大、灵活的映射机制,方便Java开发者使用,提供动态SQL的功能,允许根据不同条件组装SQL,满足各种应用系统经常变化的要求。
- 提供了使用Mapper的接口编程,只要一个接口和一个XML就能创建映射器,简化开发工作。
MyBatis的核心组件
- SqlSessionFactoryBuilder(构造器):它会根据配置或者代码来生成SqlSessionFactory,采用的是分步构建的Builder模式。
- SqlSessionFactory(工厂接口):依靠它来生成SqlSession,使用的是工厂模式。
- MyBatis中,既可以通过读取配置的XML文件的形式生成SqlSessionFactory,也可以通过Java代码的形式去生成SqlSessionFactory。但推荐建议使用XML文件构建SqlSessionFactory。因为代码的方式在需要修改时会很麻烦。
- SqlSession(会话):一个既可以发送SQL执行返回结果,也可以获取Mapper的接口。
- 是其核心接口。SqlSession的作用类似于一个JDBC中的Connection对象,代表着一个连接资源的启用。作用有3个:1、获取Mapper接口。2、发送SQL给数据库。3、控制数据库事务。
- SQL Mapper(映射器):MyBatis新设计存在的组件,它由一个Java接口和XML文件(或注释)构成,需要给出对应的SQL和映射规则。负责发送SQL去执行,并返回结果。
- MyBatis中最重要、最复杂的组件,它可以配置以下内容:
- 描述映射规则。
- 提供SQL语句,并可以配置SQL参数类型、返回类型、缓存刷新等信息。
- 配置缓存。
- 提供动态SQL。
- MyBatis中最重要、最复杂的组件,它可以配置以下内容:
总结:
1、使用SqlSessionFactoryBuilder的作用在于创建SqlSessionFacory,创建后SqlSessionFactoryBuiler就没有作用。
2、SqlSessionFactory类似一个数据库连接池,作用是创建SqlSession接口对象。
3、SqlSession相当一个数据库连接(Connection对象),可以在一个事务里面执行多条SQL,通过它的commit,rollback等方法,提交或者回滚事务。
4、Mapper是一个接口,由SqlSession所创建。Mapper代表的一个请求中业务处理,所以它应该在一个请求中,一旦处理完相关事务,就应该废弃它。