MyBatis

MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架,其主要就完成2件事情:

封装JDBC操作 利用反射打通Java类与SQL语句之间的相互转换 MyBatis的主要设计目的就是让我们对执行SQL语句时对输入输出的数据管理更加方便,所以方便地写出SQL和方便地获取SQL的执行结果才是MyBatis的核心竞争力。

MyBatis的配置

MyBatis框架和其他绝大部分框架一样,需要一个配置文件,其配置文件大致如下:

复制代码

复制代码 以上配置中,最重要的是数据库参数的配置,比如用户名密码等,如果配置了数据表对应的mapper文件,则需要将其加入到节点下。

MyBatis的主要成员

Configuration MyBatis所有的配置信息都保存在Configuration对象之中,配置文件中的大部分配置都会存储到该类中 SqlSession 作为MyBatis工作的主要顶层API,表示和数据库交互时的会话,完成必要数据库增删改查功能 Executor MyBatis执行器,是MyBatis 调度的核心,负责SQL语句的生成和查询缓存的维护 StatementHandler 封装了JDBC Statement操作,负责对JDBC statement 的操作,如设置参数等 ParameterHandler 负责对用户传递的参数转换成JDBC Statement 所对应的数据类型 ResultSetHandler 负责将JDBC返回的ResultSet结果集对象转换成List类型的集合 TypeHandler 负责java数据类型和jdbc数据类型(也可以说是数据表列类型)之间的映射和转换 MappedStatement MappedStatement维护一条节点的封装 SqlSource 负责根据用户传递的parameterObject,动态地生成SQL语句,将信息封装到BoundSql对象中,并返回 BoundSql 表示动态生成的SQL语句以及相应的参数信息 以上主要成员在一次数据库操作中基本都会涉及,在SQL操作中重点需要关注的是SQL参数什么时候被设置和结果集怎么转换为JavaBean对象的,这两个过程正好对应StatementHandler和ResultSetHandler类中的处理逻辑。

(图片来自《深入理解mybatis原理》 MyBatis的架构设计以及实例分析)

MyBatis的初始化

MyBatis的初始化的过程其实就是解析配置文件和初始化Configuration的过程,MyBatis的初始化过程可用以下几行代码来表述:

复制代码 String resource = “mybatis.xml”;

// 加载mybatis的配置文件(它也加载关联的映射文件) InputStream inputStream = null; try { inputStream = Resources.getResourceAsStream(resource); } catch (IOException e) { e.printStackTrace(); }

// 构建sqlSession的工厂 sessionFactory = new SqlSessionFactoryBuilder().build(inputStream); 复制代码 首先会创建SqlSessionFactory建造者对象,然后由它进行创建SqlSessionFactory。这里用到的是建造者模式,建造者模式最简单的理解就是不手动new对象,而是由其他类来进行对象的创建。

复制代码 // SqlSessionFactoryBuilder类 public SqlSessionFactory build(InputStream inputStream, String environment, Properties properties) { try { XMLConfigBuilder parser = new XMLConfigBuilder(inputStream, environment, properties); return build(parser.parse()); // 开始进行解析了

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • MyBatis & MyBatis Plus

    MyBatis-Plus与通用Mapper的优点类似。参考MyBatis & 通用Mapper

    十毛
  • Mybatis-01 什么是Mybatis

    MyBatis 是一款优秀的持久层框架 ,它支持定制化 SQL、存储过程以及高级映射。

    张小驰出没
  • MyBatis-01 MyBatis入门篇

    MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google c...

    小小工匠
  • MyBatis-

    Mybatis是一个半ORM(对象关系映射)框架,它内部封装了JDBC,加载驱动、创建连接、创建statement等繁杂的过程,开发者开发时只需要关注如何编写S...

    Quinlan
  • Mybatis

    解决方案: 持久层(DAO)的零实现。所谓的零实现,就是不用写实现类代码,直接使用接口就可以操作数据库。

    Carlos Ouyang
  • MyBatis

    Apache software foundation 迁移到了google code, 并且改名为

    用户7411014
  • mybatis

    MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集...

    dodott
  • Mybatis(一)走进Mybatis与FisrtExample

    一直在使用,从未系统的总结起来。所以这里给大家带来的是mybatis的总结,系统大家能够对这个框架有一定的系统的学习与认识。 mybatis和Hibernat...

    用户1195962
  • MyBatis(2)——MyBatis 深入学习

    编写日志输出环境配置文件 在开发过程中,最重要的就是在控制台查看程序输出的日志信息,在这里我们选择使用 log4j 工具来输出: 准备工作: 将【MyBati...

    我没有三颗心脏
  • Mybatis

    从xml配置文件中读取配置,然后通过SqlSessionFactoryBuilder构建SqlSessionFactory实例(建造者模式)。SqlSessio...

    spilledyear
  • 【MyBatis-2】MyBatis之xml 配置版

    MyBatis 是一款标准的 ORM 框架,被广泛的应用于各企业开发中。MyBatis 支持普通的 SQL 查询,存储过程和高级映射的优秀持久层框架。MyBat...

    云深i不知处
  • MyBatis之Hello world(Mybatis入门)

    MyBatis中文网,超详细的:http://www.mybatis.org/mybatis-3/zh/index.html MyBatis英文网:http:/...

    别先生
  • 【MyBatis-4】MyBatis之动态SQL

    这条语句提供了一种可选的查找文本功能。如果没有传入“title”,那么所有处于“ACTIVE”状态的BLOG都会返回;反之若传入了“title”,那么就会对“t...

    云深i不知处
  • Mybatis-plus

    MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生

    晚上没宵夜
  • MyBatis (一) MyBatis 的简单引入

    创建数据库 首先,我们先创建一个数据库,表名为 tbl_employee, 该表的字段以及类型如下

    求和小熊猫
  • mybatis系列教程(一)——mybatis配置

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

    逝兮诚
  • MyBatis —— HelloWold

    2、创建maven+spring+springmvc项目,pom文件中需要注入mybatis-spring的依赖,mybatis-spring2.0与Sprin...

    桑鱼
  • mybatis之第一个mybatis程序(一)

    其中lib文件夹下为依赖的jar包:mybatis.jar为mybatis依赖,mysql-connector-java.jar为连接mysql数据库依赖,lo...

    西西嘛呦
  • mybatis 学习笔记(一):mybatis 初认识

    MyBatis是一个Java持久层框架,它通过XML描述符或注解把对象与存储过程或SQL语句关联起来。mybatis 可以将 preparedStatement...

    希希里之海

扫码关注云+社区

领取腾讯云代金券