mybatis的理解

Mybatis是一个应用比较广泛的持久层框架,它原本是apache的一个开源项目 IBatis,2010年迁移到Google Code后改名得来的。


Mybatis主要是通过封装JDBC的方法实现简化数据库与java之间的连接,它是一个不完全的ORM(对象关系映射) 框架,利用映射关系的方法简易Java与SQL语句之间的相互转化。它几乎避免了所有JDBC代码和手动设置参数以及获取结果集。Mybatis相当灵活,它是将SQL语句写入XML文件中,与程序代码完全分析,降低耦合度,便于管理,而且如果我们在项目中用到相同查询的时候可以通过id多次调用这个SQL语句。当然Mybatis最大的特点就是支持动态SQL语句【动态标签分别是:when ,choose ,where , otherwise(where可以自动生成AND 或者去掉AND) ,if ,set(SET 可以自动生成”,”或者去掉”,”) ,foreach 】的编写和运用(#{} & ${})。它也提供了一些映射标签,支持类与数据库的ORM字段关系映射,这里需要注意的是类中的对象必须和列名保持一致。

但是Mybatis也不是完美的,它也有它的不完美的地方,SQL语句的编写量特别大,尤其是字段多、关联表多时,这样对开发人员对SQL语句编写的要求很高。SQL语句依赖数据库,会导致数据库移植性差,而且不能随便更换数据库。


下面我们对Mybatis运行机制进行分析:

1.加载主配置文件,Mybatis核心文件,加载Mapper的映射文件开始创建configuration对象
2.SqlSessionFactory 创建需要加载configuration对象
3.通过SqlSessionFactory 打开一个SqlSession对象
4.执行MapperStatements维护一条<select/update/delete/insert>节点的封装(id 传入参数,返回类型 SQL语句)
【SqlSoure:负责根据用户传递的Paramter Object动态生成SQL语句,将信息封装到BoundSql对象,并返回】
【BoundSql:负责动态生成的SQL语句以及相应的参数信息】
5.SqlSession根据事务提交情况判断,提交还是回滚。

这里写图片描述


在这个过程中我们需要特别注意Mybatis的四大对象:

Exeutor:执行器,是Mybatis调度的核心,负责SQL语句的生成和查询缓存的维护

StatementHandle:封装JDBC Statement操作,负责对JDBC Statement的操作,如:设置参数

ParameteHandle:负责对用户传递的参数转换成JDBC Statement所对应的数据类型

ResultHandle:负责将JDBC返回的ResultSet 结果集对象转换成List类型的集合
(TypeHandle: 负责java数据类型和JDBC数据类型之间的映射和转换)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值