纯注解版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日

相关文章

  • Java Apache POI报错“POIXMLException”的原因与解决办法

    “POIXMLException”是Java的Apache POI类库中的一个异常,通常由以下原因之一引起: 文件格式错误:如果文件格式不正确,则可能会出现此异常。例如,可能会尝试读取非Excel文件或尝试读取损坏的Excel文件。 以下是两个实例: 例1 如果文件格式错误,则可以尝试使用正确的文件格式以解决此问题。例如,在Java中,可以使用以下代码: F…

    Java 2023年5月5日
    00
  • java SpringMvc中拦截器的应用

    Java Spring MVC中拦截器的应用 拦截器是Spring MVC框架中的一个重要组件,它可以在请求到达控制器之前或之后执行一些操作。在本文中,我们将详细介绍Java Spring MVC中拦截器的应用。 步骤一:创建拦截器类 在Java Spring MVC中,我们可以通过实现HandlerInterceptor接口来创建拦截器类。我们可以在“sr…

    Java 2023年5月17日
    00
  • Java中的Gradle与Groovy的区别及存在的关系

    Java中的Gradle与Groovy的区别及存在的关系 Gradle和Groovy是Java生态圈中的两个重要工具,Gradle作为一款构建工具,而Groovy则是一种脚本语言。它们之间有着密切的关系,在Java项目中都存在重要的作用。 Gradle是一款基于Groovy的自动化构建工具。它不仅支持Java开发,还支持其他语言的项目构建。Gradle支持使…

    Java 2023年5月20日
    00
  • Spring security如何重写Filter实现json登录

    下面是详细讲解“Spring security如何重写Filter实现json登录”的完整攻略。 什么是Spring Security? Spring Security 是一个基于 Spring 的安全框架,提供了完善的安全管理功能,能够有效地帮助我们实现安全的身份认证、授权、攻击防护等。在使用 Spring Security 的过程中,通常需要进行配置和扩…

    Java 2023年5月20日
    00
  • 我的编程学习小圈子

    大家好,我是陶朱公Boy。(一个认真生活总想超越自己的程序员) 一线互联网Java技术专家,有超过8年+后端开发、架构经验。公众号:「陶朱公Boy」欢迎大家关注! 星球简介 一个帮你学编程、做项目、找工作少走弯路的交流圈,进步从此开始! 加入后你可以: 1.获取陶朱公原创编程学习路线、原创编程知识库、原创项目、海量编程学习资料。 2.向陶朱公和大厂嘉宾1对1…

    Java 2023年4月17日
    00
  • python中print()函数的“,”与java中System.out.print()函数中的“+”功能详解

    Python中的print()函数和Java中的System.out.print()都是输出函数,它们都可以向控制台输出内容。下面详细讲解两者的区别以及两者在输出时“+”的功能。 Python中print()函数 语法 print(value1, value2, …, sep=’ ‘, end=’\n’, file=sys.stdout, flush=F…

    Java 2023年5月26日
    00
  • Java Web端程序实现文件下载的方法分享

    首先我们需要了解Java Web端程序实现文件下载的基本流程。在Java Web项目中,文件下载的基本流程如下: 客户端发送下载请求。 服务器端根据请求的文件路径和文件名,读取文件并将文件流写入response输出流。 客户端接收到服务器返回的文件流后,将文件流写入本地文件。 具体实现方法如下: 首先定义一个Servlet处理文件下载请求,实现Servlet…

    Java 2023年5月19日
    00
  • Java语言实现最大堆代码示例

    让我为您详细讲解“Java语言实现最大堆代码示例”的完整攻略。 最大堆简介 最大堆是一种满足父节点比子节点大的堆,它通常用于对数据进行排序和查找最大值。最大堆可以通过用数组表示、从根节点开始,每次比较左右子节点的大小,决定是否交换它们来实现。 Java实现最大堆代码示例 下面是Java实现最大堆代码的示例: public class MaxHeap { pr…

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