Spring整合Mybatis

前言:

在现代的软件开发中,数据库连接和数据访问是每个应用程序都必须面对的核心问题之一。为了有效地管理数据库连接并执行各种数据库操作,开发人员经常会选择使用一些成熟的技术和工具。本文将介绍如何利用 JDBC、MyBatis 和 Druid 数据库连接池来实现数据库连接管理和数据访问功能,从而帮助开发人员更好地构建稳健的应用程序。

1.引入jdbc和mybatis和druid数据库连接池的依赖

<dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>druid</artifactId>
      <version>1.2.16</version>
    </dependency>
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>3.5.14</version>
    </dependency>
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>8.0.33</version>
    </dependency>
    <!--        spring中操作数据库专用的包-->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-jdbc</artifactId>
      <version>5.3.30</version>
    </dependency>
    <!--        spring整合mybatis用的jar包     由mybatis提供,由spring提供接口-->
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis-spring</artifactId>
      <version>3.0.3</version>
    </dependency>

2.生成数据库的的dataSoure实现数据库之间的连接管理和数据访问功能

public class JdbcConfig {

    @Value("${jdbc.driver}")
    private String driver;

    @Value("${jdbc.url}")
    private String url;

    @Value("${jdbc.username}")
    private String username;

    @Value("${jdbc.password}")
    private String password;

    @Bean//配置一个DataSource
    public DataSource dataSource(){
        DruidDataSource ds = new DruidDataSource();
        ds.setDriverClassName(driver);
        ds.setUrl(url);
        ds.setUsername(username);
        ds.setPassword(password);
        return ds;
    }
}

3.整合mybatis的两个核心对象交给Ioc进行管理

//Spring整合mybatis
public class MybatisConfig {

    @Bean//负责连接数据库,还负责管理MyBatis的各种配置信息,执行sql语句
    public SqlSessionFactoryBean sqlSessionFactoryBean(DataSource dataSource){
        SqlSessionFactoryBean ssf = new SqlSessionFactoryBean();
        ssf.setTypeAliasesPackage("org.example.config.entity");//设置类型别名的包(得到到数据封装到哪个javabean)
        ssf.setDataSource(dataSource);//连接数据库的dataSource
        return ssf;
    }

    @Bean//Spring框架中用于自动扫描和注册MyBatis Mapper接口的类。
    public MapperScannerConfigurer mapperScannerConfigurer(){
        MapperScannerConfigurer msc = new MapperScannerConfigurer();
        msc.setBasePackage("org.example.dao");//配置映射所在的包
        return msc;
    }
}

4.书写数据层的代码

package org.example.dao;

import org.apache.ibatis.annotations.*;
import org.example.entity.Account;

import java.util.List;

@Mapper
public interface AccountDao {
    @Insert("INSERT INTO spring_study.account (name, money) VALUES ('John', 1000);")
    void save(Account account);

    @Update("UPDATE spring_study.account SET name = #{name}, money = #{money} WHERE id = #{id};")
    void update(Account account);

    @Delete("DELETE FROM spring_study.account WHERE id = #{id};")
    void delete(Account account);

    @Select("SELECT * FROM spring_study.account where id = #{id};")
    Account findById(int id);

    @Select("SELECT * FROM spring_study.account;")
    List<Account> findAll();
}

5.使用spring核心容器调用

public class App {
    public static void main(String[] args) {
        ApplicationContext context = new AnnotationConfigApplicationContext(SpringConfig.class);
        AccountDao accountDao = context.getBean(AccountDao.class);
        Account a = accountDao.findById(2);
        System.out.println(a);
    }
}

总结:

通过本文的介绍,我们了解了如何使用 JDBC、MyBatis 和 Druid 数据库连接池来实现数据库连接管理和数据访问功能。首先,我们引入了相应的依赖,包括 Druid、MyBatis 和 MySQL 连接驱动等。然后,我们创建了一个 JdbcConfig 类来配置数据源,并通过注解 @Bean 将数据源交给 Spring IoC 容器管理。接着,我们利用 MyBatisConfig 类来整合 MyBatis,并配置了 SqlSessionFactoryBean 和 MapperScannerConfigurer,以便在 Spring 中管理 MyBatis 的核心对象和 Mapper 接口。

通过这些步骤,我们成功地搭建了一个基于 JDBC、MyBatis 和 Druid 的数据库连接和数据访问框架,为应用程序提供了可靠的数据库支持。这种整合能够有效地简化开发过程,提高代码的可维护性和可扩展性,是构建高性能、稳健的应用程序的重要组成部分。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

风止￴

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值