纯注解版spring与mybatis的整合过程

下面我将详细讲解"纯注解版Spring与Mybatis的整合过程"的完整攻略。

准备工作

  • 首先,需要配置好Maven环境,以便引入所需的依赖。

  • 其次,需要根据需要,配置好数据库环境。

整合Spring和Mybatis

第一步:引入Spring和Mybatis的依赖

<dependencies>
  <!-- 引入Spring的依赖 -->
  <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context</artifactId>
    <version>${spring.version}</version>
  </dependency>

  <!-- 引入Mybatis的依赖 -->
  <dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>${mybatis-spring-boot.version}</version>
  </dependency>

  <!-- 引入数据库连接池的依赖 -->
  <dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid-spring-boot-starter</artifactId>
    <version>${druid.version}</version>
  </dependency>

  <!-- 引入JDBC驱动的依赖 -->
  <dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>${mysql.version}</version>
  </dependency>
</dependencies>

在这里,我们引入了Spring、Mybatis、mybatis-spring-boot-starter、Druid连接池和MySQL JDBC驱动的相关依赖。其中的版本号,可以根据实际情况自行调整。

第二步:配置数据源

这里我们使用Druid数据源,具体配置如下。

spring.datasource.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8
spring.datasource.username=root
spring.datasource.password=
spring.datasource.driver-class-name=com.mysql.jdbc.Driver

# 配置Druid数据源
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
# 初始化时建立物理连接的个数
spring.datasource.initialSize=5
# 最小连接池数量
spring.datasource.minIdle=5
# 最大连接池数量
spring.datasource.maxActive=20
# 获取连接时最大等待时间,单位毫秒
spring.datasource.maxWait=60000
# 配置检查连接的语句
spring.datasource.validationQuery=select 1
# 申请连接时的测试语句
spring.datasource.testWhileIdle=true
# 申请连接时是否检查连接有效
spring.datasource.testOnBorrow=false
# 归还连接时是否检查连接有效
spring.datasource.testOnReturn=false
# 连接池内部保持持续有效的时间(单位为毫秒),超过时间则会被重置,防止假死状态出现,默认30分钟
spring.datasource.timeBetweenEvictionRunsMillis=60000
# 连接池空闲连接检测时间间隔,单位为毫秒(默认为1分钟),在高并发场景下,如果网络通信繁忙,可以设置大一点,建议3分钟
spring.datasource.timeBetweenIdleTimeMillis=180000
# 连接状态监测,慢SQL记录
spring.datasource.filters=stat,wall
spring.datasource.logSlowSql=true
# 多数据源配置时,可以给数据源取别名,便于注入
spring.datasource.name=test-datasource

在这里,我们配置了一个名为test-datasource的Druid数据源,其中需要修改的是url、username和password,以及Spring的数据源属性(如initialSize、maxActive等),以适应你的实际情况。

第三步:配置Mybatis

@Configuration
@MapperScan(basePackages = "com.example.demo.dao", sqlSessionFactoryRef = "sqlSessionFactory")
public class MybatisConfig {

    private static final String TYPE_ALIASES_PACKAGE = "com.example.demo.entity";

    @Bean(name = "dataSource")
    @ConfigurationProperties(prefix = "spring.datasource")
    public DataSource getDataSource() {
        return DruidDataSourceBuilder.create().build();
    }

    @Bean(name = "sqlSessionFactory")
    public SqlSessionFactory getSqlSessionFactory(@Qualifier("dataSource") DataSource dataSource) {
        SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
        bean.setDataSource(dataSource);
        // 配置Mybatis的核心配置文件mybatis-config.xml
        ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
        try {
            bean.setConfigLocation(resolver.getResource("classpath:mybatis/mybatis-config.xml"));
        } catch (IOException e) {
            e.printStackTrace();
        }

        // 配置类型别名
        bean.setTypeAliasesPackage(TYPE_ALIASES_PACKAGE);

        // 配置Mybatis的Mapper文件
        Resource[] mapperLocations = null;
        try {
            mapperLocations = resolver.getResources("classpath:mapper/*.xml");
        } catch (IOException e) {
            e.printStackTrace();
        }
        bean.setMapperLocations(mapperLocations);
        return bean.getObject();
    }

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

}

在这里,我们通过一个Java配置类来配置Mybatis。这个配置类指定了Mybatis的核心配置文件(mybatis-config.xml)的位置,以及Mapper文件的位置。同时,也设置了Mybatis的类型别名,并且在方法注解中指定了Mapper接口所在的包名。

第四步:配置Spring

@Configuration
@ComponentScan(basePackages = "com.example.demo")
public class SpringConfig {

    @Bean
    public MapperScannerConfigurer getMapperScannerConfigurer() {
        MapperScannerConfigurer configurer = new MapperScannerConfigurer();
        configurer.setBasePackage("com.example.demo.dao");
        configurer.setSqlSessionFactoryBeanName("sqlSessionFactory");
        return configurer;
    }

}

在这里,我们通过一个Java配置类来配置Spring。这个配置类指定了扫描的基础包名,并且指定了SqlSessionFactory的Bean名称。

示例说明

示例1:在Spring中使用Mybatis

@Service
public class UserServiceImpl implements UserService {

    @Autowired
    private UserMapper userMapper;

    @Override
    public User getUserById(Long id) {
        return userMapper.selectByPrimaryKey(id);
    }

    @Override
    public List<User> getAllUsers() {
        return userMapper.selectAll();
    }

}

在这个示例中,我们注入了UserMapper接口,并且在getUserById()和getAllUsers()方法中使用了UserMapper来处理与数据库的CRUD操作。

示例2:在Mapper接口中使用注解

@Mapper
public interface UserMapper {

    @Select("SELECT * FROM tb_user WHERE id = #{id}")
    User selectByPrimaryKey(Long id);

    @Select("SELECT * FROM tb_user")
    List<User> selectAll();

}

在这个示例中,我们使用了@Select注解来指定SQL语句,这样就不必再使用XML文件来定义SQL语句。同时,使用@Mapper注解来表明这个接口是一个Mapper接口,Spring会自动将其注册为一个Bean,以便在其他地方使用。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:纯注解版spring与mybatis的整合过程 - Python技术站

(0)
上一篇 2023年6月1日
下一篇 2023年6月1日

相关文章

  • Maven提示jdk版本不正确的问题

    下面是Maven提示jdk版本不正确的问题的解决攻略: 1. 查看Maven是否正确识别jdk 首先需要确认Maven是否正确识别了你的jdk版本,使用以下命令查看: mvn -version 在输出的信息中,需要查看“Java home”一行,确认路径是否为你安装的JDK路径。如果不是,可以通过以下两种方式解决: (1) 使用环境变量 在你的环境变量中添加…

    Java 2023年5月19日
    00
  • 浅谈Java当作数组的几个应用场景

    浅谈Java当作数组的几个应用场景 Java 数组是一个容器,可以存储一定数量的数据,Java 数组可以包含基本类型(int、short、long、byte、float、double、boolean、char)和引用类型(类、接口、数组)。 Java 数组可以作为各种数据结构的基础,介绍几个 Java 数组的应用场景。 1. 用 Java 数组模拟队列 队列…

    Java 2023年5月26日
    00
  • jsp页面循环集合操作整理

    一、添加循环代码块 对于jsp页面中的循环集合操作,一般情况下我们需要借助core标签库中的c:forEach标签实现。首先需要导入标签库: <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 接着,在需要进行循环的代码块前插入以…

    Java 2023年5月20日
    00
  • Spring boot从安装到交互功能实现零基础全程详解

    Spring Boot从安装到交互功能实现零基础全程详解 1. 概述 Spring Boot 是由 Pivotal 团队提供的全新框架,用来简化 Spring 应用开发,也是 Spring 框架的全新版本。它采用约定优于配置的方式,目的是让开发者能够快速构建出适用于生产环境的基于 Spring 的应用,而无需进行大量的配置。 本攻略介绍 Spring Boo…

    Java 2023年5月19日
    00
  • springboot启动后卡住无日志的几种情况小结

    下面是关于“SpringBoot启动后卡住无日志的几种情况小结”完整攻略: 问题背景 在使用SpringBoot开发JavaWeb应用时,有时候可能会遇到启动后卡住无日志的情况,导致我们无法知道整个启动过程的具体信息。这种情况通常有以下几种原因: 应用启动卡在某个点,等待某个线程执行完成 应用启动时出现了未捕获的异常 应用启动时依赖的外部服务出现了故障 接下…

    Java 2023年6月2日
    00
  • SpringBoot整合java诊断工具Arthas解读

    SpringBoot整合java诊断工具Arthas解读 简介 Arthas是一款阿里开源的Java诊断工具,它可以帮助开发者找到应用运行过程中的问题,定位性能瓶颈,进行动态代码修改等。本攻略将介绍如何在SpringBoot项目中使用Arthas进行诊断调试。 步骤 1. 导入依赖 在SpringBoot项目的pom.xml中添加arthas依赖,如下所示:…

    Java 2023年5月19日
    00
  • 教你用Java实现RSA非对称加密算法

    教你用Java实现RSA非对称加密算法 什么是RSA算法? RSA是一种非对称加密算法,也就是说它需要两个不同的密钥:公钥和私钥。公钥可以用来加密数据,私钥用来解密数据,因为私钥是不公开的,所以数据只能被私钥的拥有者解密。 RSA算法的原理是基于大数分解难题,即将一个大的数分解成为两个质数的乘积的难度,因为在目前计算机的技术水平下,对于一段非常长的质数的乘积…

    Java 2023年5月26日
    00
  • Jdbc连接数据库基本步骤详解

    以下是 Jdbc 连接数据库基本步骤的详细攻略: 步骤一:加载驱动程序 在 Java 中,要使用 JDBC 连接数据库,需要先加载相应的数据库驱动。具体步骤为: Class.forName("com.mysql.jdbc.Driver"); 其中 com.mysql.jdbc.Driver 是 MySQL 数据库的驱动程序名,其他数据库的…

    Java 2023年5月20日
    00
合作推广
合作推广
分享本页
返回顶部