测试代码在下面(没jar)

集成步骤

    

1、  jar包集成;

2、  配置文件集成(数据源);

3、  SpringSqlSessionFactory进行管理配置;

4、  Mybatis程序编写(接口、映射文件);

5、  Spring通过配置文件管理mybatis 的对象;


jar包集成

Mybatis3.2.7 jar包(mybatis核心包、依赖包)

11.MyBatis与Spring整合_第1张图片

Spring3.2.0 jar

11.MyBatis与Spring整合_第2张图片

Springmybatis的集成包

    wKiom1WIJqbxX98MAAAeHLzNFwU861.jpg

 

数据库驱动包

wKioL1WIKJnwekcUAAAkyek5KoM460.jpg

Dbcp连接池包

wKiom1WIJxTgo26QAABMgZ_K5ZE873.jpg



搭建工程环境

    11.MyBatis与Spring整合_第3张图片


配置文件集成

注意:Mybatis的配置文件中的数据源配置去掉,由spring进行管理配置。

MybatisSqlMapConfig.xml文件内容如下:




    
    
    
       
       
       
       
       
       
       
    
    
    
    
       
       
       
    
 
    
    
    
    
       
       
       
    


SpringapplicationContext.xml配置文件头:

SpringapplicationContext.xml配置文件内容:



    
    

       
       
       
       
       
       

 Spring对SqlSessionFactory进行管理配置


    
        
        
        
        
    


MyBatis程序编写

编写DAO接口

package cn.mybatis.sm.dao;

import cn.mybatis.sm.domain.User;

public interface UserDao {
    
    public User findUserById(int id);
}
  编写dao实现类(继承SqlSessionDaoSupport)
package cn.mybatis.sm.dao.impl;

import org.mybatis.spring.support.SqlSessionDaoSupport;

import cn.mybatis.sm.dao.UserDao;
import cn.mybatis.sm.domain.User;

public class UserDaoImpl extends SqlSessionDaoSupport implements UserDao {

    public User findUserById(int id) {
        
        return this.getSqlSession().selectOne("cn.mybatis.sm.mapper.UserMapper.findUserById", id);
    }
    
}

编写Mapper映射文件


        SELECT  FROM USER WHERE ID = #{id}

Spring定义bean


    
        
    

编写测试代码

package cn.mybatis.sm.dao;

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

import cn.mybatis.sm.domain.User;

public class UserDaoTest {
    
    private ApplicationContext applicationContext;
    
    @Before
    public void setUp() throws Exception {
        applicationContext = new ClassPathXmlApplicationContext("spring/applicationContext.xml");
    }

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

}











Mapper接口开发

    编写mapper接口

package cn.mybatis.sm.mapper;

import java.util.List;

import cn.mybatis.sm.domain.User;
import cn.mybatis.sm.domain.UserQuery;

/**
 * 这是一个mapper接口,就和DAO的接口一样
 * 定义方法,然后其他的实现都由MyBatis来完成就好啦
 * @author 刘泽栋
 * @date 2015年6月20日 下午2:33:58
 */
public interface UserMapper {
    // 根据用户的ID来查询用户
    public User findUserById(int id);
    
    // 根据用户的名字来模糊查询用户
    public List findUserByName(String username);
    
    // 添加用户
    public void insertUser(User user);
    
    // 根据用户的 性别和姓名来查询用户
    public List findUserByUser(User user);
    
    // 复杂查询,就是使用 封装类,里面的类的条件进行查询
    public List findUserByList(UserQuery userQuery);
    
    // 查询所有用户的id
    public List findIdList();
    
    // 测试if
    public List findUser4If(User user);
    
    // 测试where,动态的查询用户,看用户传入的是什么,在配置文件中做判断
    public List findUser4Where(User user);
    
    //根据用户ID的集合查询用户列表(学习foreach标签之直接传ID集合)
    public List findUserByIdListForEach(List idList);
}


编写mapper映射文件







    
    
    
        ID,USERNAME,SEX,BIRTHDAY,ADDRESS
    


    
    
    
    
        SELECT  FROM USER WHERE ID = #{id}
    
    
    
    
        SELECT * FROM USER WHERE USERNAME LIKE '%${value}%'
    
    
    
    
        INSERT INTO USER(username,sex,birthday,address) VALUES(#{username},#{sex},#{birthday},#{address})
    
    
    
    
    
        SELECT * FROM USER WHERE sex = #{sex} AND username like '%${username}%'
    
    
    
    
        SELECT * FROM USER WHERE sex = #{user.sex} AND username like '%${user.username}%'
    
    
    
    
        SELECT ID FROM USER
    
    
    
    
    
        SELECT * FROM USER WHERE sex = #{sex} 
        
            AND username like '%${username}%'
        
    
    
    
    
    
        SELECT  FROM USER 
        
            
                 AND sex=#{sex} 
            
            
                AND username LIKE '%${username}%'
            
                
    
    
    
    
    
     
         select  from user 
         
              0">
                 
                     #{id}
                 
             
         
     
        

Spring定义bean

    Mapper代理开发方式有两种bean的定义方法,一种是MapperFactoryBean,一种是MapperScannerConfigurer

    通过MapperFactoryBean创建代理对象

11.MyBatis与Spring整合_第4张图片


    通过MapperScannerConfigurer批量扫描创建代理对象


    
        
        
        
        
    

    编写测试代码

package cn.mybatis.sm.mapper;

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

import cn.mybatis.sm.domain.User;
/**
 * Mapper测试代码
 * @author 刘泽栋
 * @date 2015年6月22日 下午11:39:58
 */
public class UserMapperTest {
    
    private ApplicationContext applicationContext;
    
    @Before
    public void setUp() throws Exception {
        applicationContext = new ClassPathXmlApplicationContext("spring/applicationContext.xml");
    }

    @Test
    public void testFindUserById() {
        UserMapper userMapper = (UserMapper) applicationContext.getBean("userMapper");
        User user = userMapper.findUserById(1);
        System.out.println(user);
    }

}

    测试结果

11.MyBatis与Spring整合_第5张图片