Mybatis解决jdbc编程的问题:
1、 数据库连接创建、释放频繁造成系统资源浪费从而影响系统性能,如果使用数据库连接池可解决此问题。
解决:在SqlMapConfig.xml中配置数据连接池,使用连接池管理数据库链接。
2、 Sql语句写在代码中造成代码不易维护,实际应用sql变化的可能较大,sql变动需要改变java代码。
解决:将Sql语句配置在XXXXmapper.xml文件中与java代码分离。
3、 向sql语句传参数麻烦,因为sql语句的where条件不一定,可能多也可能少,占位符需要和参数一一对应。
解决:Mybatis自动将java对象映射至sql语句,通过statement中的parameterType定义输入参数的类型。
4、 对结果集解析麻烦,sql变化导致解析代码变化,且解析前需要遍历,如果能将数据库记录封装成pojo对象解析比较方便。
解决:Mybatis自动将sql执行结果映射至java对象,通过statement中的resultType定义输出结果的类型。

mybatis与hibernate的不同

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

Mybatis学习门槛低,简单易学,程序员直接编写原生态sql,可严格控制sql执行性能,灵活度高,非常适合对关系数据模型要求不高的软件开发,例如互联网软件、企业运营类软件等,因为这类软件需求变化频繁,一但需求变化要求成果输出迅速。但是灵活的前提是mybatis无法做到数据库无关性,如果需要实现支持多种数据库的软件则需要自定义多套sql映射文件,工作量大。

Hibernate对象/关系映射能力强,数据库无关性好,对于关系模型要求高的软件(例如需求固定的定制化软件)如果用hibernate开发可以节省很多代码,提高效率。但是Hibernate的学习门槛高,要精通门槛更高,而且怎么设计O/R映射,在性能和对象模型之间如何权衡,以及怎样用好Hibernate需要具有很强的经验和能力才行。
总之,按照用户的需求在有限的资源环境下只要能做出维护性、扩展性良好的软件架构都是好架构,所以框架只有适合才是最好。

Mybatis解决jdbc编程的问题以及mybatis与hibernate的不同相关推荐

  1. 面试大厂被MyBatis问到“哑口无言”?这份MyBatis源码笔记助你吊打面试官!

    写在前面 随着手机.平板电脑等移动终端的广泛应用,移动互联网时代已经到来.在这个时代里,构建一个高效的平台并提供服务是移动互联网的基础,在众多的网站服务中,使用Java构建网站的不在少数,移动互联网的 ...

  2. Mybatis与JDBC的对比超详细笔记

    1      Mybatis入门 1.1    单独使用jdbc编程问题总结 1.1.1  jdbc程序 Public static void main(String[] args) { Connec ...

  3. 深入浅出MyBatis:JDBC和MyBatis介绍

    为什么80%的码农都做不了架构师?>>>    最近在休陪产假,时间比较零碎,准备看2本书充实下,一本是「深入浅出MyBatis:技术原理与实践」,一本是「RabbitMQ实战:高效 ...

  4. 【Java18】Mybatis:jdbc解耦,动态代理,日志

    文章目录 1.介绍:Mybatis是对数据库操作,创建maven管理的java工程就可以 2.第一个程序:三个.xml文件 2.1 pom.xml 2.2 log4j.properties 2.3 m ...

  5. (一)mybatis之JDBC介绍

    前言:为什么在学mybatis之前要先了解JDBC呢?因为mybatis是以ORM模型为中心思想的框架,而所有的ORM模型都是基于JDBC进行封装的,不同的ORM模型对JDBC封装的强度是不一样的. ...

  6. MyBatis对比JDBC的优点

    MyBatis对比JDBC的优点 MyBatis是我们常用的一个框架,使用这个框架我们大大的简化了JDBC让工作人员注重于SQL语句的编写,而JDBC的其他步骤可以交给框架来完成.我们对比下使用MyB ...

  7. Mybatis是什么以及Mybatis和JDBC的关系?

    文章目录 Mybatis是什么 Mybatis和JDBC的关系 MyBatis的优点和缺点 Mybatis是什么 mybatis是一个持久层ORM框架.它内部封装了jdbc,使得开发更简洁,更高效. ...

  8. SpringBoot Mybatis解决使用PageHelper一对多分页问题

    SpringBoot Mybatis解决使用PageHelper一对多分页问题 参考文章: (1)SpringBoot Mybatis解决使用PageHelper一对多分页问题 (2)https:// ...

  9. Mybatis与JDBC批量插入MySQL数据库性能测试及解决方案

    Mybatis与JDBC批量插入MySQL数据库性能测试及解决方案 参考文章: (1)Mybatis与JDBC批量插入MySQL数据库性能测试及解决方案 (2)https://www.cnblogs. ...

最新文章

  1. WebApplication和WebSite有什么区别?我该选择哪个?
  2. linux下php扩展curl的安装
  3. ime-mode:disabled 禁止表单使用文本框输入法
  4. 在国外当程序员是什么体验?
  5. 百叶窗效果显示图片源码(c#)
  6. ASP.NET Core launchsettings.json文件(8)《从零开始学ASP.NET CORE MVC》:
  7. 微信公众号发起微信支付 c#
  8. 解决Mysql安装之后没有my.ini配置文件问题
  9. 编程python视频教程_Python高级编程实战系列视频课程
  10. UI组件DevExpress WinForm入门指南 - DialogService服务
  11. Java 常见异常以及处理方式
  12. 香浓熵(Shannon)与冯诺伊曼熵(Von Neumann)
  13. access有效性规则不为空值_在设置access有效性规则中,大于0并且小于100怎么写?...
  14. 企业正确导入BPM系统要注意什么
  15. 巴特沃斯(Butterworth)滤波器 (2) - 双线性变换
  16. python是自由开放源代码软件_开放源代码定义之历史篇
  17. 涨知识!原来华为手机摄像头还有这些高级玩法,学会轻松提高工作效率
  18. 线性代数及其应用:经典矩阵特征值证明
  19. T507修改分区方法-Linux、Android系统适用
  20. 优秀CTO修炼之道:向上生长,向下兼容

热门文章

  1. CoreAnimation编程指南(八)事务
  2. 两千块钱带来的 quot;希望quot;
  3. oracle中取反_oracle正则表达式regexp_like的用法详解
  4. java算法实验标尺问题_在codeigniter项目中使用标尺库
  5. java音频采样_音频重采样的坑
  6. android 环形时间显示_使用Arduino构建OLED显示屏与Android手机接口的智能手表
  7. gradle是否可以编译c语言,build.gradle按条件编译与cmake配置
  8. php5 数据库框架,数据库 · FastAdmin - 基于ThinkPHP5的极速后台开发框架文档 · 看云...
  9. python 线程退出_python线程退出
  10. 手机1像素线粗_关于移动端一像素线的解决方案