SpringMybatis整合文档 联系客服

发布时间 : 星期二 文章SpringMybatis整合文档更新完毕开始阅读6d46b431ee06eff9aef80783

} public T get(T entity) throws DataAccessException; public List getList(T entity) throws DataAccessException; 该接口继承SqlMapper接口,但是该接口没有MyBatis的mapper实现。需要我们自己的业务mapper继承这个接口,完成上面的方法的实现。 看看继承SqlSessionTemplate的BaseMapperDao代码:

package com.hoo.dao.impl;

import java.util.List; import javax.inject.Inject;

import org.apache.ibatis.session.SqlSessionFactory; import org.mybatis.spring.SqlSessionTemplate; import org.springframework.stereotype.Repository; import com.hoo.dao.BaseMapperDao; import com.hoo.mapper.BaseSqlMapper; /**

* function:运用SqlSessionTemplate封装Dao常用增删改方法,可以进行扩展

* @authorhoojo

* @createDate 2011-4-14 下午12:22:07 * @file BaseMapperDaoImpl.java * @package com.hoo.dao.impl * @project MyBatisForSpring

* @blog http://blog.csdn.net/IBM_hoojo * @email hoojo_@126.com * @version 1.0 */

@SuppressWarnings(\) @Repository

publicclass BaseMapperDaoImplextends SqlSessionTemplate implements BaseMapperDao {

@Inject

public BaseMapperDaoImpl(SqlSessionFactory sqlSessionFactory) { }

private ClassmapperClass;

publicvoid setMapperClass(Class

super(sqlSessionFactory);

mapperClass) {

}

this.mapperClass = mapperClass;

private BaseSqlMapper getMapper() { }

publicboolean add(T entity) throws Exception { }

publicboolean edit(T entity) throws Exception { }

public T get(T entity) throws Exception { }

public List getAll() throws Exception { }

publicboolean remove(T entity) throws Exception {

boolean flag = false; try {

this.getMapper().remvoe(entity); flag = true;

returnthis.getMapper().getList(null); returnthis.getMapper().get(entity); boolean flag = false; try { }

return flag;

this.getMapper().edit(entity); flag = true; flag = false; throw e;

boolean flag = false; try { }

return flag;

this.getMapper().add(entity); flag = true; flag = false; throw e;

returnthis.getMapper(mapperClass);

} catch (Exception e) {

} catch (Exception e) {

} } } catch (Exception e) { } return flag; flag = false; throw e; 上面这个类继承了SqlSessionTemplate,这个类需要提供一个构造函数。这里提供的是SqlSessionFactory的构造函数,通过该函数注入SqlSessionFactory即可完成数据库操作;

例外的是这个类还有一个关键属性mapperClass,这个class需要是BaseSqlMapper接口或是子接口,然后通过SqlSessionTemplate模板获得当前设置的Class的Mapper对象,完成数据库操作。 该类的测试代码:

@ContextConfiguration(\) publicclass BaseMapperDaoImplTest extends AbstractJUnit38SpringContextTests { }

@Inject

private BaseMapperDaodao;

publicvoid init() { }

publicvoid testGet() throws Exception { }

publicvoid testAdd() throws Exception { }

init();

Company c = new Company(); c.setAddress(\北京中关村\); c.setName(\);

System.out.println(dao.add(c)); init();

Company c = new Company(); c.setCompanyId(4);

System.out.println(dao.get(c));

dao.setMapperClass(CompanyMapper.class);

一般情况下,你可以在一个Dao中注入BaseMapperDao,紧跟着需要设置MapperClass。只有设置了MapperClass后,BaseMapperDao才能获取对应mapper,完成相关的数据库操作。当然你可以在这个Dao中将SqlSessionTemplate、SqlSession暴露出来,当BaseMapperDao的方法不够用,可以进行扩展。