Java 选择不同数据库操作(mybatis和mybatisplus)

现在接触的框架基本上都是些mybatis和mybatisplus的,所以主要是以他们两个为主

mybatis的连接方法相对于mybatisplus的要相对而言麻烦一点,如果一开始就想好了是两个不同库之间的数据展示,数据传输等时可以使用它,反之则不太推荐(有更好的方法除外,我现在了解到的就只是写一个config的class文件用来连接xml配置中的一些信息);

mybatis连接流程

先写一个config类:

@Configuration
// basePackages为mysql dao文件的路径,sqlSessionFactoryRef指定SqlSession工厂bean
@MapperScan(basePackages = "com.aliy.loong.mapper.mysql", sqlSessionFactoryRef = "mysqlSqlSessionFactory")
public class MysqlDataSourceConfig {
    //Value注解中的是xml配置的关于mysql的信息
    @Value("${spring.datasource.mysql.url}")
    private String url;

    @Value("${spring.datasource.mysql.username}")
    private String user;

    @Value("${spring.datasource.mysql.password}")
    private String password;

    @Value("${spring.datasource.mysql.driverClassName}")
    private String driverClass;

    //对应mysql的mapper.xml文件路径(这就是不推荐已经写了一些功能的问题所在了,需要给这个配置的mysql库单独再写一个mapper包,另外之前写的那些也需要迁移)
    private static final String MAPPER_LOCATION = "classpath:mappers/mysql/*/*.xml";

    /**
     * 配置mysql DataSource
     */
    @Bean(name = "mysqlDataSource")
    public DataSource mysqlDataSource() {
        DruidDataSource dataSource = new DruidDataSource();
        dataSource.setDriverClassName(driverClass);
        dataSource.setUrl(url);
        dataSource.setUsername(user);
        dataSource.setPassword(password);
        return dataSource;
    }

    /**
     * 配置事务管理器
     */
    @Bean(name = "mysqlTransactionManager")
    public DataSourceTransactionManager mysqlTransactionManager() {
        return new DataSourceTransactionManager(mysqlDataSource());
    }

    /**
     * 配置SqlSession工厂
     */
    @Bean(name = "mysqlSqlSessionFactory")
    public SqlSessionFactory mysqlSqlSessionFactory(@Qualifier("mysqlDataSource") DataSource mysqlDataSource)
            throws Exception {
        final SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
        sessionFactory.setDataSource(mysqlDataSource);
        sessionFactory.setMapperLocations(
                new PathMatchingResourcePatternResolver().getResources(MysqlDataSourceConfig.MAPPER_LOCATION));
        return sessionFactory.getObject();
    }

    /**
     * 配置SqlSessionTemplate
     */
    @Bean(name = "mysqlSqlSessionTemplate")
    public SqlSessionTemplate mysqlSqlSessionTemplate(@Qualifier("mysqlSqlSessionFactory") SqlSessionFactory sqlSessionFactory)
            throws Exception {
        return new SqlSessionTemplate(sqlSessionFactory);
    }

yml配置文件中的数据库连接可以写成:(正常配置,只不过多了名字‘mysql’,和config文件中的Value注解关联起来)

spring:
  datasource:
    mysql:
      url: jdbc:mysql://127.0.0.1:5555。。
      username: 0000
      password: 0000
      driverClassName: com.mysql.cj.jdbc.Driver

后续有需要再补充,当时用了结果卡住了,所以直接弃用,只是说有这么个方法,如果有大佬有相关的简单的解决办法希望@我

关于mybatisplus的

其实之前公司弄过一个相关的系统,但是去的晚,没怎么了解过,所以就只能从头摸索了

流程:

在已有配置好的mybatisplus依赖的下,再添加一个苞米豆的依赖文件(好像不是mybatisplus专属)

<!--使用mybatis-plus框架配置多数据源要用的依赖-->
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>dynamic-datasource-spring-boot-starter</artifactId>
    <version>4.1.3</version><!--版本自选-->
</dependency>

2024.3.22补:如果之前用的是mybatis然后换成了mybatisplus,一定一定一定(重要的事说三遍)要把pom文件里的关于mybatis的依赖删掉,要不然会报错:org/mybatis/logging/LoggerFactory,找不到mapper的bean等等

yml配置文件:

spring:
  datasource:
    dynamic:
      primary: mysql #设置默认的数据源或者数据源组,默认值即为mysql
      strict: false #严格匹配数据源,默认false. true未匹配到指定数据源时抛异常,false使用默认数据源
      datasource:
        mysql:
          #数据库链接驱动
          driver-class-name: com.mysql.cj.jdbc.Driver
          url: jdbc:mysql://localhost:2022
          username: 0000
          password: 2023
          #使用什么数据源
      #    type: com.alibaba.druid.pool.DruidDataSource

        daMeng:
          url: jdbc:dm://127.0.0.1:0202
          username: 0000
          password: 0000
          driverClassName: dm.jdbc.driver.DmDriver

默认是mysql也就是之前写的模块,这样就不用重新调整文件了,使用某个数据库例如daMeng时,只需要在创建好的mapper文件中添加@DS("daMeng")就可以了

(看到一些地方说也可以写在Sevice实现类里)

关于苞米豆框架的一些问题:

本框架只做 切换数据源 这件核心的事情,并不限制你的具体操作,切换了数据源可以做任何CRUD。
配置文件所有以下划线 _ 分割的数据源 首部 即为组的名称,相同组名称的数据源会放在一个组下。
切换数据源可以是组名,也可以是具体数据源名称。组名则切换时采用负载均衡算法切换。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值