关于Mybatis浅谈

1. 历史

MyBatis本是apache的一个开源项目iBatis。
2010年这个项目由apache software foundation 迁移到了google code,并且取名为MyBatis。
2013年11月迁移到Github

2. 什么是Mybatis

Mybatis是支持普通SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索。

3. mybatis与hibernate对比

Hibernate

hibernate是全自动的,hibernate完全可以通过对象关系模型实现对数据库的操作,拥有完整的JavaBean对象与数据库的映射结构来自动生成sql。
功能强大,数据库无关性好,O/R映射能力强,需要写的代码很少,开发速度很快。
拥有完整的日志系统,涉及广泛,包括sql记录、关系异常、优化警告、缓存提示、脏数据警告等。

但相对的,学习门槛高,精通门槛高,需要程序员有非常扎实的经验和能力才能熟练运用。
我们无法直接维护sql。而且,即使有sql查询,但是功能还是不及sql查询(如果只是使用一些简单的查询,hibernate足以应对)。

Mybatis

上手难度低,易掌控,提供了数据库查询的自动对象绑定功能,而且延续了很好的sql使用经验,对与没有那么高的对象模型要求的项目来说,相当完美。
sql写在xml里,便于统一管理和优化,解除sql与程序代码的耦合。提供xml标签,支持编写动态sql。
在速度上相对比Hibernate的速度快。

但相对的,当关联表多的时候,字段多的时候,sql工作量很大。
并且不支持级联更新,级联删除。
Mybatis的日志除了基本记录功能外,其他功能薄弱很多

4. 误区

mybatis是一个直接访问数据库的框架(其实不是的)
准确来说,mybatis不会直接和数据库打交道。mybatis其实是对jdbc api进行封装,也就是说和数据库打交道的依旧是jdbc。

5. 执行原理

jdbc执行原理:
加载jdbc驱动 --> 通过配置文件映射 --> 建立并获取数据库连接 --> 创建JDBC Statements(或PreparedStatement)对象 --> 执行sql语句并且获得查询结果 --> 释放资源

mybatis运行原理:
解析SqlConfig.xml配置文件 --> 加载SqlSessionFctory获取SqlSession对象 --> 通过SqlSession对象获取Executor对象 --> 执行映射语句在数据库里获取对应的值

积累点点滴滴,一步一脚印,加油

通过查询资料、翻阅文档,在这里对所了解到mybatis的知识先进行一下总结。有想到之后博客还会有补充,如有缺漏和错误还望指正。

上一篇:[转]phpredis中文手册


下一篇:myeclipse 保存时自动格式化代码