整合思路

1、SqlSessionFactory对象应该放到spring容器中作为单例存在。
2、传统dao的开发方式中,应该从spring容器中获得sqlsession对象。
3、Mapper代理形式中,应该从spring容器中直接获得mapper的代理对象。
4、数据库的连接以及数据库连接池事务管理都交给spring容器来完成。

整合步骤

  1. 创建一个java工程。
  1. 导入jar包。(课前资料中mybatis与spring整合所有包)
  1. mybatis的配置文件sqlmapConfig.xml
  1. 编写Spring的配置文件
  1. 数据库连接及连接池
  1. sqlsessionFactory对象,配置到spring容器中
  1. 编写Spring的配置文件
  1. 复制jdbc.properties配置文件到新工程
  1. 复制log4j.properties配置文件到新工程

Dao开发

1.传统Dao开发

  1. public class UserDaoImpl extends SqlSessionDaoSupport implements UserDao {
  2. @Override
  3. public User getUserById(Integer id) {
  4. SqlSession sqlSession = super.getSqlSession();
  5. //查询用户
  6. User user = sqlSession.selectOne("user.getUserById", id);
  7. //不能关闭SqlSession
  8. //sqlSession.close();
  9. return user;
  10. }
  11. @Override
  12. public List<User> getUserByUserName(String name) {
  13. SqlSession sqlSession = super.getSqlSession();
  14. List<User> list = sqlSession.selectList("user.getUserByName", name);
  15. //不能关闭SqlSession
  16. return list;
  17. }
  18. @Override
  19. public void insertUser(User user) {
  20. SqlSession sqlSession = super.getSqlSession();
  21. sqlSession.insert("user.insertUser", user);
  22. //不用手动提交事务,交给spring
  23. }
  24. }
  1. 在applicationContext.xml中配置UserDaoImpl实现类 ```
  1. 6. 编写测试类,新建单完测试类

public class UserDaoTest { private ApplicationContext applicationContext;

  1. @Before
  2. public void init(){
  3. applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
  4. }
  5. @Test
  6. public void testGetUserById() {
  7. UserDao userDao = applicationContext.getBean(UserDao.class);
  8. User user = userDao.getUserById(10);
  9. System.out.println(user);
  10. }
  11. ………省略其它方法

}

  1. ## 2.Mapper代理模式开发Dao
  2. 3. 配置Mapper
  3. 1. 单个接口配置MapperFactoryBean
  1. 2. 配置包扫描器
  1. 4. 测试

public class UserMapperTest { private ApplicationContext applicationContext;

  1. @Before
  2. public void init(){
  3. applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
  4. }
  5. @Test
  6. public void testGetUserById() {
  7. UserMapper userMapper = applicationContext.getBean(UserMapper.class);
  8. User user = userMapper.getUserById(10);
  9. System.out.println(user);
  10. }

}

```