Spring与myibatis的整合

1, 采用MapperFactoryBean的方式,不用写myibatis映射文件,采用注解方式提供sql语句
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> 
      <property name="dataSource" ref="dataSource" /> 
</bean>
<!--创建数据映射器,数据映射器必须为接口-->
<bean id="userMapper" class="org.mybatis.spring.mapper.MapperFactoryBean"> 
      <property name="mapperInterface" value="com.xxt.ibatis.dbcp.dao.UserMapper" /> 
      <property name="sqlSessionFactory" ref="sqlSessionFactory" /> 
</bean>
<!--将映射器注入dao中 -->
<bean id="userDaoImpl2" class="com.xxt.ibatis.dbcp.dao.impl.UserDaoImpl2">
      <property name="userMapper" ref="userMapper"/>
</bean>
<!--数据映射器UserMapper的代码-->
public interface UserMapper {
        @Select("SELECT * FROM user WHERE id = #{userId}") 
        User getUser(@Param("userId") long id); 
}
<!--调用映射器-->
public interface UserDao {
       public User getUserById(User user);
}
public class UserDaoImpl2 implements UserDao {
       private UserMapper userMapper; 

       public void setUserMapper(UserMapper userMapper) { 
           this.userMapper = userMapper; 
       }  

       public User getUserById(User user) {
          return userMapper.getUser(user.getId()); 
       }
}
2, 采用SqlSessionDaoSupport与SqlSessionTemplate方式
SqlSessionDaoSupport是一个抽象的支持类,用来为你提供SqlSession。调用getSqlSession()方法你会得到一个SqlSessionTemplate
public class UserMenuDaoImpl2 extends SqlSessionDaoSupport implements IUserMenuDao {
	@Override
	public List<UserMenu> getUserMenu() {
		Map<String, Object> map = new HashMap<String, Object>();
		map.put("user_id", 999);
		map.put("menu_id", 33);
		getSqlSession().selectList("UserMenuMapper1.getUserMenu", map);
	}
}
SqlSessionDaoSupport 这个类需要一个sqlSessionFactory或sqlSessionTemplate属性来设置
<bean id="userMenuDao2" class="com.jingc.busi.common.mapper.UserMenuDaoImpl2">
	<property name="sqlSessionFactory" ref="sqlSessionFactory"></property>
</bean>
SqlSessionTemplate实现了SqlSession
SqlSessionTemplate对象可以使用SqlSessionFactory作为构造方法的参数来创建
<bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">
	<constructor-arg index="0" ref="sqlSessionFactory" />
</bean>
这个bean现在可以直接注入到DAO bean中。你需要在bean中添加一个SqlSession属性,就像下面的代码:
@Repository("userMenuDao")
public class UserMenuDaoImpl implements IUserMenuDao {
	@Resource
	private SqlSession sqlSession;
	@Override
	public List<UserMenu> getUserMenu() {
		Map<String, Object> map = new HashMap<String, Object>();
		map.put("user_id", 999);
		map.put("menu_id", 33);
		List<UserMenu> userMenu = sqlSession.selectList(
				"UserMenuMapper1.getUserMenu", map);
		System.out.println(userMenu.size());
		System.out.println(userMenu.get(0).getReserved1());
		sqlSession.insert("UserMenuMapper1.insert1");
		sqlSession.insert("UserMenuMapper1.insert2");
		return null;
	}
}
http://wenku.baidu.com/link?url=6DK8hiDnCFJ5evsOUbDHpc4tMhLsKTBWW06nCIBUX9t9Gl1DhCnkXtGyVocJOfR_g4FqebhlonxcGK-FB-Sq6Eyz8GalIvCW5bGKntK_CPa

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值