注册
springboot3.3.4+mybatis-plus3.5.8+达梦8连接支持多数据源
培训园地/ 文章详情 /

springboot3.3.4+mybatis-plus3.5.8+达梦8连接支持多数据源

断夜……剑原 2025/08/06 101 1 0

pom关键模块如下

<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>3.3.4</version>
    </parent>
<dependencies>
<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
<dependency>
            <groupId>dm</groupId>
            <artifactId>DmJdbcDriver18</artifactId>
            <version>18</version>
        </dependency>
<dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-spring-boot3-starter</artifactId>
            <version>3.5.8</version>
        </dependency>
<dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>dynamic-datasource-spring-boot3-starter</artifactId>
            <version>4.3.0</version>
        </dependency>
 <!-- lombok(可选) -->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
</dependencies>

后台配置文件

spring:
  datasource:
    dynamic:
      primary: master
      strict: false
      datasource:
        dm1:
          driver-class-name: dm.jdbc.driver.DmDriver
          url: jdbc:dm://127.0.0.1:5236/DAMENG
          username: USER1
          password: PASSWORD
        dm2:
          driver-class-name: dm.jdbc.driver.DmDriver
          url: jdbc:dm://127.0.0.1:5236/DAMENG
          username: USER2
          password: PASSWORD

实体对象如下:

@Data
@TableName("tb_user")
public class Userimplements Serializable {
    private String id;
    private String name;
    private String loginName;
}

UserMapper.sqlmap.xml文件如下:

<?xml version="1.0" encoding="UTF-8" ?>
<mapper namespace="UserMapper">
    <select id="getUserInfo" parameterType="String" resultMap="User">
        select id as "id", name as "name",login_name as "loginName"
        where id=#{id}
    </select>

</mapper>

Mapper对象如下:

@Mapper
public interface UserMapper extends BaseMapper<User>{
    User getUserInfo(id);
}

Service层代码如下:

@Slf4j
@Service
public class UserService {
    @Autowired
    private UserMapper  userMapper;

    public User userInfo(String userId) {
        return userMapper.getUserInfo(userId);
    }
}

使用 @DS 注解
• 标注在方法上 :在需要切换数据源的方法上添加 @DS 注解,指定具体的数据源名称。比如@DS("dm2"),则此方法会查询配置文件(spring.datasource.dynamic.datasource.dm2)对应的数据库,
• 标注在类上 :若在一个类上添加 @DS 注解,则该类中的所有方法默认都使用指定的数据源。但若类中的某个方法也标注了 @DS 注解,则方法上的注解会覆盖类上的注解,以方法指定的数据源为准。

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服