栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

spring和mybatis整合(自己看的)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

spring和mybatis整合(自己看的)

spring整合mybatis的思路:将mybatis的配置文件直接整合,变成类里的属性。

通过spring的bean一个包含一个,最后变成接口的实体类(需要自己声明)

依赖


    
        org.aspectj
        aspectjweaver
        1.9.9.1
        runtime
    
    
        org.aspectj
        aspectjrt
        1.9.9.1
    
    
        org.springframework
        spring-webmvc
        5.3.19
    
    
        junit
        junit
        4.13.2
    
    
        org.projectlombok
        lombok
        1.18.22
    

    
    mysql
    mysql-connector-java
    8.0.28
    

    
        org.mybatis
        mybatis
        3.5.9
    

    
        org.mybatis
        mybatis-spring
        2.0.7
    

    
        org.springframework
        spring-jdbc
        5.3.19
    


    
        
            
                src/main/resources
                
                    ***.xml
                
                true
            
            
                src/main/java
                
                    ***.xml
                
                true
            
        
    

用bean代理

目录结构

mybatis-config.xml其实可以完全被整合到spring-dao中,但没必要

mybatis-config.xml




    
        
    
    
        
        
    

spring-dao.xml

datasource就是数据库配置

bean sqlSessionFactory的属性configLocation就是手动配置mybatis的xml的路径

其他就是把原本再xml里配置的东西放进了属性里。

mapperLocations对应的就是接口写Sql语句的xml

然后再把上面那个,放进sqlsessionTemplate里

最后再把sqlsession放进 具体的实体sql操作工具类就可以用了




    
    
    
    

    
        
        
        
    
    
        
    
    
        
    

mybatis本来思路 mybatis-config.xml(里配置mybatis) ->放进 MybatisUtil(召唤sqlsession的工具类) ->再实际操作的时候再用sqlsession加载接口

现在:

beans里datasource里属性直接配置mybatis数据库 -》放进sqlsessionfactory -》放进sqlSession ->放进接口实现类里

所以要多一个接口实现类

UserMapperImpl 里要放一个private SqlSession

package com.zhu.dao;

import com.zhu.pojo.User;
import org.mybatis.spring.SqlSessionTemplate;

import java.util.List;

public class UserMapperImpl implements UserMapper{
    private SqlSessionTemplate sqlSession;
    public void setSqlSession(SqlSessionTemplate sqlSession){
        this.sqlSession=sqlSession;
    }
    @Override
    public List selectUser() {
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
       return mapper.selectUser();
    }
}

实际用法

从bean里取最后的那个实现类就好

 @org.junit.Test
    public void test(){
        ClassPathXmlApplicationContext classPathXmlApplicationContext = new ClassPathXmlApplicationContext("spring-dao.xml");
        UserMapper userMapper = classPathXmlApplicationContext.getBean("userMapper", UserMapper.class);
        List users = userMapper.selectUser();
        for (User user : users) {
            System.out.println(user);
        }

    }

更简单的实现 ,跳过sqlsession的配置

接口实现类要改动

继承SqlSessionDaoSupport,跳过设置sqlsession属性的步骤,直接取它

package com.zhu.dao;

import com.zhu.pojo.User;
import org.apache.ibatis.session.SqlSession;
import org.mybatis.spring.support.SqlSessionDaoSupport;

import java.util.List;

public class UsermapperImpl2 extends SqlSessionDaoSupport implements UserMapper{
    @Override
    public List selectUser() {
        SqlSession sqlSession = getSqlSession();
        return sqlSession.getMapper(UserMapper.class).selectUser();

    }
}

beans里接口实现类的实例传factory而不是sqlsession
    
        
        
        
    
    
        
    

事务

就把一些对数据库的操作绑成一个事务,要么一起成,要么一起寄

bean里xml要配置

transactionManager是事务管理器-》放txAdvice里 ,再txAdvice里配置事务的样子(不清不楚),propagation配required是开启事务

然后配置切面

然后把切面放advisor里

完事




    
        
    
    
        
            
            
            
            
            
        
    
    
        
        
    

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/820115.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号