软件介绍Mybatis是一款非常专业的持久层框架,这款软件不仅可以支持自定义SQL、存储过程以及高级映射等多种功能,同时我们还可以使用Mybatis官方版来将接口和Java的POJOs映射成数据库中的记录,这款软件的功能非常强大,适合专业的编程人员使用。 Mybatis软件简介MyBatis 是支持普通 SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis 消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis 使用简单的 XML或注解用于配置和原始映射,将接口和 Java 的POJOs(Plain Ordinary Java Objects,普通的 Java对象)映射成数据库中的记录。 每个MyBatis应用程序主要都是使用SqlSessionFactory实例的,一个SqlSessionFactory实例可以通过SqlSessionFactoryBuilder获得。SqlSessionFactoryBuilder可以从一个xml配置文件或者一个预定义的配置类的实例获得。 用xml文件构建SqlSessionFactory实例是非常简单的事情。推荐在这个配置中使用类路径资源(classpath resource),但你可以使用任何Reader实例,包括用文件路径或file://开头的url创建的实例。MyBatis有一个实用类----Resources,它有很多方法,可以方便地从类路径及其它位置加载资源。 软件特色简单易学:本身就很小且简单。没有任何第三方依赖,最简单安装只要两个jar文件+配置几个sql映射文件易于学习,易于使用,通过文档和源代码,可以比较完全的掌握它的设计思路和实现。 灵活:mybatis不会对应用程序或者数据库的现有设计强加任何影响。 sql写在xml里,便于统一管理和优化。通过sql语句可以满足操作数据库的所有需求。 解除sql与程序代码的耦合:通过提供DAO层,将业务逻辑和数据访问逻辑分离,使系统的设计更清晰,更易维护,更易单元测试。sql和代码的分离,提高了可维护性。 提供映射标签,支持对象与数据库的orm字段关系映射 提供对象关系映射标签,支持对象关系组建维护 提供xml标签,支持编写动态sql。 Mybatis架构介绍功能架构 (1)API接口层:提供给外部使用的接口API,开发人员通过这些本地API来操纵数据库。接口层一接收到调用请求就会调用数据处理层来完成具体的数据处理。 (2)数据处理层:负责具体的SQL查找、SQL解析、SQL执行和执行结果映射处理等。它主要的目的是根据调用的请求完成一次数据库操作。 (3)基础支撑层:负责最基础的功能支撑,包括连接管理、事务管理、配置加载和缓存处理,这些都是共用的东西,将他们抽取出来作为最基础的组件。为上层的数据处理层提供最基础的支撑。 框架架构 (1)加载配置:配置来源于两个地方,一处是配置文件,一处是Java代码的注解,将SQL的配置信息加载成为一个个MappedStatement对象(包括了传入参数映射配置、执行的SQL语句、结果映射配置),存储在内存中。 (2)SQL解析:当API接口层接收到调用请求时,会接收到传入SQL的ID和传入对象(可以是Map、JavaBean或者基本数据类型),Mybatis会根据SQL的ID找到对应的MappedStatement,然后根据传入参数对象对MappedStatement进行解析,解析后可以得到最终要执行的SQL语句和参数。 (3)SQL执行:将最终得到的SQL和参数拿到数据库进行执行,得到操作数据库的结果。 (4)结果映射:将操作数据库的结果按照映射的配置进行转换,可以转换成HashMap、JavaBean或者基本数据类型,并将最终结果返回。 Mybatis使用教程使用mybatis首先要使用配置或者代码去生产sqlsessionfactory,而mybatis提供了构造器sqlsessionfactoryBuilder,他提供了一个类org.apache.ibatis.session.Configution作为引导,采用的是builder模式,具体的分布则是在Configuration类里面完成的。 在mybatis中,既可以通过配置的xml文件的形式生成sqlsessionfactory,也可以通过java代码的形式去生成sqlsessionfactory,个人强烈推荐使用xml文件的形式去生成sqlsessionfactory,因为代码的形式在需要修改的时候会比较麻烦,当配置了xml或者提供代码后,mybatis会读取配置文件,通过Configuration类对象构建整个mybatis的上下文。 sqlsessionfactory是一个接口,在mybatis中他存在两个实现类:defaultSqlSessionfactory和sqlsessionManager;一般而言,具体使用defaultSqlSessionfactory去实现的,而sqlsessionfactory使用在多线程的环境中,他具体实现依靠defaultfactory; 每个基于mybatis的应用都是以一个sqlsessionfactory的实例为中心的而sqlsessionfactory唯一的作用就是生产mybatis的核心接口对象sqlsession,所以他的作用是唯一的 |