在spring中使用SqlMapClientTemplate操作数据库

SqlMapClientTemplate是SqlMapClient的封装类。

SqlMapClient是ibatis的。但SpringFramework,也很好的将其进行了集成,我们要做的就是继承SpringFramework中提供的SqlMapClientDaoSupport类即可。
在springFramework的org.springframework.orm.ibatis组件中。
SqlMapClient中包含着session的管理. 
SqlMapClientTemplate用于session的封装,以及异常的捕捉. 
所以按照以上的推断来说.应该尽量使用SqlMapClientTemplate. 
保证session以及Exception的正常以及统一.(以上不懂,看下面才是正解)

1.使用SqlMapClientTemplate时除了基本的spring和springmvc包以外另外还得加两个包(maven添加) pom.xml:


	org.springframework
	spring-orm
	3.1.0.RELEASE


	org.apache.ibatis
	ibatis
	2.3.2.715
2.SqlMapClientFactoryBean 的装配 applicationContext.xml:

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



	
	
		
			classpath:SqlMapConfig.xml
		
	
3.继承使用SqlMapClientDaoSupport类(有多种方法,只用其一) java类:

第一步:做一个基础类

package org.demo.dao;
import org.springframework.orm.ibatis.support.SqlMapClientDaoSupport;
public class BaseDAO extends SqlMapClientDaoSupport{
}
第二步:DAO接口

package org.demo.dao;

import org.demo.model.EmpModel;

/**
 * <一句话功能简述>

* <类功能详细描述> * @see [相关类/方法] * @since [产品/模块版本] */ public interface EmpDAO { /** * 根据id查找员工

* <方法功能详细描述> * @param id * @return */ EmpModel findById(int id); }

第三步:DAO的实现,使用SqlMapClientTemplate查询
package org.demo.dao.impl;

import org.demo.dao.BaseDAO;
import org.demo.dao.EmpDAO;
import org.demo.model.EmpModel;

public class EmpDAOImpl extends BaseDAO implements EmpDAO{

	/**
	 * @see org.demo.dao.EmpDAO#findById(int)
	 */
	@Override
	public EmpModel findById(int id) {
		//"EMP"为iBatis SqlMap文件的命名空间;
		//"findById"为iBatis SqlMap的查询方法;
		//"id"为查询条件
		return (EmpModel) getSqlMapClientTemplate().queryForObject("EMP.findById",id);
	}
}

4.映射文件 EMP.xml:



 



	
		
		
		
		
	
	
	  
5.配置SqlMapConfig.xml:





	
		
	
	
 
6.指定接口 Spring-beans.xml (也可直接将bean放入applicationContext.xml中)



	
		
	
	
	
	
7.javaBean:

package org.demo.model;

public class EmpModel {
	private String name;
	private int age;
	private String gender;
	private String password;
	
	//get\set\toString...
	
}
8.mysql.sql

DROP TABLE IF EXISTS EMP;
CREATE TABLE EMP (
	ID int(16) NOT NULL AUTO_INCREMENT ,
	NAME varchar(30) NULL ,
	AGE int(4) NULL ,
	GENDER varchar(4) NULL DEFAULT 'F' ,
	PASSWORD varchar(30) NULL ,
	PRIMARY KEY (ID)
);
9.测试:

import org.apache.log4j.Logger;
import org.demo.dao.EmpDAO;
import org.demo.model.EmpModel;
import org.junit.Before;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.mchange.v2.c3p0.ComboPooledDataSource;

public class TestA {
	private static final Logger logger = Logger.getLogger(TestA.class);
	ApplicationContext ac;

	
	@Before
	public void init() {
		ac = new ClassPathXmlApplicationContext("applicationContext.xml");
	}
	
	@Test
	public void testEmpDAO(){
		EmpDAO empDAO = ac.getBean("empDAO",EmpDAO.class);
		EmpModel emp = empDAO.findById(1);
		logger.info("emp:"+emp);	
	}
}

** 成功!

文件结构:

在spring中使用SqlMapClientTemplate操作数据库_第1张图片

其它操作:

//查询 返回一个对象
Object resultObj = getSqlMapClientTemplate().queryForObject("命名空间.方法名", 参数...);

//查询 返回List集合
List result = getSqlMapClientTemplate().queryForList("命名空间.方法名", 参数...);

//查询 返回Map集合
Map result = getSqlMapClientTemplate().queryForMap("命名空间.方法名", 参数...);

//插入 
getSqlMapClientTemplate().insert("命名空间.方法名", 参数...);

//更新
getSqlMapClientTemplate().update("命名空间.方法名", 参数...);

//删除
getSqlMapClientTemplate().delete("命名空间.方法名", 参数...);




你可能感兴趣的:(spring+mybatis)