发布时间 : 星期二 文章SpringMybatis整合文档更新完毕开始阅读6d46b431ee06eff9aef80783
} public T get(T entity) throws DataAccessException; public List
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 BaseMapperDaoImpl
@Inject
public BaseMapperDaoImpl(SqlSessionFactory sqlSessionFactory) { }
private Class extends BaseSqlMapper>mapperClass;
publicvoid setMapperClass(Class extends BaseSqlMapper>
super(sqlSessionFactory);
mapperClass) {
}
this.mapperClass = mapperClass;
private BaseSqlMapper
publicboolean add(T entity) throws Exception { }
publicboolean edit(T entity) throws Exception { }
public T get(T entity) throws Exception { }
public List
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 BaseMapperDao
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的方法不够用,可以进行扩展。