当前位置: 代码网 > it编程>编程语言>Java > SpringCloud集成MybatisPlus实现MySQL多数据源配置方法

SpringCloud集成MybatisPlus实现MySQL多数据源配置方法

2024年10月27日 Java 我要评论
引入依赖<dependency> <groupid>com.baomidou</groupid> <artifactid>mybatis-p

引入依赖

<dependency>
    <groupid>com.baomidou</groupid>
    <artifactid>mybatis-plus-boot-starter</artifactid>
    <version>3.4.0</version>
</dependency>
<dependency>
    <groupid>com.alibaba</groupid>
    <artifactid>druid</artifactid>
    <version>1.1.15</version>
</dependency>
<dependency>
    <groupid>org.springframework.boot</groupid>
    <artifactid>spring-boot-starter-jdbc</artifactid>
</dependency>
<dependency>
    <groupid>org.springframework.boot</groupid>
    <artifactid>spring-boot-starter-test</artifactid>
    <scope>test</scope>
</dependency>

配置多数据源

在application.properties中配置多数据源:

spring.datasource.master.driver-class-name=com.mysql.jdbc.driver
spring.datasource.master.url=jdbc:mysql://localhost:3306/test?useunicode=true&characterencoding=utf8&usessl=false&servertimezone=utc
spring.datasource.master.username=root
spring.datasource.master.password=root
spring.datasource.slave.driver-class-name=com.mysql.jdbc.driver
spring.datasource.slave.url=jdbc:mysql://localhost:3306/test1?useunicode=true&characterencoding=utf8&usessl=false&servertimezone=utc
spring.datasource.slave.username=root
spring.datasource.slave.password=root
spring.datasource.type=com.alibaba.druid.pool.druiddatasource
spring.datasource.pool.init-size=10
spring.datasource.pool.max-size=20
spring.datasource.pool.min-size=5
spring.datasource.pool.max-wait=30000
spring.datasource.filters=stat,wall,log4j
spring.datasource.log-enabled=true
spring.datasource.log-prefix=druid.log
spring.datasource.stat-view-servlet.enabled=true
spring.datasource.stat-view-servlet.url-pattern=/druid/*
spring.datasource.web-stat-filter.enabled=true
spring.datasource.web-stat-filter.exclusions=*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*
spring.datasource.max-total=20
spring.datasource.max-idle=10
spring.datasource.min-idle=5
spring.datasource.time-between-eviction-runs-millis=60000
spring.datasource.min-evictable-idle-time-millis=300000
spring.datasource.validation-query=select 1 from dual
spring.datasource.test-on-borrow=true
spring.datasource.test-on-return=true
spring.datasource.test-while-idle=true
spring.datasource.remove-abandoned=true
spring.datasource.remove-abandoned-timeout=60000
spring.datasource.log-abandoned=true

配置解释

这是一个spring boot应用程序中用于配置数据库连接的属性文件。以下是每个配置项目的解释:

  • spring.datasource.master.driver-class-name: 指定主数据库的jdbc驱动程序类名,这里是mysql数据库的驱动类。
  • spring.datasource.master.url: 主数据库的jdbc url,指定了数据库的位置和连接参数,包括字符编码、时区等。
  • spring.datasource.master.username: 主数据库的用户名。
  • spring.datasource.master.password: 主数据库的密码。
  • spring.datasource.slave.driver-class-name: 指定从数据库(副本)的jdbc驱动程序类名,同样是mysql数据库的驱动类。
  • spring.datasource.slave.url: 从数据库的jdbc url,与主数据库不同的地方可能包括不同的数据库名称或连接参数。
  • spring.datasource.slave.username: 从数据库的用户名。
  • spring.datasource.slave.password: 从数据库的密码。
  • spring.datasource.type: 数据源类型,这里使用了阿里巴巴的druid数据源。
  • spring.datasource.pool.init-size: 数据源的初始连接池大小,表示在启动时会创建的数据库连接数。
  • spring.datasource.pool.max-size: 数据源的最大连接池大小,表示连接池中允许存在的最大连接数。
  • spring.datasource.pool.min-size: 数据源的最小连接池大小,表示连接池中允许存在的最小连接数。
  • spring.datasource.pool.max-wait: 获取连接时的最大等待时间(毫秒),如果连接池中的连接都被占用,且达到最大连接数,新请求会等待一段时间。
  • spring.datasource.filters: 数据源的过滤器,可以用于监控、安全等目的。这里包括了统计(stat)、sql防火墙(wall)和日志(log4j)。
  • spring.datasource.log-enabled: 是否启用druid的连接池日志。
  • spring.datasource.log-prefix: 连接池日志的前缀。
  • spring.datasource.stat-view-servlet.enabled: 是否启用druid的统计数据查看servlet。
  • spring.datasource.stat-view-servlet.url-pattern: 统计数据查看servlet的url路径。
  • spring.datasource.web-stat-filter.enabled: 是否启用druid的web统计过滤器。
  • spring.datasource.web-stat-filter.exclusions: 需要排除统计的资源路径,如javascript、图片等。
  • spring.datasource.max-total: 最大活动连接数,与spring.datasource.pool.max-size相同。
  • spring.datasource.max-idle: 最大空闲连接数。
  • spring.datasource.min-idle: 最小空闲连接数。
  • spring.datasource.time-between-eviction-runs-millis: 连接池定期检查空闲连接的时间间隔。
  • spring.datasource.min-evictable-idle-time-millis: 连接池中连接的最小空闲时间,超过此时间的连接将被回收。
  • spring.datasource.validation-query: 用于验证连接是否有效的sql查询。
  • spring.datasource.test-on-borrow: 是否在借用连接时测试连接的有效性。
  • spring.datasource.test-on-return: 是否在归还连接时测试连接的有效性。
  • spring.datasource.test-while-idle: 是否在连接空闲时测试连接的有效性。
  • spring.datasource.remove-abandoned: 是否移除长时间未使用的连接。
  • spring.datasource.remove-abandoned-timeout: 设置长时间未使用连接的超时时间。
  • spring.datasource.log-abandoned: 是否记录移除连接的日志。
  • 这些配置项用于定义应用程序与数据库之间的连接池、数据库连接属性和连接池监控等相关设置。不同的配置项可以根据应用程序的需求进行调整。

配置mybatisplus

在application.properties中配置mybatisplus:

mybatis-plus.mapper-locations=classpath:mapper/*.xml
mybatis-plus.global-config.id-type=auto
mybatis-plus.global-config.db-config.logic-delete-value=1
mybatis-plus.global-config.db-config.logic-not-delete-value=0
mybatis-plus.global-config.base-namespace=test
mybatis-plus.global-config.mapper-namespace=test.mapper

配置mybatisplus解释

这是一个mybatis plus(通常简称为mybatis+或mp)的配置文件,用于配置mybatis plus在spring boot应用程序中的行为。以下是每个配置项目的解释:

  • mybatis-plus.mapper-locations=classpath:mapper/*.xml: 这个配置项指定了mybatis plus的mapper xml文件的位置。在这个例子中,它告诉mybatis plus在类路径下的"mapper"目录中查找所有以".xml"结尾的文件,以作为mapper定义文件。
  • mybatis-plus.global-config.id-type=auto: 这个配置项指定了主键id的生成策略。在这里,设置为"auto"表示使用数据库自动生成的主键值,这通常是由数据库管理的自增长或唯一标识符。
  • mybatis-plus.global-config.db-config.logic-delete-value=1: 这个配置项指定了逻辑删除的值。在mybatis plus中,逻辑删除是一种通过标记记录来表示删除状态的方式,这里设置为"1"表示已删除。
  • mybatis-plus.global-config.db-config.logic-not-delete-value=0: 这个配置项指定了逻辑未删除的值。在mybatis plus中,这是指记录未被删除的状态,这里设置为"0"表示未删除。
  • mybatis-plus.global-config.base-namespace=test: 这个配置项指定了基础的mapper命名空间。这个命名空间将会被用于生成mapper接口的全限定名,通常与包名相关联。
  • mybatis-plus.global-config.mapper-namespace=test.mapper: 这个配置项指定了mapper接口的命名空间。在mybatis plus中,mapper接口与xml文件相关联,这个配置项将会在生成的mapper接口中设置xml文件的命名空间。
  • 这些配置项用于自定义mybatis plus的行为,包括主键生成策略、逻辑删除的值、mapper接口命名空间等。它们允许根据应用程序的需求来配置和控制mybatis plus的行为。

配置mapper

创建一个mapper接口,例如usermapper:

@mapper
public interface usermapper extends basemapper<user> {
}

使用多数据源

在需要使用多数据源的地方,使用@mapperscan注解指定mapper所在包路径:

@springbootapplication
@enablediscoveryclient
public class application {
    public static void main(string[] args) {
        springapplication.run(application.class, args);
    }
    @mapperscan("com.example.demo.mapper")
    public class myapp {
        // ...
    }
}

crud示例

@service
public class userserviceimpl implements userservice {
    @autowired
    private usermapper usermapper;
    @override
    public user save(user user) {
        return usermapper.save(user);
    }
    @override
    public user update(user user) {
        return usermapper.updatebyid(user);
    }
    @override
    public user findbyid(long id) {
        return usermapper.selectbyid(id);
    }
    @override
    public void delete(long id) {
        usermapper.deletebyid(id);
    }
}
@restcontroller
@requestmapping("/user")
public class usercontroller {
    @autowired
    private userservice userservice;
    @postmapping
    public user save(@requestbody user user) {
        return userservice.save(user);
    }
    @putmapping("/{id}")
    public user update(@pathvariable long id, @requestbody user user) {
        user.setid(id);
        return userservice.update(user);
    }
    @getmapping("/{id}")
    public user findbyid(@pathvariable long id) {
        return userservice.findbyid(id);
    }
    @deletemapping("/{id}")
    public void delete(@pathvariable long id) {
        userservice.delete(id);
    }
}

使用不同数据源

要使用不同的数据源查询,可以在mapper接口中使用@mapperscan注解指定需要使用的数据源,例如:

@mapperscan("com.example.demo.mapper.master")
public interface usermappermaster extends basemapper<user> {
}
@mapperscan("com.example.demo.mapper.slave")
public interface usermapperslave extends basemapper<user> {
}

然后在需要使用不同数据源的地方,使用@autowired注解注入对应的mapper接口,例如:

@service
public class userserviceimpl implements userservice {
    @autowired
    private usermappermaster usermappermaster;
    @autowired
    private usermapperslave usermapperslave;
    @override
    public user save(user user) {
        return usermappermaster.save(user);
    }
    @override
    public user update(user user) {
        return usermappermaster.updatebyid(user);
    }
    @override
    public user findbyid(long id) {
        return usermappermaster.selectbyid(id);
    }
    @override
    public void delete(long id) {
        usermappermaster.deletebyid(id);
    }
}

要在某个方法上使用不同的数据源,可以在该方法上使用@mapperscan注解指定需要使用的数据源,例如:

@service
public class userserviceimpl implements userservice {
    @autowired
    private usermappermaster usermappermaster;
    @autowired
    private usermapperslave usermapperslave;
    @override
    public user save(user user) {
        return usermappermaster.save(user);
    }
    @override
    public user update(user user) {
        return usermappermaster.updatebyid(user);
    }
    @override
    public user findbyid(long id) {
        return usermappermaster.selectbyid(id);
    }
    @override
    public void delete(long id) {
        usermappermaster.deletebyid(id);
    }
    @mapperscan("com.example.demo.mapper.slave")
    @override
    public user findbyidslave(long id) {
        return usermapperslave.selectbyid(id);
    }
}

到此这篇关于springcloud集成mybatisplus实现mysql多数据源配置的文章就介绍到这了,更多相关springcloud mybatisplus mysql多数据源内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com