Springboot项目集成Mybatis-Plus,多数据源配置,写主读从

Dynamic DataSource 多数据源配置【 Springboot + DataSource + MyBatis Plus + Druid】 MybatisPlus多数据源配置主要解决的是多数据库连接和切换的问题。在一些大型应用中,由于数据量的增长或者业务模块的增多,可能需要访问多个数据库。这时,就需要配置多个数据源。 阅读详情

Mybatis-Plus简介

官网:Mybatis-Plus官网传送门

简介

MyBatis-Plus(简称MP),一个MyBatis的增强工具,在MyBatis的基础上只做增强不做改变,为简化开发、提高效率而生。它提供了诸如自动生成SQL、通用CRUD操作、分页插件、性能分析插件等功能,使得开发人员可以减少对于繁琐SQL编写的工作,提高代码的简洁性和可维护性。

常见用法
  • CRUD操作:

    • 插入数据:使用insert方法。
    • 删除数据:根据主键ID删除使用deleteById方法,根据条件删除使用delete方法,批量删除使用deleteBatchIds方法。
    • 更新数据:根据主键ID更新使用updateById方法,根据条件更新使用update方法。
    • 查询数据:根据主键ID查询使用selectById方法,批量查询使用selectBatchIds方法,根据条件查询使用selectList或selectPage方法。
  • 分页查询:

    MyBatis-Plus提供了强大的分页插件,可以轻松实现分页查询。首先需要在配置类中启用分页插件,然后在查询方法中使用Page对象进行分页查询。

  • 性能分析:

    MyBatis-Plus内置了性能分析插件,可以输出SQL语句及其执行时间,帮助开发人员快速定位慢查询。

  • 自定义全局通用操作:

    MyBatis-Plus支持全局通用方法注入,可以在配置类中定义全局通用的方法,并在Mapper接口中直接使用。

常用注解

MyBatis-Plus中常用的注解主要包括以下几个:

  • @TableName:
    • 用于指定实体类对应的数据库表名。
    • 当实体类名称与数据库表名不一致时,可以使用此注解进行映射。
  • @TableId:
    • 用于标识实体类的主键字段。
    • 支持多种主键生成策略,如自增(IdType.AUTO)、手动输入(IdType.INPUT)、分布式全局唯一ID(IdType.ID_WORKER、IdType.ASSIGN_ID)等。
  • @TableField:
    • 用于标识实体类中的字段与数据库表中的字段的映射关系。
    • 可以指定字段名、是否为数据库字段、自定义字段填充策略等。
    • 例如,可以使用@TableField(exist = false)表示该属性不为数据库表字段,但又是必须使用的;使用@TableField(condition = SqlCondition.LIKE)表示该属性可以模糊搜索。
  • @Version:
    • 用于实现乐观锁功能。
    • 乐观锁是一种多用户并发控制的策略,通过版本号字段来实现数据的同步控制。
  • @TableLogic:
    • 用于实现逻辑删除功能。
    • 逻辑删除是一种在数据库中标记数据为删除状态而不是物理删除的方式。
    • 使用此注解后,执行删除操作时会将逻辑删除字段修改为指定的值(默认为1),执行查询操作时会自动过滤掉逻辑删除的数据(默认为0)。
  • @EnumValue:
    • 用于处理枚举字段。
    • 可以将枚举类的值映射到数据库表中的字段上。
  • @MapperScan:
    • 用于扫描需要被MyBatis-Plus加载的Mapper接口。
    • 常用于在Spring Boot启动类上指定Mapper接口所在的包路径。
  • @Mapper:
    • 作用于数据库中的实体类对应的Mapper接口上。
    • 与@MapperScan相比,@Mapper只能映射一个实体类对应的Mapper接口,而@MapperScan可以映射整个包下的Mapper接口。

这些注解极大地简化了MyBatis-Plus的使用,使得开发人员可以更加专注于业务逻辑的实现,而不需要花费大量时间在繁琐的SQL编写和数据库表结构映射上。同时,这些注解也提供了丰富的配置选项,以满足不同场景下的需求。

常见问题及优化方案
  • 查询性能问题:

    • 当数据库中记录数量较大时,查询性能可能会受到影响。可以通过优化SQL语句、添加索引、使用分页查询等方式来提升查询性能。
    • 避免全表扫描和未加索引的查询条件。
  • 大数据量操作性能下降:

    • 在大数据量插入、更新或删除操作时,SQL执行时间较长。可以通过批量操作、关闭自动填充功能等方式来提升性能。
    • 使用MyBatis-Plus提供的批量插入、批量更新方法。
  • 分页查询问题:

    • 确保分页查询中传入了正确的分页参数,否则可能会导致返回全量数据。
    • 合理使用MyBatis-Plus提供的分页插件和Page对象进行分页查询。
  • 过度依赖通用方法:

    • MyBatis-Plus提供了大量的通用CRUD方法,但开发者容易过度依赖这些方法,导致在某些复杂场景下生成的SQL不够优化。
    • 在复杂查询场景下,可以使用XML文件或注解方式编写定制SQL语句。

Springboot项目集成Mybatis-Plus

场景:

Spring Boot项目中集成MyBatis-Plus,并实现多数据源配置 ,读写分离。

jdk及主要依赖版本说明:

jdk:1.8

springboot:2.6.4

mybatis-plus:3.5.7

mysql-connector:6.0.6

项目依赖

首先,在pom.xml文件中添加必要的依赖,包括Spring Boot的启动器、MyBatis-Plus的启动器、数据库连接池(如Druid)以及MySQL的驱动等

<dependencies>
    <!-- Spring Boot Starter Web -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <!-- MyBatis-Plus Starter -->
    <dependency>
        <groupId>com.baomidou</groupId>
        <artifactId>mybatis-plus-boot-starter</artifactId>
        <version>${mp.version}</version>
    </dependency>

    <!-- Druid DataSource Starter -->
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>druid-spring-boot-starter</artifactId>
        <version>${druid.version}</version>
    </dependency>

    <!-- MySQL Connector -->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>${mysql-connector.version}</version>
    </dependency>

    <!-- MyBatis-Plus Dynamic DataSource Spring Boot Starter (可选,用于简化多数据源配置) -->
    <dependency>
        <groupId>com.baomidou</groupId>
        <artifactId>dynamic-datasource-spring-boot-starter</artifactId>
        <version>${dynamic-datasource.version}</version>
    </dependency>
</dependencies>
配置文件

在application.yml或application.properties文件中配置多数据源的信息,包括主数据源(写)和从数据源(读)。

spring:
  datasource:
    dynamic:
      primary: master # 设置默认的数据源为主数据源
      datasource:
        master: # 主数据源配置
          url: jdbc:mysql://localhost:3306/master_db?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
          username: root
          password: root
          driver-class-name: com.mysql.cj.jdbc.Driver
          type: com.alibaba.druid.pool.DruidDataSource
        slave_1: # 从数据源配置(可以有多个从数据源)
          url: jdbc:mysql://localhost:3306/slave_db_1?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
          username: root
          password: root
          driver-class-name: com.mysql.cj.jdbc.Driver
          type: com.alibaba.druid.pool.DruidDataSource
数据源配置类

如果没有使用dynamic-datasource-spring-boot-starter,则需要手动配置数据源。以下是一个示例配置类:

@Configuration
public class DataSourceConfig {

    @Primary
    @Bean(name = "masterDataSource")
    @ConfigurationProperties(prefix = "spring.datasource.dynamic.datasource.master")
    public DataSource masterDataSource() {
        return DataSourceBuilder.create().build();
    }

    @Bean(name = "slaveDataSource")
    @ConfigurationProperties(prefix = "spring.datasource.dynamic.datasource.slave_1")
    public DataSource slaveDataSource() {
        return DataSourceBuilder.create().build();
    }

    // 配置数据源路由等逻辑(如果使用动态数据源则不需要手动配置)
}

但如果你使用了dynamic-datasource-spring-boot-starter,则上述配置类可以省略,因为它会自动根据配置文件加载数据源。

使用@DS注解指定数据源

在Service层的方法或类上使用@DS注解来指定使用哪个数据源。默认情况下,会使用主数据源;如果需要读取操作使用从数据源,可以在方法上指定@DS("slave_1")。

@Service
public class UserService {

    @Autowired
    private UserMapper userMapper;

    // 默认使用主数据源(写操作)
    public void addUser(User user) {
        userMapper.insert(user);
    }

    // 指定使用从数据源(读操作)
    @DS("slave_1")
    public List<User> getUsers() {
        return userMapper.selectList(null);
    }
}
Mapper接口与实体类

创建Mapper接口和对应的实体类,这些类通常与MyBatis-Plus的单数据源配置相同。

// User实体类
public class User {
    private Long id;
    private String name;
    // 其他字段...
    // getters and setters...
}

// UserMapper接口
public interface UserMapper extends BaseMapper<User> {
    // 可以添加自定义的Mapper方法(如果需要)
}
启动类

在Spring Boot的启动类上添加@MapperScan注解来扫描Mapper接口。

@SpringBootApplication
@MapperScan("com.example.mapper")
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}
测试与验证

启动Spring Boot应用程序,并通过Controller层调用Service层的方法,验证写主读从的数据源切换是否生效。

生产环境配置样例

在生产环境中配置多数据源信息时,需要特别注意配置的准确性、安全性以及可维护性。以下是一个相对合理的application.yml配置样例,以及配置时需要注意的关键点:(或许有坑,仅供参考)

spring:
  datasource:
    dynamic:
      primary: master # 设置默认的数据源为主数据源
      strict: true # 严格匹配数据源,未匹配到指定数据源时抛异常
      datasource:
        master: # 主数据源配置
          url: jdbc:mysql://db-master.example.com:3306/master_db?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai&useSSL=false
          username: master_user
          password: ENC(encrypted_master_password) # 使用加密后的密码(如使用Jasypt等加密工具)
          driver-class-name: com.mysql.cj.jdbc.Driver
          type: com.alibaba.druid.pool.DruidDataSource
          druid:
            initial-size: 5
            min-idle: 5
            max-active: 20
            max-wait: 60000
            time-between-eviction-runs-millis: 60000
            min-evictable-idle-time-millis: 300000
            validation-query: SELECT 1 FROM DUAL
            test-while-idle: true
            test-on-borrow: false
            test-on-return: false
            pool-prepared-statements: true
            max-pool-prepared-statement-per-connection-size: 20
            stat-view-servlet:
              enabled: true
            filter:
              stat:
                log-slow-sql: true
                slow-sql-millis: 2000
        slave_1: # 从数据源配置(可以有多个从数据源)
          url: jdbc:mysql://db-slave1.example.com:3306/slave_db_1?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai&useSSL=false
          username: slave_user_1
          password: ENC(encrypted_slave_password_1) # 使用加密后的密码
          driver-class-name: com.mysql.cj.jdbc.Driver
          type: com.alibaba.druid.pool.DruidDataSource
          # 可以根据需要从druid配置中复制相关配置项
配置时需要注意的关键点
  • 数据源URL:
    • 确保数据库URL正确无误,包括IP地址、端口号、数据库名以及必要的连接参数。
    • 在生产环境中,通常不会使用localhost,而是使用实际的数据库服务器地址。
  • 数据库用户名和密码:
    • 使用具有适当权限的数据库用户。
    • 密码应使用加密工具进行加密存储,避免明文密码泄露。
  • 驱动类名称:
    • 确保使用与数据库版本相匹配的JDBC驱动类。
  • 连接池配置:
    • 根据实际业务需求配置连接池的大小,包括初始大小、最小空闲连接数、最大活跃连接数等。
    • 配置连接池的其他相关参数,如连接验证查询、空闲连接测试、连接泄漏检测等。
  • 安全性:
    • 避免在配置文件中存储敏感信息,如明文密码。
    • 使用加密工具对敏感信息进行加密存储。
    • 确保配置文件具有适当的访问权限,防止未经授权的访问。
  • 可维护性:
    • 使用易于理解和维护的配置格式,如YAML或Properties。
    • 对配置项进行注释,说明其用途和取值范围。
    • 将配置文件与代码库分离,以便进行版本控制和审计。
  • 数据源切换:
    • 确保在代码中正确使用数据源切换注解或逻辑,以实现读写分离。
    • 对数据源切换进行充分的测试,以确保其正确性和可靠性。
  • 监控和日志:
    • 配置数据源监控和日志记录,以便及时发现和解决数据库连接问题。
    • 监控数据库连接池的使用情况,包括连接数、活动连接数、空闲连接数等。

通过以上配置和注意事项,可以在生产环境中实现多数据源的安全、可靠和高效配置。

如何在Mybatis-Plus中执行自定义sql

在MyBatis-Plus中执行自定义SQL主要有两种方式:使用XML映射文件和注解方式。

使用XML映射文件
步骤:
  1. 创建Mapper接口:定义一个Mapper接口,这个接口可以继承BaseMapper(如果你还需要使用MyBatis-Plus提供的通用方法),也可以不继承。

  2. 编写XML映射文件:在resources/mapper目录下创建一个与Mapper接口同名的XML文件。在这个XML文件中,你可以编写自定义的SQL语句。

  3. 在Mapper接口中定义方法:这些方法的名字和参数需要与XML文件中的SQL语句相匹配。

  4. 配置MyBatis-Plus:确保你的MyBatis-Plus配置正确,能够扫描到你的Mapper接口和XML文件。

示例:

Mapper接口:

public interface UserMapper {
    // 自定义查询方法
    List<User> selectUsersByCondition(@Param("condition") String condition);
}

XML映射文件(UserMapper.xml):

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
  PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.mapper.UserMapper">

    <select id="selectUsersByCondition" resultType="com.example.entity.User">
        SELECT * FROM tb_user WHERE some_column LIKE CONCAT('%', #{condition}, '%')
    </select>

</mapper>
使用注解方式
步骤:
  1. 创建Mapper接口:直接在Mapper接口的方法上使用MyBatis提供的注解(如@Select、@Update、@Insert、@Delete等)来编写SQL语句。

  2. 配置MyBatis-Plus:确保你的MyBatis-Plus配置正确,能够扫描到你的Mapper接口。

示例:

Mapper接口:

public interface UserMapper extends BaseMapper<User> {
    // 自定义查询方法,使用注解方式
    @Select("SELECT * FROM tb_user WHERE some_column LIKE CONCAT('%', #{condition}, '%')")
    List<User> selectUsersByCondition(@Param("condition") String condition);
}
注意事项
  • 当使用XML映射文件时,确保XML文件的命名和位置正确,并且与Mapper接口在同一命名空间中。
  • 当使用注解方式时,确保注解中的SQL语句正确,并且参数占位符与方法参数相匹配。
  • 在Spring Boot项目中,通常不需要手动配置MyBatis-Plus的Mapper扫描路径,因为可以通过@MapperScan注解在启动类上指定扫描路径。
  • 如果你的Mapper接口继承了BaseMapper,那么你仍然可以在接口中定义自定义方法,这些方法不会与BaseMapper中的方法冲突。

通过以上两种方式,你可以在MyBatis-Plus中灵活地执行自定义SQL语句,以满足不同业务场景的需求。

SqlRunner

在MyBatis-Plus中,如果不使用XML和注解来执行自定义SQL语句,实际上是比较受限的,因为MyBatis-Plus的设计初衷就是为了简化CRUD操作,并提供了一套强大的条件构造器来生成动态SQL。然而,仍然有一些方法可以间接地实现自定义SQL的执行,但通常这些方法并不是MyBatis-Plus推荐的主流做法。

一种可能的方法是使用MyBatis-Plus提供的SqlRunner类(如果版本支持的话),这个类允许你直接执行原生SQL语句。但请注意,这种方法可能并不是所有版本的MyBatis-Plus都支持,而且它通常用于执行一些较为简单的SQL操作,比如查询、插入、更新和删除等。

以下是一个使用SqlRunner执行自定义SQL的示例(假设MyBatis-Plus支持此功能):

// 假设你要执行一个查询操作
String sql = "SELECT * FROM user WHERE name = ?";
List<User> users = SqlRunner.db().selectList(sql, "特定用户名");

// 假设你要执行一个插入操作
String insertSql = "INSERT INTO user (name, age) VALUES (?, ?)";
SqlRunner.db().insert(insertSql, "新用户", 25);

配置文件中需要启用sql-runner

mybatis-plus:
  global-config:
    enable-sql-runner: true

然而,需要注意的是,SqlRunner类的使用可能并不是所有MyBatis-Plus项目中的标准做法,因为它绕过了MyBatis-Plus的Mapper接口和XML映射文件,直接执行了原生SQL。这可能会导致一些与MyBatis-Plus的ORM框架特性不兼容的问题,比如事务管理、缓存机制等。

另外,如果你确实需要在MyBatis-Plus中执行复杂的自定义SQL,而且又不希望使用XML或注解,那么你可能需要考虑以下替代方案:

  1. 使用MyBatis的原生API:虽然这会增加一些复杂性,但你可以通过MyBatis的SqlSession来执行原生SQL语句。这通常需要你手动管理SQL会话和事务。

  2. 使用存储过程或函数:将复杂的SQL逻辑封装在数据库端的存储过程或函数中,并通过MyBatis-Plus(或MyBatis)调用这些存储过程或函数。这可以简化应用程序中的代码,但可能会增加数据库的复杂性。

  3. 考虑使用其他ORM框架:如果MyBatis-Plus的限制无法满足你的需求,你可以考虑使用其他更灵活的ORM框架,比如Hibernate或JPA等。这些框架可能提供了更多的自定义SQL执行方式。

综上所述,虽然MyBatis-Plus提供了强大的条件构造器和通用Mapper来简化CRUD操作,但在某些情况下你可能需要执行自定义SQL语句。在不使用XML和注解的情况下,你可以考虑使用SqlRunner(如果可用)、MyBatis的原生API、存储过程或函数,或者考虑使用其他ORM框架来满足你的需求。然而,请务必权衡这些方法的优缺点,并根据你的具体项目需求做出选择。

SpringBoot【十一】mybatis-plus实现多数据源配置,开箱即用! 阅读详情

相关推荐

SpringBoot 集成mybatis-plus

本篇博客,基于mybatis-plus官网,简单了解和实际运用mybatis-plusMyBatis-Plus 是 一个 MyBatis的增强工具,为简化springboot开发、提高效率而生。简介 | MyBatis-Plus。

m0_74824517的博客 1033

MybatisPlus不依赖实体执行原生SQL

【代码】MybatisPlus不依赖实体执行原生SQL。

Good Luck 6919

Mybatis-plus实现多数据源主从库读取写入

之前的项目都是使用通用Mapper,对于简单的单表CRUD无论是通用Mapper和MP都是支持的很好了,无论选择哪种都能适用我们的项目,为什么之前用的通用Mapper现在想用MP呢,主要是通用Mapper的社区太不活跃了,遇到问题在群里提出问题的时候,基本上是没人回复的,相比这些MP就比较好了。 对于MP的使用,看MP的文档,已经基本就会用了,这些对新手还是挺好的。 我这边用的是S...

qq904274014的博客 4859

Mybatis 一连串提问,被面试官吊打了!

点击关注公众号,实用技术文章及时了解最近出去面试,在简历中写了些关于Mybatis的技术点,于是面试官就开始对我不断询问,本文特意记录下面试中遇到的一些问题。说说什么是MybatisMyb...

Java知音 3100

springboot+mybatis-plus实现多数据源(从数据库加载多数据源)

所以我们初始化的时候就需要配置这两个属性,默认数据源就是主数据源。但是我们初始化的时候数据源对象还没生成并没有读取数据库,那我们的数据源怎么加载了,这里我用到了一个全局的hashMap。springboot+mybatis-plus配置多数据源的方式网上有很多,但是都是把数据源配置在yml或者properties中,由于本人所在项目需要从数据库加载数据源,所以本文介绍本人实现的方法是从数据库加载数据源。4.经过上面的,主数据源就已经配置完成了,并且提供的一个可以随时添加数据源的map。...

web18224617243的博客 6077

VCS HVP与验证计划planner:数字IC验证环境搭建与收敛实践

在数字IC验证中,VCS 是广泛使用的编译型仿真器,HVP 通常指面向硬件验证平台的高性能编译选项集,用于开启 SystemVerilog 类、随机约束和 NTB 等能力;planner 则指验证计划管理,核心是把功能点与测试用例、覆盖点建立映射。理解 VCS 先编译后仿真的原理,有助于优化增量编译、调试访问和覆盖率采集,提升回归收敛效率。规划驱动让激励不再散落,设计改版时能快速定位受影响用例,交接和覆盖率收敛更有依据。无论是 UVM 环境搭建、编译参数选择,还是验证计划表维护,都需要把工具选项与规划方法结

weixin_42543046的博客 338

mybatis-plus执行原生sql

演示查询和更新代码、绑定参数。

iteye_20220的博客 3188

绝缘检测原理和绝缘电阻计算方法

绝缘检测的目的就是计算绝缘电阻,当绝缘电阻低于某个阈值,则很可能会造成电池短路、漏电,威胁人员安全

m0_56208280的博客 4万+

【原创】MybatisPlus调用原生SQL的三种方法

这篇文章破天荒的介绍了三种使用MybatisPlus查询原生SQL的方法,可以说是全网独有的。

DCTANT的博客 3万+

FOC项目知识点总结三 | 完全搞懂 Clarke 与 Park 变换(附动图,仿真文件以及详细讲解数学推导过程)

本文目的,最终可以完整推算两种变换 Clarke 变换 首先先看我们需要用到的两种坐标系 1. 自然坐标系 abcabcabc 我们知道,通过三相逆变电路,我们可以画出一个自然坐标系 abcabcabc ,即三相电压的坐标系,通入的电流在这三轴坐标系中变化: 将三个矢量相加合并在一起就如下图所展现: 使用三个坐标轴来表示十分的麻烦与不直观,因为其是非正交的,于是乎我们想要将其转化成使用两个正交的坐标轴来表示,于是乎便有了 Clarke变换。 Clarke 变换的作用: 将基于三轴二维的定子静止坐标系的各

Wilson Huang的博客 3万+

python123题目——个税计算器

类型:简单分支。

m0_62488776的博客 5803

MybatisPlus3.4.2使用SqlRunner分页查询不释放连接

前一段时间项目组进行了MybatisPlus版本升级,升到了最新的3.4.2版本。其它功能正常运行。突然某一天测试发现某一个功能打开列表页会卡住。 经过一系列测试发现是数据库连接满了。查看SqlRunner源码可以看出来 @Transactional @Override public boolean update(String sql, Object... args) { SqlSession sqlSession = sqlSession(); try {

easypoi代码导出自定义样式 4387

CMOS传输门(互补开关)实战指南 | 设计优化 + 常见问题解析

本文深入解析CMOS传输门(互补开关)的设计优化与常见问题,涵盖导通特性、版图设计、高频应用及混合信号设计等关键领域。通过实测数据和优化技巧,帮助工程师解决衬底连接、信号完整性等实际问题,提升数字和模拟混合信号设计的效率与可靠性。

weixin_29229989的博客 161

SpringBoot整合Mybatis-Plus、Druid配置多数据源

本文将介绍如何使用Spring Boot框架整合MyBatis和Druid多数据源,并包含以下内容: 概述Spring Boot、MyBatis和Druid 环境准备和依赖配置 配置多数据源 配置MyBatis 配置Druid连接池 使用MyBatis访问多数据源 代码实现和测试 通过本文的阅读,学习到如何使用Spring Boot框架整合MyBatis和Druid多数据源,能够帮助您更快速、更高效地开发企业级应用程序。

拾一二的博客 1万+

(NOI)打表骗分过样例,暴力枚举出奇迹1.8.22题解

                                                                                                                                                           48818 B题解 #include &lt;iostream&gt; u...

Owen20071026的博客 3127

新手小白如何学习编程

学习目标推荐第一门语言优势网站 / APP 开发(前端)JavaScript浏览器原生支持,能快速做出可视化效果后端 / 服务器 / 数据分析Python语法简洁像英语,库多、应用广(入门友好)游戏开发先用电竞入门,再转专业引擎硬件 / 嵌入式(比如单片机)C 语言贴近硬件,行业标准办公自动化(Excel / 文档处理)Python快速解决重复工作(比如批量改文件)👉新手首选推荐。

2501_94331842的博客 2232

SpringBoot 整合 Mybatis-plus(三) 多数据源配置

SpringBoot 整合 Mybatis-plus 之 多数据源配置1、环境搭建2、配置步骤 1、环境搭建 新建一个 Module,用于搭建多数据源配置,选择如下依赖: 完成后的目录结构如下:(删除不必要的文件) 使用 mp代码生成器生成完整的目录结构(也可不用) 2、配置步骤 pom文件引入依赖 <dependency> <groupId>com.baomidou</groupId> <artif

小天儿の博客 2160

【100%通过率】2024华为OD机试真题E卷 C++语言 实现【流浪地球】

流浪地球计划在赤道上均匀部署了N个转向发动机,按位置顺序编号为0~N-1。 1) 初始状态下所有的发动机都是未启动状态; 2) 发动机起动的方式分为“手动启动”和“关联启动”两种方式; 3) 如果在时刻1一个发动机被启动,下一个时刻2与之相邻的两个发动机就会被“关联启动”; 4) 如果准备启动某个发动机时,它已经被启动了,则什么都不用做; 5) 发动机0与发动机N-1是相邻; 地球联合政府准备挑选某些发动机在某些时刻进行“手动启动”,当然最终所有的发动机都会被启动。 哪些发动机最晚被启动呢?

MISAYAONE的博客 4212

Gradle + SpringBoot + Mybatis-plus + 代码生成器 + 多数据源配置

gradle整合(全)1. 新建 gradle 项目(有网络情况下)1.1 新建 SpringBoot 项目1.2 运行项目2. gradle 整合 mybatis-plus2.1 前言2.2 添加依赖2.3 配置文件2.4 基本配置完成3. 代码生成器3.1 添加依赖3.2 配置文件3.3 运行代码生成器3.4 启动类添加注解3.5 运行 Application4. 简单CRUD 测试4.1 简单查询测试4.2 略5. 多数据源配置 1. 新建 gradle 项目(有网络情况下) 1.1 新建 Spri

小天儿の博客 3597

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

SpringBoot集成Mybatis Plus【附源码】

Mybatis plus是一个MyBatis的增强工具,在MyBatis的基础上只做增强不做改变,为简化开发、提高效率而生。

笑小枫 2583

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Java框架—SpringBoot+MyBatis实现多数据源配置

spring:druid:master:slave:DruidDataSourceAutoConfigure会注入一个DataSourceWrapper,其会在原生的spring.datasource下找 url, username, password 等。动态数据源 URL 等配置是在 druid下,因此需要排除,否则会报错。

weixin_41624547的博客 4491

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

springboot整合mybatis-plus、druid连接池和多数据源配置

在使用springboot开发业务应用程序的过程中,使用多数据源的场景很常见。目前,业界常用的spring boot整合多数据源的方案主要有两个,一个是Mapper分包方式,另一个是AOP切片方式。针对这种多数据源使用场景的痛点,MyBatis-plus团队开源了一个更为方便的解决方案(https://mp.baomidou.com/guide/dynamic-datasource.html),但是对于整合druid数据库连接池,却没有给出具体的使用示例。本篇文章就是使用springboot整合mybati

WorldMvp的专栏 1万+

SpringBoot2集成mybatis-plus

目录前言pom.xml添加依赖配置mybatis-plus添加application-mybatisplus.yml添加MyBatisPlusConfig.javaapplication.java配置@MapperScan配置代码生成器MysqlGenerator使用示例说明更详细内容请参考GitHub项目 前言 Mybatis-Plus是一个优秀的Mybatis增强工具,目前更新到3.1.1。M...

hrt的博客 3万+

springboot集成MyBatis-Plus

MyBatis-Plus 的集成和使用在 Spring Boot 项目中非常简单。通过 `mybatis-plus-boot-starter`,开发者可以轻松构建基础的 CRUD 操作,并利用 MyBatis-Plus 提供的查询构造器、分页插件等功能,快速处理复杂的业务需求。 - **基础 CRUD**:通过继承 `BaseMapper`,可以直接调用常用的数据库操作方法。 - **复杂查询**:利用 `QueryWrapper` 和 `UpdateWrapper`,实现灵活的条件查询和更新。 - *

Flying_Fish_roe的博客 3143

Springboot+MyBatis-Plus+druid多数据源配置实现

Springboot+MyBatis-Plus+druid多数据源配置实现 一.背景 业务上需求或者业务的扩展需要分库,多数据源的配置使用在业务开发中常常会用到。MyBatis-plus官网(https://mp.baomidou.com/guide/dynamic-datasource.html)对如何配置多数据源给出了范例,但对于整合druid数据库连接池却没有具体的实施范例。 二.依赖 <parent> <groupId>org.springframework.boot<

sunrise_zhu的专栏 7966
上一篇: 设计模式学习之——观察者模式
下一篇: 设计模式学习之——常见设计模式总览
Jack_abu
博客等级 码龄10年 633粉丝 78原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

打赏作者

Jack_abu

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

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

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

打赏作者

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

抵扣说明:

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

余额充值