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

本文共 2494 字,大约阅读时间需要 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语句不容易优化,关系越复杂效率就会越慢,当然没有什么是一成不变的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页面如下

             

		请选择查询方式:			请输入关键字:	

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

            sqlmap.xml代码

              这个是动态加载查询条件,以后如果新增了查询选项相应的改改配置文件就可以,不需要再改动代码里面的东西,比以前灵活了i些。

               ibatis还在使用和熟悉中……

             

    

转载于:https://www.cnblogs.com/lilongsheng1125/p/4978530.html

你可能感兴趣的文章
Jsp技术总结
查看>>
Sakai 11.x Build Failure
查看>>
面向对象+模块化设计绘制canvas星空动画
查看>>
Elastic Search学习笔记3——集群配置
查看>>
Unity客户端资源智能管理
查看>>
SVN在Windows下的安装配置步骤
查看>>
网页两侧悬浮广告js代码
查看>>
算法练习:判断一个字符串中的字符是否唯一(只用基本数据结构)
查看>>
淘宝技术的科普贴图文
查看>>
http://itunes.apple.com/lookup?id=获取不到版本
查看>>
理解Javascript的状态容器Redux
查看>>
制作liveusb实现ubuntserver12全自动无人职守安装
查看>>
centos7的fstab要小心
查看>>
Windows phone8 基础篇(三)常用控件(二)
查看>>
架构师速成4.8-幼儿园书单资料推荐
查看>>
MySQL-Proxy实现读写分离部署文档
查看>>
For Update
查看>>
Hyper-V 之03 创建iSCSI存储和故障转移群集
查看>>
如何成为一名架构师?
查看>>
我的友情链接
查看>>