博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ibatis 开发中的经验 (一)ibatis 和hibernate 在开发中的理解
阅读量:7079 次
发布时间:2019-06-28

本文共 2509 字,大约阅读时间需要 8 分钟。

             这个项目的底层是用ibatis框架完毕,这几天也是都在用这个框架写代码,也有了一些简单的理解,把项目拿过来后基本的配置都已经配置好了,比方一些事务、日志控制等,在开发中主要用到的是写SQL语句以及熟悉ibatis xml文件都提供的一些标签,这些标签大部分是用来处理推断、逻辑,使得sql能够动态组装变的更灵活。

             在写代码的工作量上ibatis要比hibernate高一些,在你写了服务层后还须要些dao层,dao层实现,然后这些在hibernate中不须要自己写,仅仅写到服务层就能够调用hibernate提供的对象直接操纵数据,利用hibernate自己封装的一些方法完毕数据库的增删该茶,hibernate是从java实体类映射到了数据库表,我们调用它提供的方法就能够完毕操作数据库,sql语句会更具调用了它的什么方法自己主动生成,ibatis是封装了java实体类到sql语句,运行sql到数据还须要一个过程也是ibatis封装实现,相比开发人员写的代码是不是少了非常多呢。

             什么时候使用哪一个框架更好一些?

             ibatis适合在须要往一个系统里面添加新功能,可是表结构不能够修改的情况,由于ibatis在数据库操作细节上比hibernate要灵活非常多,它是面向SQL语句的框架而hibernate直接面向表结构,假设要改变表结构修改的地方会比較多。

             对于高并发、非常大的数据量系统中,使用ibatis效果要比hibernate好,我们能够自己写优化效率高的sql语句和存储过程来解决高数据量问题,从眼下开发来看hibernate写出来的hsql语句不easy优化,关系越复杂效率就会越慢,当然没有什么是一成不变的hibernate也会自己支持原生SQL语句,完好自己一些不完美的地方。

             在一个系统的维护上也显然易见,ibatis占有明显优势它把sql写在了配置文件中面,维护的时候假如须要改变某个查询功能,在配置文件中面改改就能够完毕,假设是hibernate就须要修改代码并又一次编译。

             以下这张是ibatis原理图

              图中左边是传入參数类型、右边是返回结构类型,中间是配置文件信息,它支持基本数据类型(int/string/boolean)以及对象、map等类型数据,用起来也比較方便。

              sqlMap-Config.xml相当于hibernate.cfg.xml文件,sqlmap.xml相当于资源文件,比例如以下配置信息

              举一个查询的样例:一个简单的下拉列表框查询

              select载入过程

              当载入select标签的时候,默认选中option子标签有selected=true的那个option,选中标签之后会把option的value属性值赋给select标签的value属性,假设option的value为空,将<option>測试</option>这两个開始和结束标签值赋给select,该实现即是利用了这个赋值过程,value值分为给了0、1、2三个值表示三种类型的查询条件。

              JSP页面例如以下

             

		请选择查询方式:			请输入keyword:	

${db.driver}
${db.url}
${db.user}
${db.password}
classpath:sql-map-config.xml

            sqlmap.xml代码

              这个是动态载入查询条件,以后假设新增了查询选项对应的改改配置文件就能够,不须要再修改代码里面的东西,比曾经灵活了i些。

               ibatis还在使用和熟悉中……

             

    

你可能感兴趣的文章
知乎pure render专栏创办人@流形:选择React这条路,很庆幸
查看>>
修复.NET的HttpClient
查看>>
调查:Android的领先地位稳固
查看>>
在Maven项目中使用JUnit进行单元测试
查看>>
Docker发布应用程序指南
查看>>
你朋友圈里的广告是怎么做到合你胃口的?
查看>>
#第1天#《C Primer Plus》学习历程
查看>>
为什么说GraphQL可以取代REST API?
查看>>
亚马逊是如何进行软件开发的
查看>>
腾讯开源手游热更新方案,Unity3D下的Lua编程
查看>>
Kafka迎来1.0.0版本,正式告别四位数版本号
查看>>
Chef宣布100%开源,要走红帽模式?\n
查看>>
用实例讲解Spark Sreaming
查看>>
Visual Studio 15.8 Preview 3支持多点编辑功能
查看>>
我们究竟应不应该使用框架?
查看>>
如何用Kotlin Coroutines和Architecture Components进行Android开发?
查看>>
RxJava系列六(从微观角度解读RxJava源码)
查看>>
How do you create a DynamicResourceBinding that supports Converters, StringFormat?
查看>>
《快学 Go 语言》第 9 课 —— 接口
查看>>
HTML5抽奖转盘
查看>>