如何把iBatis注入到Spring中

application.xml配置:
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
  <property name="driverClassName" value="${jdbc.driverClassName}"/>
  <property name="url" value="${jdbc.url}"/>
  <property name="username" value="${jdbc.username}"/>
  <property name="password" value="${jdbc.password}"/>
</bean>
<context:property-placeholder location="jdbc.properties"/>
<bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
  <property name="configLocation" value="classpath:sqlmap-config.xml"/>
  <property name="dataSource" ref="dataSource"/>
</bean>
<bean id="sqlMapTestDao" class="com.dao.SqlMapTestDao">
  <property name="sqlMapClient" ref="sqlMapClient"></property>
</bean>


sqlmap-config.xml配置:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMapConfig PUBLIC "-//iBATIS.com//DTD SQL Map Config 2.0//EN" "http://www.ibatis.com/dtd/sql-map-config-2.dtd">
<sqlMapConfig>
  <settings useStatementNamespaces="true"/>
  <sqlMap resource="com/entity/Test.xml"/>
</sqlMapConfig>


Test.xml配置:
<sqlMap namespace="Test">
  <resultMap id="result" class="com.entity.Test">
    <result property="test1" column="TEST1" columnIndex="1"/>
    <result property="test2" column="TEST2" columnIndex="2"/>
  </resultMap>
  <select id="getTestByTest1" resultMap="result">
    select TEST.TEST1, TEST.TEST2 from TEST where TEST.TEST1 = #value#
  </select>
  <insert id="insertTest">
    insert into TEST (TEST1, TEST2) values (#test1#, #test2#)
  </insert>
</sqlMap>


Test.java配置
public class Test implements java.io.Serializable {
  private String test1;
  private String test2;
  // 忽略getter和setter方法
}


SqlMapTestDao.java配置
public class SqlMapTestDao extends SqlMapClientDaoSupport {
  //方法一
  public void getTestByTest1(String test1){
    Test test = (Test)getSqlMapClientTemplate()
      .queryForObject("getTestByTest1", test1);
    System.out.println("test1:"+test.getTest1());
  }
  //方法二
  public void insertAccount(Test test) throws DataAccessException {
    getSqlMapClientTemplate().update("insertTest ", test);
  }
  //方法三
  public void insertAccountTest(final Test test) throws DataAccessException {
    getSqlMapClientTemplate().execute(new SqlMapClientCallback() {
      public Object doInSqlMapClient(SqlMapExecutor executor) throws SQLException {
        executor.startBatch();
        executor.update("insertAccount", test);
        executor.update("insertAddress", test.getTest2());
        return executor.executeBatch();
      }
    });
  }
  //执行方法
  public static void main(String[] args) {
    BeanFactory factory = new ClassPathXmlApplicationContext("applicationContext.xml");
    SqlMapTestDao dao = (SqlMapTestDao)factory.getBean("sqlMapTestDao");
    dao.getTestByTest1("8");
  }
}

你可能感兴趣的:(spring)