首页 > 其他分享 >spring注解整合mybatis

spring注解整合mybatis

时间:2023-04-10 14:22:45浏览次数:41  
标签:spring springframework dataSource org mybatis import public 注解

  1. 引入依赖
<!--mybatis-spring与mybatis使用低版本适配-->
<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis-spring -->
<dependency>
	<groupId>org.mybatis</groupId>
	<artifactId>mybatis-spring</artifactId>
	<version>1.2.2</version>
</dependency>

<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
<dependency>
	<groupId>org.mybatis</groupId>
	<artifactId>mybatis</artifactId>
	<version>3.3.1</version>
</dependency>
  1. mybatis注解配置
package com.lv.qggz.man.config;

import com.alibaba.druid.pool.DruidDataSource;
import com.github.pagehelper.PageInterceptor;
import org.apache.ibatis.logging.slf4j.Slf4jImpl;
import org.apache.ibatis.plugin.Interceptor;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.annotation.MapperScan;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.Resource;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import org.springframework.transaction.annotation.EnableTransactionManagement;

import javax.sql.DataSource;
import java.util.Properties;

/**
 * @Author: sh
 * @Description: MybatisConfig
 * @Version:
 * @Date: 2023/3/30
 */
@Configuration
@MapperScan("com.xxx.dao")
@EnableTransactionManagement
public class MybatisConfig {
    protected Logger logger = LoggerFactory.getLogger(this.getClass());
    public static final String MYBATIS_DB = "mybatis-db";
    public static final String LOG_4_J = "LOG4J";
    public static final String TYPE_ALIASES_PACKAGE = "com.xxx.domain";
    public static final String LOCATION_PATTERN = "classpath*:mybatis/*.xml";

    public DataSource mybatisDataSource(@Qualifier("dataSource") DruidDataSource dataSource) {
        //@Bean(name = "mybatisDataSource")
        DruidDataSource druidDataSource = new DruidDataSource();
        druidDataSource.setDriverClassName(dataSource.getDriverClassName());
        druidDataSource.setUrl(dataSource.getUrl());
        druidDataSource.setUsername(dataSource.getUsername());
        druidDataSource.setPassword(dataSource.getPassword());
        druidDataSource.setName(MYBATIS_DB);
        return druidDataSource;
    }

    @Bean(name = "mybatisDataSourceTransactionManager")
    public DataSourceTransactionManager dataSourceTransactionManager(@Qualifier("dataSource") DataSource dataSource) {
        DataSourceTransactionManager dataSourceTransactionManager = new DataSourceTransactionManager(dataSource);
        return dataSourceTransactionManager;
    }

    @Bean
    public SqlSessionFactory sqlSessionFactory(@Qualifier("dataSource") DataSource dataSource) {
        SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
        sqlSessionFactoryBean.setDataSource(dataSource);
        sqlSessionFactoryBean.setTypeAliasesPackage(TYPE_ALIASES_PACKAGE);
        sqlSessionFactoryBean.setPlugins(new Interceptor[]{pageInterceptor()});
        PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
        try {
            Resource[] resources = resolver.getResources(LOCATION_PATTERN);
            sqlSessionFactoryBean.setMapperLocations(resources);
            return sqlSessionFactoryBean.getObject();
        } catch (Exception e) {
            logger.error(e.getMessage());
        }
        return null;
    }


    @Bean
    public org.apache.ibatis.session.Configuration configuration(SqlSessionFactory sqlSessionFactory) {
        org.apache.ibatis.session.Configuration configuration = sqlSessionFactory.getConfiguration();
        configuration.setLogPrefix(LOG_4_J);
        configuration.setLogImpl(Slf4jImpl.class);
        return configuration;
    }

    public PageInterceptor pageInterceptor() {
        PageInterceptor pageInterceptor = new PageInterceptor();
        Properties properties = new Properties();
        properties.setProperty("helperDialect", "mysql");
        properties.setProperty("reasonable", "true");
        pageInterceptor.setProperties(properties);
        return pageInterceptor;
    }
}

  1. 使用

标签:spring,springframework,dataSource,org,mybatis,import,public,注解
From: https://www.cnblogs.com/sung1024/p/17302766.html

相关文章

  • MybatisPlus——DML编程控制——增删改
    DML编程控制id生成策略控制不同的表应用不同的id生成策略日志:自增(1,2,3,4,......)购物订单:特殊规则(FQ23948AK3843)外卖单:关联地区日期等信息(1004202003143491)关系表:可省略id......注解控制@TableId类型:属性注解位置:模型类中用于表示主键的属性定义上方作用:设置......
  • Spring Security系列教程-初识Spring Security
    前言在开始学习SpringSecurity系列教程之前,小千先带大家来了解一下SpringSecurity,看看它到底是什么,有哪些功能,有什么特点,以及它与别的同类框架相比,有什么不同,我们以后学习任何一个新技术,其实都可以遵循"3W1H"法则,这样学习起来才能更有条理。一.SpringSecurity概念首先请各位跟......
  • Mybatis-Plus详解(一篇带入了解底层原理)
    一.MP简介我们知道,Mybatis属于一个半自动的ORM框架。之所以说Mybatis是一个半自动的ORM框架,原因是它还需要我们自己在注解或是映射文件中编写SQL语句,并没有实现完全的自动化。SQL语句的编写,虽然增加了项目和业务需求实现的灵活性,但对一些基本表的操作而言,无疑增加了数据库操作的......
  • 扯下@EventListener这个注解的神秘面纱。
    你好呀,我是歪歪。前段时间看到同事在项目里面使用了一个叫做@EventListener的注解。在这之前,我知道这个注解的用法和想要达到的目的,但是也仅限于此,其内部工作原理对我来说是一个黑盒,我完完全全不知道它怎么就实现了“监听”的效果。现在既然已经出现在项目里面了,投入上生产上......
  • 【Spring MVC】第一个程序
    添加Maven依赖:<!--spring核心类--><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>5.2.8.RELEASE</version></dependency>&......
  • MIT 6.5840 2023 Spring(6.824)LAB1:MapReduce
    MIT6.58402023Spring(6.824)LAB1:MapReduce前言本次lab主要是完成一个基于RPC远程调用的单机单文件系统的简单MapReduce框架,并完成单词计数任务。基于golang实现,单Master,多Worker。实现worker的奔溃恢复(FaultTorrance),通过超时重新执行实现。主要的任务有,RPC调用参数及返回参数......
  • SpringBoot处理get请求的路径参数
    当请求方式为get并且使用路径参数的时候,请求格式形如: 后端controller中可以用实体类接收参数,并且不用添加任何注解,当然这个实体类是中的属性是有getter和setter方法的才行,接受方式形如:实体类形如: SpringBoot会自动做处理,将路径参数中的值填充到实体类对应的属性中......
  • Spring
    1.springboot的自动装配原理springboot启动以后:通过@EnableAutoConigration里的@lmport(AutoConfigurationlmportSelector.class)实现配置类的导入,但是并不是传统意义上的单个导入,而是批量进行导入AutoConfigurationlmportSelector类实现了ImpotSelector接口,重写了selectlmport......
  • springboot 打包后的端口 jar and war
    WAR包发布项目:端口号是目标发布服务器tomcat的默认端口号(8080)或在tomcat的配置文件(server.xml)中设置的端口号。JAR包发布项目:端口号是application.yml或application.properties里配置的端口号,也就是这些文件配置了内嵌服务器tomcat的端口号。默认端口号也是8080。......
  • 【Spring】事务管理
    添加Maven依赖:<dependency><groupId>org.aspectj</groupId><artifactId>aspectjweaver</artifactId><version>1.9.6</version><scope>runtime</scope></dependency>......