MyBatis

转载 2016年05月30日 10:23:19
MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。2013年11月迁移到Github。

iBATIS一词来源于“internet”和“abatis”的组合,是一个基于Java的持久层框架。iBATIS提供的持久层框架包括SQL Maps和Data Access Objects(DAO)

每个MyBatis应用程序主要都是使用SqlSessionFactory实例的,一个SqlSessionFactory实例可以通过SqlSessionFactoryBuilder获得。SqlSessionFactoryBuilder可以从一个xml配置文件或者一个预定义的配置类的实例获得。
用xml文件构建SqlSessionFactory实例是非常简单的事情。推荐在这个配置中使用类路径资源(classpath resource),但你可以使用任何Reader实例,包括用文件路径或file://开头的url创建的实例。MyBatis有一个实用类----Resources,它有很多方法,可以方便地从类路径及其它位置加载资源。
(1)加载配置并初始化
触发条件:加载配置文件
将SQL的配置信息加载成为一个个MappedStatement对象(包括了传入参数映射配置、执行的SQL语句、结果映射配置),存储在内存中。
(2)接收调用请求
触发条件:调用Mybatis提供的API
传入参数:为SQL的ID和传入参数对象
处理过程:将请求传递给下层的请求处理层进行处理。
(3)处理操作请求
触发条件:API接口层传递请求过来
传入参数:为SQL的ID和传入参数对象
处理过程:
(A)根据SQL的ID查找对应的MappedStatement对象。
(B)根据传入参数对象解析MappedStatement对象,得到最终要执行的SQL和执行传入参数。
(C)获取数据库连接,根据得到的最终SQL语句和执行传入参数到数据库执行,并得到执行结果。
(D)根据MappedStatement对象中的结果映射配置对得到的执行结果进行转换处理,并得到最终的处理结果。
(E)释放连接资源。
(4)返回处理结果将最终的处理结果返回。

MyBatis 最强大的特性之一就是它的动态语句功能。如果您以前有使用JDBC或者类似框架的
  经历,您就会明白把SQL语句条件连接在一起是多么的痛苦,要确保不能忘记空格或者不要在
  columns列后面省略一个逗号等。动态语句能够完全解决掉这些痛苦。
  尽管与动态SQL一起工作不是在开一个party,但是MyBatis确实能通过在任何映射SQL语句中
  使用强大的动态SQL来改进这些状况。
  动态SQL元素对于任何使用过JSTL或者类似于XML之类的文本处理器的人来说,都是非常熟悉
  的。在上一版本中,需要了解和学习非常多的元素,但在MyBatis 3 中有了许多的改进,现在只
  剩下差不多二分之一的元素。MyBatis使用了基于强大的OGNL表达式来消除了大部分元素。

mybatis #{} 以及 ${}

动态 sql 是 mybatis 的主要特性之一,在 mapper 中定义的参数传到 xml 中之后,在查询之前 mybatis 会对其进行动态解析。mybatis 为我们提供了两种支持动态 s...
  • minzhang001
  • minzhang001
  • 2017年10月23日 16:29
  • 3017

Mybatis #和$

在mybatis的mapper文件中,对于传递的参数我们一般是使用#和$来获取参数值。 当使用#时变量是占位符,就是一般我们使用java jdbc的PrepareStatement时的占位符?,所有可...
  • qq924862077
  • qq924862077
  • 2016年03月16日 18:19
  • 9696

mybatis动态sql在and条件中嵌套or条件的写法。

sql如下: select * FROM T_CORRECT_END t  INNER JOIN GET_CHILD_DEPT(579) a  on t.DEPT_PK=a.PK_ID WHE...
  • suyu_yuan
  • suyu_yuan
  • 2016年10月27日 15:11
  • 10155

Mybatis中的 ${} 和 #{}区别与用法

Mybatis 的Mapper.xml语句中parameterType向SQL语句传参有两种方式:#{}和${} 我们经常使用的是#{},一般解说是因为这种方式可以防止SQL注入,简单的说#{}这种...
  • j04110414
  • j04110414
  • 2017年12月27日 17:45
  • 1615

mybatis中>=和<=的实现方式

原因 mybatis使用的是xml格式的文件,使用>和=使用 =]]> >
  • u012150370
  • u012150370
  • 2015年07月14日 21:39
  • 1703

mybatis处理and、or关系的方法

( xx and xx) or ( xx and xx)
  • wang_song_yan
  • wang_song_yan
  • 2015年10月12日 23:02
  • 18990

Mybatis最入门---动态查询(if)

[一步是咫尺,一步即天涯] 前面我们花费很多篇幅来介绍核心元素的使用,在日常开发中,基本的静态的查询情况已经足够对付。但有些时候,我们想寻求一个能够根据参数自动调整SQL查询的方法。如,学校教导主任发...
  • ABCD898989
  • ABCD898989
  • 2016年04月22日 18:06
  • 17695

mybatis中#{}与${}

#{}实现的是向 prepareStatement 中的预处理语句中设置参数值,sql语句中#{}表示一个占位符即?。 ${}是将参数值不加修饰的拼在sql中,相当中用jdbc的statement拼...
  • u010061060
  • u010061060
  • 2016年05月11日 17:37
  • 106

《深入理解mybatis原理》 Mybatis数据源与连接池

对于ORM框架而言,数据源的组织是一个非常重要的一部分,这直接影响到框架的性能问题。本文将通过对MyBatis框架的数据源结构进行详尽的分析,并且深入解析MyBatis的连接池。     本文首先会...
  • u010349169
  • u010349169
  • 2014年07月10日 23:32
  • 41065

mybatis3动态创建表,判断表是否存在,删除表

mybatis3动态创建表,判断表是否存在,删除表
  • doctor_who2004
  • doctor_who2004
  • 2015年01月22日 20:42
  • 12971
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:MyBatis
举报原因:
原因补充:

(最多只允许输入30个字)