spring和mybatis整合

整合思路

需要spring通过单利方式管理sqlSessionFactory
spring和mybatis整合生成代理对象,使用sqlSessionFactory创建sqlsession(自动完成)
持久层mapper需要有spring进行管理

创建新工程

jar包:
mybatis3.2.7
spring3.2.0
mybatis-spring-1.2.2(mybatis和spring的整合包)

工程结构

spring和mybatis整合_第1张图片
2016-11-26_133516.png

Spring配置文件:
在classpath下创建applicationContext.xml,定义数据库链接池、SqlSessionFactory
applicationContext.xml


        
    
    
        
    
    
        
        
        
        
        
        
     
        
    
    
        
        
        
        
    
    
    
    
        
    
        
        
        
```

Mybatis配置文件
在classpath下创建mybatis/SqlMapConfig.xml
SqlMapConfig.xml


PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">










    
    




    
    
    
    
    
    


原始的Dao开发

Dao接口实现类继承SqlSessionDaoSupport
使用此种方法即原始dao开发方法,需要编写dao接口,dao接口实现类、映射文件
User.xml


PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">


UserDao.java

package cn.ztc.ssm.dao;

import cn.ztc.ssm.po.*;

public interface UserDao {

//根据id查用户信息
public User findUserById(int id) throws Exception;

}

UserDaoImpl.java

package cn.ztc.ssm.dao;

import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.support.SqlSessionDaoSupport;

import cn.ztc.ssm.po.*;

public class UserDaoImpl extends SqlSessionDaoSupport implements UserDao{

@Override
public User findUserById(int id) throws Exception {
    //继承了SqlSessionDaoSupport,通过getSqlSession();方法得到sqlSession
    SqlSession sqlSession = this.getSqlSession();
    User user = sqlSession.selectOne("test.findUserById", id);
    //方法结束,自动关闭sqlSession
    //sqlSession.close();
    return user;
}

}

测试类

package cn.ztc.ssm.dao;

import static org.junit.Assert.*;

import org.junit.Before;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import cn.ztc.ssm.po.User;

public class UserDaoImplTest {

private ApplicationContext applicationContext;

//在setUp方法中得到spring的容器
@Before
public void setUp() throws Exception{
    applicationContext = new ClassPathXmlApplicationContext("classpath:spring/applicationContext.xml");
}

@Test
public void testFindUserById() throws Exception {
    UserDao userDao = (UserDao) applicationContext.getBean("userDao");
    
    User user = userDao.findUserById(1);
    System.out.println(user);
}

}


mapper代理开发

UserMapper.java

package cn.ztc.ssm.mapper;

import java.util.List;

import cn.ztc.ssm.po.User;
import cn.ztc.ssm.po.UserCustom;
import cn.ztc.ssm.po.UserQueryVo;

public interface UserMapper {

//根据id查用户信息
public User findUserById(int id) throws Exception;

}


UserMapper.xml


PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">



applicationContext.xml添加





```
测试类

package cn.ztc.ssm.mapper;

import static org.junit.Assert.*;

import org.junit.Before;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import cn.ztc.ssm.po.User;

public class UserMapperTest {

private ApplicationContext applicationContext;
    
    //在setUp方法中得到spring的容器
    @Before
    public void setUp() throws Exception{
        applicationContext = new ClassPathXmlApplicationContext("classpath:spring/applicationContext.xml");
    }
    
    @Test
    public void testFindUserById() throws Exception {
        UserMapper usermapper = (UserMapper) applicationContext.getBean("userMapper");
        User user = usermapper.findUserById(1);
        System.out.println(user);
    }

}

此方法问题:要针对每个mapper配置
解决方法:applicationContext.xml中添加


    
        
        
        
        
    
        ```

你可能感兴趣的:(spring和mybatis整合)