_java">
当前位置:   article > 正文

Java 选择不同数据库操作(mybatis和mybatisplus)_java根据参数切换数据库使用mybatis

java根据参数切换数据库使用mybatis

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

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

mybatis连接流程

先写一个config类:

  1. @Configuration
  2. // basePackages为mysql dao文件的路径,sqlSessionFactoryRef指定SqlSession工厂bean
  3. @MapperScan(basePackages = "com.aliy.loong.mapper.mysql", sqlSessionFactoryRef = "mysqlSqlSessionFactory")
  4. public class MysqlDataSourceConfig {
  5. //Value注解中的是xml配置的关于mysql的信息
  6. @Value("${spring.datasource.mysql.url}")
  7. private String url;
  8. @Value("${spring.datasource.mysql.username}")
  9. private String user;
  10. @Value("${spring.datasource.mysql.password}")
  11. private String password;
  12. @Value("${spring.datasource.mysql.driverClassName}")
  13. private String driverClass;
  14. //对应mysql的mapper.xml文件路径(这就是不推荐已经写了一些功能的问题所在了,需要给这个配置的mysql库单独再写一个mapper包,另外之前写的那些也需要迁移)
  15. private static final String MAPPER_LOCATION = "classpath:mappers/mysql/*/*.xml";
  16. /**
  17. * 配置mysql DataSource
  18. */
  19. @Bean(name = "mysqlDataSource")
  20. public DataSource mysqlDataSource() {
  21. DruidDataSource dataSource = new DruidDataSource();
  22. dataSource.setDriverClassName(driverClass);
  23. dataSource.setUrl(url);
  24. dataSource.setUsername(user);
  25. dataSource.setPassword(password);
  26. return dataSource;
  27. }
  28. /**
  29. * 配置事务管理器
  30. */
  31. @Bean(name = "mysqlTransactionManager")
  32. public DataSourceTransactionManager mysqlTransactionManager() {
  33. return new DataSourceTransactionManager(mysqlDataSource());
  34. }
  35. /**
  36. * 配置SqlSession工厂
  37. */
  38. @Bean(name = "mysqlSqlSessionFactory")
  39. public SqlSessionFactory mysqlSqlSessionFactory(@Qualifier("mysqlDataSource") DataSource mysqlDataSource)
  40. throws Exception {
  41. final SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
  42. sessionFactory.setDataSource(mysqlDataSource);
  43. sessionFactory.setMapperLocations(
  44. new PathMatchingResourcePatternResolver().getResources(MysqlDataSourceConfig.MAPPER_LOCATION));
  45. return sessionFactory.getObject();
  46. }
  47. /**
  48. * 配置SqlSessionTemplate
  49. */
  50. @Bean(name = "mysqlSqlSessionTemplate")
  51. public SqlSessionTemplate mysqlSqlSessionTemplate(@Qualifier("mysqlSqlSessionFactory") SqlSessionFactory sqlSessionFactory)
  52. throws Exception {
  53. return new SqlSessionTemplate(sqlSessionFactory);
  54. }

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专属)

  1. <!--使用mybatis-plus框架配置多数据源要用的依赖-->
  2. <dependency>
  3. <groupId>com.baomidou</groupId>
  4. <artifactId>dynamic-datasource-spring-boot-starter</artifactId>
  5. <version>4.1.3</version><!--版本自选-->
  6. </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。
配置文件所有以下划线 _ 分割的数据源 首部 即为组的名称,相同组名称的数据源会放在一个组下。
切换数据源可以是组名,也可以是具体数据源名称。组名则切换时采用负载均衡算法切换。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/煮酒与君饮/article/detail/790631
推荐阅读
相关标签
  

闽ICP备14008679号