整合mybatis


声明

本文为其他博主原创文章整合,仅用作个人学习,特此声明

参考文章链接

(3条消息) B站 - 狂神 - Spring5课堂笔记_夜里的雨的博客-CSDN博客_狂神spring5笔记

12、整合mybatis

mybatis-spring官网:https://mybatis.org/spring/zh/

mybatis的配置流程:

  • 编写实体类
  • 编写核心配置文件
  • 编写接口
  • 编写Mapper.xml
  • 测试

什么是mybatis-spring?

MyBatis-Spring 会帮助你将 MyBatis 代码无缝地整合到 Spring 中。它将允许 MyBatis 参与到 Spring 的事务管理之中,创建映射器 mapper 和 SqlSession 并注入到 bean 中,以及将 Mybatis 的异常转换为 Spring 的 DataAccessException。 最终,可以做到应用代码不依赖于 MyBatis,Spring 或 MyBatis-Spring。

12.1mybatis-spring-方式一

  • 编写数据源配置
  • sqISessionFactory
  • sqISessionTemplate(相当于sqISession)
  • 需要给接口加实现类【new】
  • 将自己写的实现类,注入到Spring中
  • 测试!

1.导入jar包



    
    
        org.springframework
        spring-webmvc
        5.2.7.RELEASE
    

    
        org.aspectj
        aspectjweaver
        1.9.4
    

    
    
        org.springframework
        spring-jdbc
        5.2.7.RELEASE
    

    
        org.mybatis
        mybatis
        3.5.2
    

    
        org.mybatis
        mybatis-spring
        2.0.4
    

    
        mysql
        mysql-connector-java
        8.0.12
    

    
        org.projectlombok
        lombok
        1.18.12
    


	




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



mapper目录下的 UserMapper、UserMapperImpl、UserMapper.xml

2.pojo实体类User

package pojo;
import lombok.Data;
@Data
public class User {
	private int id;
	private String name;
	private String pwd;
}

3.接口UserMapper

package mapper;
import java.util.List;
import pojo.User;
public interface UserMapper {
	public List getUser();
}

4.接口实现类UserMapperImpl

package mapper;
import java.util.List;
import org.mybatis.spring.SqlSessionTemplate;
import pojo.User;

public class UserMapperImpl implements UserMapper{
	
	//我们的所有操作,在原来都使用sqlSession来执行,现在使用SqlSessionTemplate;
	private SqlSessionTemplate sqlSessionTemplate;

	public void setSqlSessionTemplate(SqlSessionTemplate sqlSessionTemplate) {
		this.sqlSessionTemplate = sqlSessionTemplate;
	}

	public List getUser() {
		UserMapper mapper = sqlSessionTemplate.getMapper(UserMapper.class);
		return mapper.getUser();
	}
}

5.UserMapper.xml

<?xml version="1.0" encoding="UTF-8" ?>

        


	


resource目录下的 mybatis-config.xml、spring-dao.xml、applicationContext.xml

6.mybatis-config.xml

<?xml version="1.0" encoding="UTF-8" ?>


	
	
		
	
	
	
	 
		
	


7.spring-dao.xml

<?xml version="1.0" encoding="UTF-8"?>

		
	
	
	
		
		
		
		
	
	
	
    
        
        
        
        
    

	
    
    		
        
    
		

8.applicationContext.xml

<?xml version="1.0" encoding="UTF-8"?>

    
	
	
	
    
        
    



测试类

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import mapper.UserMapper;
import pojo.User;
public class MyTest6 {
	public static void main(String[] args) {
        
		ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
		
		UserMapper userMapper = (UserMapper) context.getBean("userMapper");
		
		for (User user : userMapper.getUser()) {
			System.out.println(user);
		}
	}
}

12.2mybatis-spring-方式二

UserServiceImpl2:继承SqlSessionDaoSupport 类(不用配置SqlSessionTemplate)

package mapper;
import pojo.User;
import org.apache.ibatis.session.SqlSession;
import org.mybatis.spring.support.SqlSessionDaoSupport;
import java.util.List;
//继承SqlSessionDaoSupport 类
public class UserMapperImpl2 extends SqlSessionDaoSupport implements UserMapper {
    public List getUser() {
        SqlSession sqlSession = getSqlSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        return mapper.getUser();
        //或者一句话:return getSqlSession().getMapper(UserMapper.class).getUser();
    }
}

spring-dao.xml

<?xml version="1.0" encoding="UTF-8"?>

		
	
	
	
		
		
		
		
	
	
	
    
        
        
        
        
    
    
	
    

applicationContext.xml

<?xml version="1.0" encoding="UTF-8"?>


	

	
	
		
	

测试

public class MyTest6 {
	public static void main(String[] args) {
		ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
		UserMapper userMapper = (UserMapper) context.getBean("userMapper2");
		for (User user : userMapper.getUser()) {
			System.out.println(user);
		}
	}
}