Apache iBatis(现已迁至Google Code下发展,更名为MyBatis)是当前IT项目中使用很广泛的一个半自动ORM框架,区别于Hibernate之类的全自动框架,iBatis对数据库的操作拥有更加灵活的控制,对于那些经常需要调用本地数据库函数自定义SQL语句,或是喜欢自己优化SQL执行效率的开发者来说,iBatis是一个非常不错的选择。而得到广泛应用的开源企业架构SpringFramework,也很好的将其进行了集成,使得iBatis在 SpringFramework中的使用更加便利、快捷。开发者所要做的就是继承SpringFramework中提供的 SqlMapClientDaoSupport类即可。下面,我将自己的使用经验与大家分享一下:

1、SqlMapClientFactoryBean 的装配

SqlMapClientFactoryBean是SqlMapClientTemplate使用的基础,如果在

SpringFramework应用中没有装配SqlMapClientFactoryBean,那么SqlMapClientTemplate将不可用,报空指针错误。

Java代码

  1. <beanid="sqlMapClient"class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
  2. <propertyname="configLocation"value="/WEB-INF/sqlmap-config.xml"/>
  3. <propertyname="dataSource"ref="dataSource"/>
  4. <propertyname="lobHandler"ref="oracleLobHandler"/>
  5. bean>

2、继承使用SqlMapClientDaoSupport类

声明Java类:

Java代码

  1. ......
  2. import org.springframework.orm.ibatis.support.SqlMapClientDaoSupport;
  3. ......
  4. publicclass ReportDAOImpl extends SqlMapClientDaoSupport {
  5. ......
  6. }
  7. SpringFramework配置文件中装配Java类:
  8. "reportDao"class="com.test.dao.ReportDAOImpl">
  9. "sqlMapClient" ref="sqlMapClient"/>

SpringFramework配置文件中装配Java类:

3、使用SqlMapClientTemplate查询

Java代码:

当执行没有参数的查询时:

Java代码

  1. List result = getSqlMapClientTemplate().queryForList("TestSpace.qryTest");

"TestSpace"为iBatis SqlMap文件的命名空间;"qryTest"为iBatis SqlMap的查询方法id

当按照主键获取某条记录信息时:

Java代码

  1. Long id = new Long("2");
  2. Object resultObj = getSqlMapClientTemplate().queryForObject("TestSpace.getTest", id);

当按照某些条件查询时:

Java代码

  1. ObjectA objA = new ObjectA();
  2. objA.setParam1("test1");
  3. objA.setParam2("test2");
  4. ......
  5. List result = getSqlMapClientTemplate().queryForList("TestSpace.qryTestByParam", objA);

如果需要取4~40条数据:

List result = getSqlMapClientTemplate().queryForList("TestSpace.qryTestByParam", objA, 4, 40);

也可以返回Map

Java代码

  1. Map result = getSqlMapClientTemplate().queryForMap("TestSpace.qryTestByParam", objA, "MapKey");

4、使用SqlMapClientTemplate添加数据

Java代码:

  1. ObjectA objA = new ObjectA();

Java代码

  1. objA.setParam1("test1");
  2. objA.setParam2("test2");
  3. ......
  4. getSqlMapClientTemplate().insert("TestSpace.insertTest", objA);

5、使用SqlMapClientTemplate更新数据

Java代码:

Java代码

  1. ObjectA objA = new ObjectA();
  2. objA.setParam1("test1");
  3. objA.setParam2("test2");
  4. ......
  5. getSqlMapClientTemplate().update("TestSpace.updateTest", objA);

更新前20条记录:

Java代码

  1. getSqlMapClientTemplate().update("TestSpace.updateTest", objA, 20);

6、使用SqlMapClientTemplate删除数据

Java代码:

Java代码

  1. Long id = new Long("2");
  2. getSqlMapClientTemplate().delete("TestSpace.deleteTest", id);

转载于:https://www.cnblogs.com/mqws/p/6283012.html

详解iBaits中SqlMapClientTemplate的使用相关推荐

  1. 详解OpenCV中的Lucas Kanade稀疏光流单应追踪器

    详解OpenCV中的Lucas Kanade稀疏光流单应追踪器 1. 效果图 2. 源码 参考 这篇博客将详细介绍OpenCV中的Lucas Kanade稀疏光流单应追踪器. 光流是由物体或相机的运动 ...

  2. python操作目录_详解python中的文件与目录操作

    详解python中的文件与目录操作 一 获得当前路径 1.代码1 >>>import os >>>print('Current directory is ',os. ...

  3. python3中unicode怎么写_详解python3中ascii与Unicode使用

    这篇文章主要为大家详解python3中ascii与Unicode使用的相关资料,需要的朋友可以参考下# Auther: Aaron Fan ''' ASCII:不支持中文,1个英文占1个字节 Unic ...

  4. foreach php,详解PHP中foreach的用法和实例

    本篇文章介绍了详解PHP中foreach的用法和实例,详细介绍了foreach的用法,感兴趣的小伙伴们可以参考一下. 在PHP中经常会用到foreach的使用,而要用到foreach,就必须用到数组. ...

  5. python open 打开是什么类型的文件-详解Python中open()函数指定文件打开方式的用法...

    文件打开方式 当我们用open()函数去打开文件的时候,有好几种打开的模式. 'r'->只读 'w'->只写,文件已存在则清空,不存在则创建. 'a'->追加,写到文件末尾 'b'- ...

  6. python中list[1啥意思_详解Python中list[::-1]的几种用法

    本文主要介绍了Python中list[::-1]的几种用法,分享给大家,具体如下: s = "abcde" list的[]中有三个参数,用冒号分割 list[param1:para ...

  7. java 死锁 内存消耗_详解Java中synchronized关键字的死锁和内存占用问题

    先看一段synchronized 的详解: synchronized 是 java语言的关键字,当它用来修饰一个方法或者一个代码块的时候,能够保证在同一时刻最多只有一个线程执行该段代码. 一.当两个并 ...

  8. pythonnamedtuple定义类型_详解Python中namedtuple的使用

    namedtuple是Python中存储数据类型,比较常见的数据类型还有有list和tuple数据类型.相比于list,tuple中的元素不可修改,在映射中可以当键使用. namedtuple: na ...

  9. python停止线程池_详解python中Threadpool线程池任务终止示例代码

    需求 加入我们需要处理一串个位数(0~9),奇数时需要循环打印它:偶数则等待对应时长并完成所有任务:0则是错误,但不需要终止任务,可以自定义一些处理. 关键点 定义func函数处理需求 callbac ...

最新文章

  1. win10系统的“管理员”
  2. python搭积木_从零实现”搭积木式实现策略“的回测系统 part VI
  3. 小玩流媒体播放——HLS流媒体点播系统
  4. WPF中实现文件夹对话框(OpenFileDialog in WPF)
  5. win7重置密码的方法
  6. 手把手教你逼走员工的23种套路,大写的服!
  7. kafka配置文件server.properties
  8. 小红书发布声明:已对站内内容启动全面排查、整改
  9. 夏令时 DST (Daylight Saving Time) java中的夏令时。
  10. Ubuntu OpenCV 自定义环境变量 pkg-config / PKGCONFIGPATH
  11. linux命令行使用
  12. android shape的使用详解以及常用效果(渐变色、分割线、边框、半透明阴影效果等)...
  13. cad小插件文字刷_必备CAD插件大全,内含最全字体库
  14. maya中英文对照_maya2011中英文对照表
  15. 开源网络准入软件packetfence 部署心得-1
  16. 建表错误:ParseException line 1:55 cannot recognize input near ‘)‘ ‘rowformat‘ ‘delimited‘ in column type
  17. SWAN测试用例af-alg/rw-cert
  18. 计算机课题推荐人意见,课题申报书推荐人意见
  19. 【晒出你的第83行代码】《阿里巴巴Java开发手册》主要作者孤尽晒出入职第一年的代码...
  20. 人工智能——搜索策论2

热门文章

  1. kubernetest master 节点恢复灾备恢复操作指南
  2. Java有序表查找:折半查找、二分查找、差值查找和斐波那契查找
  3. 系列(七)—测试用例设计
  4. Java集合—Deque Stack
  5. PHP API接口签名验证
  6. flash 编程技巧应用 原创
  7. jQuery 基础学习笔记
  8. python 错误类型
  9. Tensorflow实战系列之五:
  10. [Mysql]备份同库中一张表的历史记录 insert into ..select