一、什么是Mybatis

这里借用官网的一句话介绍什么是mybatis:MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。

二.Mybatis优势

2.1Mybatis相对JDBC有哪些优势

先来说下使用JDBC操作数据库有哪些劣势:

1.在创建connection的时候,存在硬编码问题(也就是直接把连接信息写死,不方便后期维护)

2.preparedStatement对象在执行sql语句的时候存在硬编码问题。

3.每次在进行一次数据库连接后都会关闭数据库连接,频繁的开启/关闭数据连接影响性能。

4.对结果集解析存在硬编码(查询列名),sql变化导致解析代码变化,系统不易维护,如果能将数据库记录封装成pojo对象解析比较方便

当然还有其他问题,这里就不一一列举啦。

然后再来简单的说一下mybatis相对jdbc的优势:

1.mybatis是把连接数据库的信息都是写在配置文件中,因此不存在硬编码问题,方便后期维护。

2.mybatis执行的sql语句都是通过配置文件进行配置,不需要写在java代码中。Mybatis自动将java对象映射至sql语句,通过statement中的parameterType定义输入参数的类型

3.mybatis的连接池管理、缓存管理等让连接数据库和查询数据效率更高。

4.Mybatis自动将sql执行结果映射至java对象,通过statement中的resultType定义输出结果的类型.

2.2 mybatis与hibernate不同及优势

Mybatis和hibernate不同,它不完全是一个ORM框架,因为MyBatis需要程序员自己编写Sql语句。mybatis可以通过XML或注解方式灵活配置要运行的sql语句,并将java对象和sql语句映射生成最终执行的sql,最后将sql执行的结果再映射生成java对象。

mybatis相对于hibernate的优势:

Mybatis学习门槛低,简单易学,程序员直接编写原生态sql,可严格控制sql执行性能,灵活度高,非常适合对关系数据模型要求不高的软件开发,例如互联网软件、企业运营类软件等,因为这类软件需求变化频繁,一但需求变化要求成果输出迅速。

hibernate劣势:

Hibernate的学习门槛高,要精通门槛更高,而且怎么设计O/R映射,在性能和对象模型之间如何权衡,以及怎样用好Hibernate需要具有很强的经验和能力才行。

当然hibernater也有它独特的优势:

    Hibernate对象/关系映射能力强,数据库无关性好,对于关系模型要求高的软件(例如需求固定的定制化软件)如果用hibernate开发可以节省很多代码,提高效率.

总之,按照用户的需求在有限的资源环境下只要能做出维护性、扩展性良好的软件架构都是好架构,所以框架只有适合才是最好。

最新文章

  1. 《Linux内核设计与实现》读书笔记 第十八章 调试
  2. NYOJ 105
  3. C(C++)输入输出格式
  4. Openstack的web管理端相关
  5. 拥抱高效、拥抱 Bugtags 之来自用户的声音
  6. for语句中声明变量
  7. MySQL select into 和 SQL select into
  8. 正则化—Java中Split函数的用法技巧_(转载修改)
  9. Spring-Junit4
  10. C++结构体中sizeof
  11. HDU 1815, POJ 2749 Building roads(2-sat)
  12. Struts2之Result详解
  13. spring框架总结(03)重点介绍(Spring框架的第二种核心掌握)
  14. python源码书籍
  15. iOS核心面试题
  16. Day038--Python--Gevent , IO多路复用
  17. python2 安装 MySQL-python
  18. ansible jenkins war
  19. Unity3D Android动态反射加载程序集
  20. 面向对象三大特性一一封装(encapsulation)

热门文章

  1. Go内存逃逸分析
  2. [题解]UVA11027 Palindromic Permutation
  3. k8s初面考点ReplicaSet副本集极限9连击你懂了吗?
  4. c# 编程学习(五)
  5. 【C# IO 操作 】内存包装类 Memory <T>和 Span<T> 相关类型
  6. 不知道这10个术语,你还敢说会JavaScript?
  7. idea看不到class文件
  8. selenium+python自动化103-一闪而过的dialog如何定位
  9. 哈工大 计算机系统 实验二 Datalab数据表示
  10. omnet++:使用教程