Maven项目&Spring、Mybatis整合

Spring与Mybatis的整合可以使用MyBatis-Spring,它会将 MyBatis 代码无缝地整合到 Spring 中。它将允许 MyBatis 参与到 Spring 的事务管理之中,创建映射器 mapper 和 SqlSession 并注入到 bean 中,以及将 Mybatis 的异常转换为 Spring 的 DataAccessException。

使用 MyBatis-Spring 需要以下版本


image.png

使用 Maven 作为构建工具, 需要在 pom.xml 中加入依赖


   org.mybatis
   mybatis-spring
   2.0.2

mybatis


   org.mybatis
   mybatis
   3.5.2

spring

 
            org.springframework
            spring-webmvc
            5.1.10.RELEASE
        
        
            org.springframework
            spring-jdbc
            5.1.10.RELEASE
        

aop织入

       
            org.aspectj
            aspectjweaver
            1.9.4
        

lombok注解

      
            org.projectlombok
            lombok
            1.16.16
            provided
        

单元测试junit

      
            junit
            junit
            4.13.1
            test
        

配置Maven静态资源过滤

     
            
                src/main/java
                
                    **/*.xml
                    **/*.properties
                
            

            
                src/main/resources
                
                    **/*.xml
                    **/*.properties
                
            
        

Spring 、MyBatis一起使用,需要在 Spring 应用上下文中定义:SqlSessionFactory 、数据映射器类。
在 MyBatis-Spring 中,可使用SqlSessionFactoryBean来创建 SqlSessionFactory。要配置这个工厂 bean,只需要把下面代码放在 Spring 的 XML 配置文件中:


 

注意:SqlSessionFactory需要一个 DataSource(数据源)。可以是任意的 DataSource。
这里配置DataSource使用Spring自带的JDBC 的 DataSource,具体的数据库信息使用properties文件引入

    
    
 
    
    
        
        
        
        
    

单独使用MyBatis时,是通过 SqlSessionFactoryBuilder 来创建 SqlSessionFactory 的。再使用 SqlSessionFactory 来创建 SqlSession。当程序获得一个 session 之后,便可以使用它来执行映射了的语句,提交或回滚连接,不再需要它时,可关闭 session。
而在 MyBatis-Spring 中,则使用 SqlSessionFactoryBean 来创建。

   
   
       
       
       
      
       
   

在 MyBatis-Spring 中,有一个常用的属性是 configLocation,它用来指定 MyBatis 的 XML 配置文件路径。
SqlSession 的一个实现是SqlSessionTemplate ,SqlSessionTemplate 是 MyBatis-Spring 的核心,可以使用它无缝代替代码中已经在使用的 SqlSession。可以使用 SqlSessionFactory 作为构造方法的参数来创建 SqlSessionTemplate 对象。


 

下面介绍具体的整合代码
代码实现
实体类:

package com.sc.pojo;

import lombok.Data;

@Data
public class Member {
    private Long id;
    private String memberNo;
    private String mobile;
    private String openId;
    private Shop shop;
}

package com.sc.pojo;

import lombok.Data;

@Data
public class Shop {
    private int shopInfoId;
    private String shopName;
    private String appKey;
    private String appSecret;
    private Long shopId;
    private String shopCode;
    private String saasTenantCode;
}

业务接口:

package com.sc.service;

import com.sc.pojo.Member;
import java.util.List;

public interface MemberMapper {
    List getAllmemberInfo();
    int deleteMember(Long id);
    int addMember(Member member);

}

mapper.xml文件,MemberMapper.xml





    
        
        
        
        

        
        
            
            
            
            
            
            
            
        
    

    
 

数据库配置信息db.properties

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://XXXX:3306/dXXX_sit?useSSL=false&useUnicode=true&characterEncoding=UTF-8&allowPublicKeyRetrieval=true&useJDBCCompliantTimezoneShift=true&serverTimezone=CST
jdbc.username=XXX
jdbc.password=XXX

Mybatis配置文件:




      
        
    
  
    
        
    
  

实现方式一:私有化sqlSessionTemplate

业务实现类:MemberMapperImpl

package com.sc.service;

import com.sc.pojo.Member;
import org.mybatis.spring.SqlSessionTemplate;
import java.util.List;

public class MemberMapperImpl implements MemberMapper {
    //sqlSession不用我们自己创建了,Spring来管理
    private SqlSessionTemplate sqlSession;
 
    public void setSqlSession(SqlSessionTemplate sqlSession) {
        this.sqlSession = sqlSession;
    }
 
    @Override
    public List getAllmemberInfo() {
        MemberMapper mapper = sqlSession.getMapper(MemberMapper.class);
        return mapper.getAllmemberInfo();
    }
  
}

spring配置文件:




    
    
   
    
    
        
        
        
        
    
 
    
    
        
        
        
        
    


    
    
        
        
    

    
        
    
  

测试类:

import com.sc.pojo.Member;
import com.sc.service.MemberMapper;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import java.util.List;


public class MyTest {
    @Test
    public void test()
    {
        ApplicationContext context = new ClassPathXmlApplicationContext("spring-config.xml");
        MemberMapper mapper = (MemberMapper) context.getBean("memberMapper");
        List members = mapper.getAllmemberInfo();
        for(Member member:members){
            System.out.println(member);
        }
    }
}

实现方式二:继承Support类

继承Support类 , 直接利用 getSqlSession() 获得 , 然后直接注入SqlSessionFactory . 比起方式1 , 不需要管理SqlSessionTemplate

package com.sc.service;

import com.sc.pojo.Member;
import org.apache.ibatis.session.SqlSession;
import org.mybatis.spring.support.SqlSessionDaoSupport;
import java.util.List;

public class MemberMapperImpl2 extends SqlSessionDaoSupport implements MemberMapper {

    public List getAllmemberInfo() {
        SqlSession sqlSession = this.getSqlSession();
        MemberMapper mapper = sqlSession.getMapper(MemberMapper.class);
        return mapper.getAllmemberInfo();
    }
 
}

spring配置文件:




    
    
 
    
    
        
        
        
        
    
 
    
    
        
        
        
        
    
 
    
        
    


测试类:

import com.sc.pojo.Member;
import com.sc.service.MemberMapper;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import java.util.List;


public class MyTest {
    @Test
    public void test()
    {
        ApplicationContext context = new ClassPathXmlApplicationContext("spring-config.xml");
        MemberMapper mapper = (MemberMapper) context.getBean("memberMapper");
        List members = mapper.getAllmemberInfo();
        for(Member member:members){
            System.out.println(member);
        }
    }
}

输出:


image.png

你可能感兴趣的:(Maven项目&Spring、Mybatis整合)