ibatis 使用

1、SqlMapClientFactoryBean 的装配 
    SqlMapClientFactoryBean是SqlMapClientTemplate使用的基础,如果在 
    SpringFramework应用中没有装配SqlMapClientFactoryBean,那么SqlMapClientTemplate将不可用,报空指针错误。

    <bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
        <property name="configLocation" value="/WEB-INF/sqlmap-config.xml"/> <!-- iBatis sqlmap config 文件位置 -->
        <property name="dataSource" ref="dataSource"/> <!-- 在SpringFramework配置文件中使用的数据源 -->
        <property name="lobHandler" ref="oracleLobHandler"/> <!-- 如果需要读写Lob字段,需要注入在SpringFramework配置文件中配置好的Handler,这里是Oracle的数据库 -->
    </bean>

2、继承使用SqlMapClientDaoSupport类 
声明Java类:

import org.springframework.orm.ibatis.support.SqlMapClientDaoSupport;
    ......
    public class ReportDAOImpl extends SqlMapClientDaoSupport {
        ......
    }  

SpringFramework配置文件中装配Java类:

<bean id="reportDao" class="com.test.dao.ReportDAOImpl">
        <property name="sqlMapClient" ref="sqlMapClient"/> <!-- 装配SqlMapClientFactoryBean -->
    </bean>  

3、使用SqlMapClientTemplate查询 
Java代码: 
    当执行没有参数的查询时:

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

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

当按照某些条件查询时:

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

4、使用SqlMapClientTemplate添加数据 
Java代码: 
    ObjectA objA = new ObjectA();

 objA.setParam1("test1");
    objA.setParam2("test2");
    ......
    getSqlMapClientTemplate().insert("TestSpace.insertTest", objA);

5、使用SqlMapClientTemplate更新数据 
Java代码:

ObjectA objA = new ObjectA();
    objA.setParam1("test1");
    objA.setParam2("test2");
    ......
    getSqlMapClientTemplate().update("TestSpace.updateTest", objA);

6、使用SqlMapClientTemplate删除数据 
Java代码:

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

时间: 2024-08-06 11:34:31

ibatis 使用的相关文章

通过maven test 报org.apache.ibatis.binding.BindingException: Invalid bound statement

背景 直接使用eclipse工具去执行,没有问题,通过testng.xml去执行,没有问题,但通过mvn clean test执行,就报错,提示org.apache.ibatis.binding.BindingException: Invalid bound statement 解决方法 首先先肯定的是:mybatis的配置是没有问题,因为eclipse可以正常执行: 在eclipse中把mapper的xml文件放到src代码目录下是可以一起打包进classes的,而maven去编译的时候不会,

hibernate和ibatis对比

Hibernate是当前最流行的O/R mapping框架,iBATIS是另外一种优秀的O/R mapping框架. Hibernate对数据库结构提供了较为完整的封装,Hibernate的O/R Mapping实现了POJO和数据库表之间的映射,以及SQL的自动生成和执行.程序员往往只需定义好了POJO到数据库表的映射关系,即可通过Hibernate提供的方法完成持久层操作.Hibernate/OJB会根据制定的存储逻辑,自动生成对应的SQL并调用JDBC接口加以执行. 而iBATIS的着力点

iBatis系列之三

iBatis和Hibernate最大差别就是在于iBatis没有严格的和具体的表做关联:而是将结果集和DAO做关联. iBatis的SqlConfig.xml配置一个properties文件,其实可以完全在SqlConfig中配置相应的数据库信息,但是有了一个properties文件之后有一个好处:如果是从生产环境切换到测试环境,只需要修改一处"properties"节点即可. DAO模式就是通过生命一个DAO的接口形式来隐藏数据库层具体的实现:DAO模式提供的规则(接口的方法以及方法

spring2.5整合ibatis

SqlMapClient对象 这个对象是iBatis操作数据库的接口(执行CRUD等操作),它也可以执行事务管理等操作.这个类是我们使用iBATIS的最主要的类. <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/s

Mybatis与Ibatis区别

相信很多关键词在运用ibatis2.x的兄弟并没有通过ibatis的xml映射文件来完成目标间的联系映射.本来也的确没有必要那么做,由于ibatis2.x采用的是"嵌套查询"的方法将目标之间的联系通过查询句子的直接拼装来完成,其作用和在DAO或Service中自行封装是相同的. 不过这种方法存在"N+1查询疑问". 概括地讲,N+1查询疑问可所以这样导致的: ? 你执行了一个独自的SQL句子来获取成果列表(即是+1). ? 对回来的每条记录,你执行了一个查询句子来为

Mybatis缓存报错org.apache.ibatis.exceptions.PersistenceException

错误信息如下: org.apache.ibatis.exceptions.PersistenceException: ### Error querying database. Cause: org.apache.ibatis.cache.CacheException: Error deserializing object. Cause: java.lang.ClassNotFoundException: com.kytsoft.model.Adminlink ### Cause: org.apa

ibatis中使用缓存

简单在ibatis中使用cache 首先设置SqlMapConfig.xml中<settings/>节点的属性cacheModelsEnabled="true"    然后在具体sqlmap文件中书写<cacheModel>    <cacheModel id="product-cache" type="LRU">       <flushInterval hours="24"/>

MyBatis3.4.0以上的分页插件错误:Could not find method on interface org.apache.ibatis.executor.statement.StatementHandler named prepare. Cause: java.lang.NoSuchMethodException: org.apache.ibatis.executor.stateme

错误: Could not find method on interface org.apache.ibatis.executor.statement.StatementHandler named prepare. Cause: java.lang.NoSuchMethodException: org.apache.ibatis.executor.statement.StatementHandler.prepare(java.sql.Connection)] with root cause 问题

spring+ibatis环境搭建

简单的spring+ibatis入门实例:ibatis是一种半自动化的持久层框架,它介于JDBC和hibernate之间,使用比较灵活. 一:目录结构 二:需要导入的jar包: 所有的第三方jar包都需要加上,spring.jar.ibatis.-2.3.3.720.jar.sqlijdbc.jar.oscache-2.4.jar.commons-pool-1.3.jar.commons-dbcp-1.4.jar,mysql-connector-5.0.5.jar.不然运行的时候都要报错,这里需

Mybatis/Ibatis,数据库操作的返回值

该问题,我百度了下,根本没发现什么有价值的文章:还是看源代码(详见最后附录)中的注释,最有效了!insert,返回值是:新插入行的主键(primary key):需要包含<selectKey>语句,才会返回主键,否则返回值为null.update/delete,返回值是:更新或删除的行数:无需指明resultClass:但如果有约束异常而删除失败,只能去捕捉异常.queryForObject,返回的是:一个实例对象或null:需要包含<select>语句,并且指明resultMap