当前位置:   article > 正文

Mybatis-plus 定义SqlSessionFactory_mybatisplus sqlsessionfactory

mybatisplus sqlsessionfactory

最近写ssm项目升级为mybatis-plus发现一个问题,就是在ssm中使用mybatis-plus, mapper和xml文件可以正常生成,但是mybatis-plus自带的增删改查方法用不了,
报错如下

在这里插入图片描述

在这里插入图片描述
查找了半天,发现是SqlSessionFactory的问题,Mybatis-plus 和Mybatis 是兼容的。

所以网上的配置 mybatis 的SqlSessionFactory 的方法基本上可行,但是对于mybatis-plus 的一些特性会丢失, 自带的增删改查方法用不了
原配置如下

package com.it.car.config;

import com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean;
import com.github.pagehelper.PageInterceptor;
import com.zaxxer.hikari.HikariDataSource;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.mapper.MapperScannerConfigurer;
import org.springframework.context.annotation.*;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;

import java.io.IOException;
import java.util.Properties;

/**
 * 配置类作用:
 * 1.开启service层包扫描
 * 2.service注入dao对象
 * 3.注入事务管理器对象
 */
@Configuration
@ComponentScan("com.it.car.service")
//开启spring AOP 代理 proxyTargetClass 默认false jdk 启用  true cglib
@EnableAspectJAutoProxy(proxyTargetClass = true)
//引入数据库连接池配置信息
@Import({SpringDao.class,RedisConfig.class})
public class SpringService {
    @Bean
    public SqlSessionFactoryBean sqlSessionFactoryBean(HikariDataSource hikariDataSource){
        SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
        //配置: 核心配置文件url地址
        sqlSessionFactoryBean.setConfigLocation(new ClassPathResource("mybatis-config.xml"));
        //配置:sql映射文件的url地址,如果sql映射文件和接口的文件同名同目录,这行配置可以省略不写
        /*sqlSessionFactoryBean.setMapperLocations(new PathMatchingResourcePatternResolver()
                .getResources("classpath:com/it/dao/*.xml"));*/
        //配置分页插件
        PageInterceptor pageInterceptor = new PageInterceptor();
        //设置分页插件的属性
        Properties properties = new Properties();
        properties.setProperty("helperDialect","mysql");
        properties.setProperty("reasonable","true");
        pageInterceptor.setProperties(properties);

        sqlSessionFactoryBean.setPlugins(pageInterceptor);
        // 将资源设置到 sqlSessionFactoryBean 的 mapperLocations
        try {
            sqlSessionFactoryBean.setMapperLocations(
                    new PathMatchingResourcePatternResolver().getResources("classpath:/mappers/**/*.xml"));
        } catch (IOException e) {
            throw new RuntimeException(e);
        }


        //配置数据库连接池
        sqlSessionFactoryBean.setDataSource(hikariDataSource);
        //可选配置,设置别名
        sqlSessionFactoryBean.setTypeAliasesPackage("com.it.car.outlet.po");
        return sqlSessionFactoryBean;

    }



    /**
     * sql映射文件对应接口时扫描器,通过指定的sqlSessionFactoryBean获取SqlSession对象
     * sqlSession.getMapper(接口.class)获取代理对象
     * @return
     */
    @Bean
    public MapperScannerConfigurer configurer(){
        MapperScannerConfigurer configurer=new MapperScannerConfigurer();
        //关联SqlSessionFactoryBean对象
        configurer.setSqlSessionFactoryBeanName("sqlSessionFactoryBean");
        //扫描器配置接口扫描包范围
        configurer.setBasePackage("com.it.car.outlet.dao");
        return configurer;
    }



    /**
     * 事务管理器,即利用spring AOP管理事务时的增强类
     * @param dataSource
     * @return
     */
    @Bean
    public DataSourceTransactionManager dataSourceTransactionManager(HikariDataSource dataSource){
        DataSourceTransactionManager dataSourceTransactionManager=new DataSourceTransactionManager();
        dataSourceTransactionManager.setDataSource(dataSource);
        return dataSourceTransactionManager;
    }


}



  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98

要想使用Mybatis-plus 自带增删改查方法,需要将
SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
换成mybatis-plus
修改配置如下

package com.it.car.config;

import com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean;
import com.github.pagehelper.PageInterceptor;
import com.zaxxer.hikari.HikariDataSource;
import org.mybatis.spring.mapper.MapperScannerConfigurer;
import org.springframework.context.annotation.*;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;

import java.io.IOException;
import java.util.Properties;

/**
 * 配置类作用:
 * 1.开启service层包扫描
 * 2.service注入dao对象
 * 3.注入事务管理器对象
 */
@Configuration
@ComponentScan("com.it.car.service")
//开启spring AOP 代理 proxyTargetClass 默认false jdk 启用  true cglib
@EnableAspectJAutoProxy(proxyTargetClass = true)
//引入数据库连接池配置信息
@Import({SpringDao.class,RedisConfig.class})
public class SpringService {
    @Bean
    public MybatisSqlSessionFactoryBean mybatisSqlSessionFactoryBean(HikariDataSource hikariDataSource){
        MybatisSqlSessionFactoryBean mybatisSqlSessionFactoryBean = new MybatisSqlSessionFactoryBean();
        //配置: 核心配置文件url地址
        mybatisSqlSessionFactoryBean.setConfigLocation(new ClassPathResource("mybatis-config.xml"));
        //配置:sql映射文件的url地址,如果sql映射文件和接口的文件同名同目录,这行配置可以省略不写
        /*sqlSessionFactoryBean.setMapperLocations(new PathMatchingResourcePatternResolver()
                .getResources("classpath:com/it/dao/*.xml"));*/
        //配置分页插件
        PageInterceptor pageInterceptor = new PageInterceptor();
        //设置分页插件的属性
        Properties properties = new Properties();
        properties.setProperty("helperDialect","mysql");
        properties.setProperty("reasonable","true");
        pageInterceptor.setProperties(properties);

        mybatisSqlSessionFactoryBean.setPlugins(pageInterceptor);
        // 将资源设置到 sqlSessionFactoryBean 的 mapperLocations
        try {
            mybatisSqlSessionFactoryBean.setMapperLocations(
                    new PathMatchingResourcePatternResolver().getResources("classpath:/mappers/**/*.xml"));
        } catch (IOException e) {
            throw new RuntimeException(e);
        }


        //配置数据库连接池
        mybatisSqlSessionFactoryBean.setDataSource(hikariDataSource);
        //可选配置,设置别名
        mybatisSqlSessionFactoryBean.setTypeAliasesPackage("com.it.car.outlet.po");
        return mybatisSqlSessionFactoryBean;

    }



    /**
     * sql映射文件对应接口时扫描器,通过指定的sqlSessionFactoryBean获取SqlSession对象
     * sqlSession.getMapper(接口.class)获取代理对象
     * @return
     */
    @Bean
    public MapperScannerConfigurer configurer(){
        MapperScannerConfigurer configurer=new MapperScannerConfigurer();
        //关联SqlSessionFactoryBean对象
        configurer.setSqlSessionFactoryBeanName("mybatisSqlSessionFactoryBean");
        //扫描器配置接口扫描包范围
        configurer.setBasePackage("com.it.car.outlet.dao");
        return configurer;
    }



    /**
     * 事务管理器,即利用spring AOP管理事务时的增强类
     * @param dataSource
     * @return
     */
    @Bean
    public DataSourceTransactionManager dataSourceTransactionManager(HikariDataSource dataSource){
        DataSourceTransactionManager dataSourceTransactionManager=new DataSourceTransactionManager();
        dataSourceTransactionManager.setDataSource(dataSource);
        return dataSourceTransactionManager;
    }


}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95

再次运行,成功不报错
在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/寸_铁/article/detail/949639
推荐阅读
相关标签
  

闽ICP备14008679号