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);

详解iBaits中SqlMapClientTemplate的使用的更多相关文章

  1. jQuery:详解jQuery中的事件(二)

    上一篇讲到jQuery中的事件,深入学习了加载DOM和事件绑定的相关知识,这篇主要深入讨论jQuery事件中的合成事件.事件冒泡和事件移除等内容. 接上篇jQuery:详解jQuery中的事件(一) ...

  2. 图文详解Unity3D中Material的Tiling和Offset是怎么回事

    图文详解Unity3D中Material的Tiling和Offset是怎么回事 Tiling和Offset概述 Tiling表示UV坐标的缩放倍数,Offset表示UV坐标的起始位置. 这样说当然是隔 ...

  3. 【转】详解C#中的反射

    原帖链接点这里:详解C#中的反射   反射(Reflection) 2008年01月02日 星期三 11:21 两个现实中的例子: 1.B超:大家体检的时候大概都做过B超吧,B超可以透过肚皮探测到你内 ...

  4. 详解Webwork中Action 调用的方法

    详解Webwork中Action 调用的方法 从三方面介绍webwork action调用相关知识: 1.Webwork 获取和包装 web 参数 2.这部分框架类关系 3.DefaultAction ...

  5. 【转】详解JavaScript中的this

    ref:http://blog.jobbole.com/39305/ 来源:foocoder 详解JavaScript中的this JavaScript中的this总是让人迷惑,应该是js众所周知的坑 ...

  6. 深入详解SQL中的Null

    深入详解SQL中的Null NULL 在计算机和编程世界中表示的是未知,不确定.虽然中文翻译为 “空”, 但此空(null)非彼空(empty). Null表示的是一种未知状态,未来状态,比如小明兜里 ...

  7. java 乱码详解_jsp中pageEncoding、charset=UTF -8"、request.setCharacterEncoding("UTF-8")

    http://blog.csdn.net/qinysong/article/details/1179480 java 乱码详解__jsp中pageEncoding.charset=UTF -8&quo ...

  8. 详解Objective-C中委托和协议

    Objective-C委托和协议本没有任何关系,协议如前所述,就是起到C++中纯虚类的作用,对于“委托”则和协议没有关系,只是我们经常利用协议还实现委托的机制,其实不用协议也完全可以实现委托. AD: ...

  9. 举例详解Python中的split()函数的使用方法

    这篇文章主要介绍了举例详解Python中的split()函数的使用方法,split()函数的使用是Python学习当中的基础知识,通常用于将字符串切片并转换为列表,需要的朋友可以参考下   函数:sp ...

随机推荐

  1. net core 部署到windows 服务

    NSSM是一个服务封装程序,它可以将普通exe程序封装成服务,使之像windows服务一样运行.同类型的工具还有微软自己的srvany,不过nssm更加简单易用,并且功能强大.它的特点如下: 支持普通 ...

  2. 关于eclipse配置tomcat时,console打印成功消息,但是不能成功访问页面的问题

    解决方法:在首选项中配置tomcat后,为项目添加runtime后,在左下方的选项中,选择中间一项即可 重启发布,就可以正常访问了

  3. 业务线--node中间层做一个透传的项目

    1,node中间层总结 1,ejs引入vue的js,路由层(直接透传,自定义行的),比较浅层的一层 中间件的引入 ? ) { // 与rd约定,接口成功返回code===0,其余为失败 console ...

  4. 使用CSS选择器实现选择指定子节点

    HTML CSS 具体效果 其他事例 事例图片来自MDN:https://developer.mozilla.org/zh-CN/docs/Web/CSS/:nth-child

  5. Scrapy 框架

    1. 基本使用 1.1 定义及安装 为了爬取网站数据,提取结构性数据而编写的应用框架 scrapy组件工作流程 引擎首先会将爬虫文件中的起始url获取,并且提交到调度器中.如果需要从url中下载数据, ...

  6. JavaScript的几种克隆(clone)方式【转】

    一:在Javascript里,如果克隆对象是基本类型,我们直接赋值就可以了: var sStr = "kingwell"; var cStr = sStr; alert(cStr) ...

  7. 写一个带文本菜单的程序,菜单项如下 (1) 取五个数的和 (2) 取五个数的平均值 (X) 退出。

    问题: 写一个带文本菜单的程序,菜单项如下(1)    取五个数的和 (2)     取五个数的平均值(X)    退出. 由用户做一个选择, 然后执行相应的功能.当用户选择退出时程序结束. 实现: ...

  8. Angularjs判断页面是否已经渲染结束(动态给标签长度)

    相信大家都会碰到这样的问题.页面循环li.但是因为个数不知道.没有办法给li设置固定宽度.那么这时就需要动态计算数据长度并动态改变li的宽度 <!--周边信息--> <div cla ...

  9. “扩展域”与"边带权"的并查集

    https://www.luogu.org/problemnew/show/P1196 银河英雄传说 #include<bits/stdc++.h> using namespace std ...

  10. __x__(40)0909第五天__表格 table 的 css 样式 美化

    如果就向下面的代码那样,不写 tbody , 则浏览器自添加 tbody , 并将所有的 tr 移入 tbody 意味着 tr 并非 table 的子元素,而是 tbody 的子元素. 所以 以后编写 ...