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代码
<bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
<property name="configLocation" value="/WEB-INF/sqlmap-config.xml"/>
<property name="dataSource" ref="dataSource"/>
<property name="lobHandler" ref="oracleLobHandler"/>
bean>
索引自:http://developer.51cto.com/art/201103/251284.htm
2、继承使用SqlMapClientDaoSupport类
声明Java类:
Java代码
......
import org.springframework.orm.ibatis.support.SqlMapClientDaoSupport;
......
public class ReportDAOImpl extends SqlMapClientDaoSupport {
......
}
SpringFramework配置文件中装配Java类:
"reportDao" class="com.test.dao.ReportDAOImpl">
"sqlMapClient" ref="sqlMapClient"/>
SpringFramework配置文件中装配Java类:
3、使用SqlMapClientTemplate查询
Java代码:
当执行没有参数的查询时:
Java代码
List result = getSqlMapClientTemplate().queryForList("TestSpace.qryTest");
"TestSpace"为iBatis SqlMap文件的命名空间;"qryTest"为iBatis SqlMap的查询方法id
当按照主键获取某条记录信息时:
Java代码
Long id = new Long("2");
Object resultObj = getSqlMapClientTemplate().queryForObject("TestSpace.getTest", id);
当按照某些条件查询时:
Java代码
ObjectA objA = new ObjectA();
objA.setParam1("test1");
objA.setParam2("test2");
......
List result = getSqlMapClientTemplate().queryForList("TestSpace.qryTestByParam", objA);
如果需要取4~40条数据:
List result = getSqlMapClientTemplate().queryForList("TestSpace.qryTestByParam", objA, 4, 40);
也可以返回Map
Java代码
Map result = getSqlMapClientTemplate().queryForMap("TestSpace.qryTestByParam", objA, "MapKey");
4、使用SqlMapClientTemplate添加数据
Java代码:
ObjectA objA = new ObjectA();
Java代码
objA.setParam1("test1");
objA.setParam2("test2");
......
getSqlMapClientTemplate().insert("TestSpace.insertTest", objA);
5、使用SqlMapClientTemplate更新数据
Java代码:
Java代码
ObjectA objA = new ObjectA();
objA.setParam1("test1");
objA.setParam2("test2");
......
getSqlMapClientTemplate().update("TestSpace.updateTest", objA);
更新前20条记录:
Java代码
getSqlMapClientTemplate().update("TestSpace.updateTest", objA, 20);
6、使用SqlMapClientTemplate删除数据
Java代码:
Java代码
Long id = new Long("2");
getSqlMapClientTemplate().delete("TestSpace.deleteTest", id);
1、SqlMapClientFactoryBean 的装配
SqlMapClientFactoryBean是SqlMapClientTemplate使用的基础,如果在
SpringFramework应用中没有装配SqlMapClientFactoryBean,那么SqlMapClientTemplate将不可用,报空指针错误。
Java代码
<bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
<property name="configLocation" value="/WEB-INF/sqlmap-config.xml"/>
<property name="dataSource" ref="dataSource"/>
<property name="lobHandler" ref="oracleLobHandler"/>
bean>
索引自:http://developer.51cto.com/art/201103/251284.htm
2、继承使用SqlMapClientDaoSupport类
声明Java类:
Java代码
......
import org.springframework.orm.ibatis.support.SqlMapClientDaoSupport;
......
public class ReportDAOImpl extends SqlMapClientDaoSupport {
......
}
SpringFramework配置文件中装配Java类:
"reportDao" class="com.test.dao.ReportDAOImpl">
"sqlMapClient" ref="sqlMapClient"/>
SpringFramework配置文件中装配Java类:
3、使用SqlMapClientTemplate查询
Java代码:
当执行没有参数的查询时:
Java代码
List result = getSqlMapClientTemplate().queryForList("TestSpace.qryTest");
"TestSpace"为iBatis SqlMap文件的命名空间;"qryTest"为iBatis SqlMap的查询方法id
当按照主键获取某条记录信息时:
Java代码
Long id = new Long("2");
Object resultObj = getSqlMapClientTemplate().queryForObject("TestSpace.getTest", id);
当按照某些条件查询时:
Java代码
ObjectA objA = new ObjectA();
objA.setParam1("test1");
objA.setParam2("test2");
......
List result = getSqlMapClientTemplate().queryForList("TestSpace.qryTestByParam", objA);
如果需要取4~40条数据:
List result = getSqlMapClientTemplate().queryForList("TestSpace.qryTestByParam", objA, 4, 40);
也可以返回Map
Java代码
Map result = getSqlMapClientTemplate().queryForMap("TestSpace.qryTestByParam", objA, "MapKey");
4、使用SqlMapClientTemplate添加数据
Java代码:
ObjectA objA = new ObjectA();
Java代码
objA.setParam1("test1");
objA.setParam2("test2");
......
getSqlMapClientTemplate().insert("TestSpace.insertTest", objA);
5、使用SqlMapClientTemplate更新数据
Java代码:
Java代码
ObjectA objA = new ObjectA();
objA.setParam1("test1");
objA.setParam2("test2");
......
getSqlMapClientTemplate().update("TestSpace.updateTest", objA);
更新前20条记录:
Java代码
getSqlMapClientTemplate().update("TestSpace.updateTest", objA, 20);
6、使用SqlMapClientTemplate删除数据
Java代码:
Java代码
Long id = new Long("2");
getSqlMapClientTemplate().delete("TestSpace.deleteTest", id);
发表评论
-
java验证字符串中是否包含数字,对数字的操作
2016-03-15 11:01 9489在javascript中有一个方法 ... -
jdk7 Collections.sort()方法报非法参数异常
2016-03-03 18:57 12064JDK7的Comparison method violates ... -
log4j.properties配置详解
2016-01-18 16:50 1281Log4J的配置文件(Configuration File)就 ... -
Java 日期时间 Date类型,long类型,String类型表现形式的转换
2015-12-24 17:35 3276Java 日期时间 Date类型,long类型,String类 ... -
Java多线程-工具篇-BlockingQueue
2015-11-24 16:13 985Java多线程-工具篇-Block ... -
Java 实例 - 队列(Queue)入门用法
2015-11-23 17:27 2003队列是一种特殊的线性表,它只允许在表的前端进行删除操作,而在表 ... -
Java中序列化的serialVersionUID作用
2015-11-13 14:13 4819Java序列化是将一个对象 ... -
java的序列化和反序列化
2015-10-27 19:48 1118Java基础学习总结——Jav ... -
java中volatile关键字的含义
2015-08-12 20:10 755java中volatile关键字的含 ... -
Java读写文件中文乱码问题
2015-07-20 17:49 2965问题:在用Java程序进行读写含中文的txt文件时,经常会出现 ... -
String类中split方法的使用
2015-07-02 14:39 984String类中split方法的使用 split 方法:将一个 ... -
PreparedStatement防止SQL注入
2015-04-11 16:27 2792一条效率差的sql语句,足以毁掉整个应用. Stateme ... -
Session的生命周期
2015-04-11 11:58 914我们已经知道,Session是在用户第一次访问网 ... -
JAVA多线程和并发基础
2015-04-11 11:58 770JAVA多线程和并发基础 ... -
Java中equals()与hashCode()方法详解
2015-04-08 16:19 877一.equals()方法详解 equals()方法在o ... -
json数据后台处理
2015-03-30 16:05 793JAVA解析JSON问题,怎么解析,急!! String j ... -
java判断list为空
2015-01-30 15:25 3951java判断list为空 if(null == list | ... -
httpclient使用实践
2015-01-09 17:09 1343httpclient是什么这里不再详述(可参考最下方网址);直 ... -
java反射获取属性和方法
2015-01-09 11:12 3106反射的应用一般是要用到某些特殊类的属性和方法,无论是一般方法还 ... -
java中int 转String位数不够前面补零
2015-01-08 21:53 19937java 中int 转String位数不够前面补零 Stri ...
相关推荐
最近想在最新的Spring5.0中集成ibatis(不是mybatis),发现已经不在支持SqlmapClientTemplate和SqlmapClientFactoryBean,于是搞了这个工具jar来进行支持如下配置 ...
C#中iBatis连接mySQL使用的DLL
ibatis 相关使用文档及安装包ibatis 相关使用文档及安装包
ibatis简易使用ibatis简易使用ibatis简易使用
struts2+spring+ibatis 项目 入门使用 CRUD
ibatis中使用安全的拼接语句,动态查询,大于、小于、等于.doc
IBatis.Net详细使用手册
iBATIS缓存的使用方法
ibatis2.0中文API ibatis2.0中文API ibatis2.0中文API 一对多 多对一详解,属性设置详解,解决方案详解,ibatis2.0核心API
ibatis教程 主要是对这个软件的入门的介绍和如何加载和使用
ibatis学习 ibatis总结 ibatis ibatis ibatis
ibatis官方中文文档.rar包含ibatis官方中文文档及使用说明
ibatis 使用手册:ibatis 开发指南、ibatis sql maps、ibatis sql maps 入门教程。
ibatis 拼接字符串
学会ibatis 中sqlMap配置
ibatis 乱码解决 ibatis乱码 gbk iso_8859_1 乱码
ibatis资料ibatis资料ibatis资料ibatis资料ibatis资料ibatis资料ibatis资料ibatis资料ibatis资料
iBatis.Net详细使用手册,好东西共享下。
ibatis3.0中in的用法ibatis3.0中in的用法ibatis3.0中in的用法ibatis3.0中in的用法
Ibatis3,手册,Ibatis3手册,Ibatis3使用手册,Ibatis3参考手册