当前位置: 首页 > article >正文

MyBatis-Plus速成指南:通用枚举 多数据源

通用枚举:

  1. 概述:
    1. 表中有些字段值是固定的,例如性别(男或女),此时我们可以使用 MyBatis-Plus 的通用枚举来实现
  2. 数据库表添加字段:
  3. 创建通用枚举类型:
    @Getter
    public enum SexEnum {MALE(1, "男"),FEMALE(2, "女");@EnumValueprivate Integer sex;private String sexName;SexEnum(Integer sex, String sexName) {this.sex = sex;this.sexName = sexName;}
    }
  4. 配置扫描通用枚举:
    # 配置MyBatis日志
    mybatis-plus:configuration:log-impl: org.apache.ibatis.logging.stdout.StdOutImplglobal-config:db-config:#配置 MyBatis-Plus 操作表的前缀table-prefix: t_#配置 MyBatis-Plus 的主键策略id-type: auto#配置扫描通用枚举type-enums-package: com.springboot.mybatisplus.enums
  5. 测试:
    //枚举使用:
    @Test
    public void testSexEnum(){User user = new User();user.setName("张三");user.setAge(20);//设置性别信息为枚举项,会将 @EnumValue 注解所标识的属性值存储到数据库user.setSex(SexEnum.MALE);userMapper.insert(user);
    }

代码生成器:

  1. 引入依赖:
    <!--代码生成器依赖-->
    <dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-generator</artifactId><version>3.5.1</version>
    </dependency>
    <dependency><groupId>org.freemarker</groupId><artifactId>freemarker</artifactId><version>2.3.31</version>
    </dependency>
  2. 快速生成:
    public class FastAutoGeneratorTest {public static void main(String[] args) {FastAutoGenerator.create("jdbc:mysql://localhost:3306/mybatis_plus","root","root").globalConfig(builder -> {//设置作者builder.author("root").enableSwagger()    //开启 swagger 模式.fileOverride()     //覆盖已生成文件.outputDir("D://mybatis_lus");  //指定输出路径}).packageConfig(builder -> {builder.parent("com.springboot")   //设置父包名.moduleName("mybatisplus")  //设置父包名//设置 mapperxml 生成路径.pathInfo(Collections.singletonMap(OutputFile.mapperXml,"D://mybatis_lus"));}).strategyConfig(builder -> {builder.addInclude("t_user")    //设置需要生成的表名.addTablePrefix("t_","c_");     //设置过滤表前缀})//使用Freemarker 引擎模板,默认的是 velocity 引擎模板.templateEngine(new FreemarkerTemplateEngine()) .execute();}
    }

多数据源:

  1. 简介:
    1. 适用于多种场景:纯粹多库、读写分离、一主多从、混合模式等
  2. 模拟多库:
    1. 创建两个库,分别为:mybatis_plus(以前的库不动) 与 mybatis_plus_1,将 mybatis_plus 库的 product 表移动到 mybatis_plus-1 库,这样每个库一张表,通过测试用例分别获取用户数据和商品数据,如果获取成功,说明多库模拟成功
  3. 创建数据库及表:
    1. 创建数据库 mybatis_plus_1 和表 product
      CREATE DATABASE `mybatis_plus_1` /*!40100 DEFAULT CHARACTER SET utf8mb4 */; use `mybatis_plus_1`;
      CREATE TABLE product
      (
      id BIGINT(20) NOT NULL COMMENT '主键ID',
      name VARCHAR(30) NULL DEFAULT NULL COMMENT '商品名称 ',
      price INT(11) DEFAULT 0 COMMENT '价格 ',
      version INT(11) DEFAULT 0 COMMENT '乐观锁版本号 ',
      PRIMARY KEY (id));
    2. 添加测试数据
      INSERT INTO product (id, NAME, price) VALUES (1, '外星人笔记本 ', 100);
    3. 删除 mybatis_plus 库中 product 表:
      use mybatis_plus;
      DROP TABLE IF EXISTS product;
  4. 引入依赖:
    <dependency><groupId>com.baomidou</groupId><artifactId>dynamic-datasource-spring-boot-starter</artifactId><version>3.5.0</version>
    </dependency>
  5. 配置多数据源:
    1. 说明:把之前的数据库连接注释掉
      #多数据源
      spring:datasource:dynamic:#设置默认的数据库源或者数据源组,默认值即为 masterprimary: master#严格匹配数据源,默认 false, true 为匹配到指定数据源时抛异常strict: falsedatasource:master:url: jdbc:mysql://localhost:3306/mybatis_plusdriver-class-name: com.mysql.jdbc.Driverusername: rootpassword: rootslave_1:url: jdbc:mysql://localhost:3306/mybatis_plus_1driver-class-name: com.mysql.jdbc.Driverusername: rootpassword: root
  6. 创建用户 service:
    public interface UserService extends IService<User> {}
    @Service
    @DS("master")   //指定所操作的数据源
    public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {}
  7. 创建商品 service:
    public interface ProductService extends IService<Package> {
    }
    @Service
    @DS("slave_1")
    public class ProductServiceImpl extends ServiceImpl<ProductMapper, Product> {
    }
  8. 测试:
    @Autowired
    private UserService userService;
    @Autowired
    private ProductService productService;@Test
    public void testDynamicDate(){System.out.println(userService.getById(1L));System.out.println(productService.getById(1L));
    }

相关文章:

MyBatis-Plus速成指南:通用枚举 多数据源

通用枚举&#xff1a; 概述&#xff1a; 表中有些字段值是固定的&#xff0c;例如性别(男或女)&#xff0c;此时我们可以使用 MyBatis-Plus 的通用枚举来实现 数据库表添加字段&#xff1a; 创建通用枚举类型&#xff1a; Getter public enum SexEnum {MALE(1, "男"…...

Android项目中使用Eclipse导出jar文件

2014年3月24日 天气晴朗 关于打包Android组件肯定是有用到的&#xff0c;比如开发了一个模块&#xff0c;为了更好的复用&#xff0c;我们可能会将它打包成jar文件方便其他项目引用。这个很好理解&#xff0c;也很简单。网上有一堆关于用Eclipse将Android项目打包成jar文件的&…...

网络安全学习 day4

防火墙的安全策略 规则--策略 条件 --- 检查报文的依据&#xff0c;防火墙将报文中携带的信息与条件逐一进行对比&#xff0c; 以此来判断报文是否是 匹配的 。不同的匹配条件之间属于 “ 与 ” 关系&#xff1b;相同的匹配条件中不同的参数信息之间的关系为 “ 或 ” 关系。…...

【SSM】Spring + SpringMVC + Mybatis

SSM课程&#xff0c;以下为该课程的笔记 bean&#xff1a;IOC容器创建的对象 P12 bean的生命周期 在bean中定义init()和destroy()方法&#xff0c;然后在xml中配置方法名&#xff0c;让bean对象能找到对应的生命周期方法。 或通过实现接口的方式定义声明周期方法。 P13 sett…...

智慧园区综合管理系统如何实现多个维度的高效管理与安全风险控制

内容概要 在当前快速发展的城市环境中&#xff0c;智慧园区综合管理系统正在成为各类园区管理的重要工具&#xff0c;无论是工业园、产业园、物流园&#xff0c;还是写字楼与公寓&#xff0c;都在积极寻求如何提升管理效率和保障安全。通过快鲸智慧园区管理系统&#xff0c;用…...

【协议详解】卫星通信5G IoT NTN SIB33-NB 信令详解

一、SIB33信令概述 在5G非地面网络&#xff08;NTN&#xff09;中&#xff0c;卫星的高速移动性和广域覆盖特性使得地面设备&#xff08;UE&#xff09;需要频繁切换卫星以维持连接。SIB32提供了UE预测当前服务的卫星覆盖信息&#xff0c;SystemInformationBlockType33&#x…...

《LLM大语言模型深度探索与实践:构建智能应用的新范式,融合代理与数据库的高级整合》

文章目录 Langchain的定义Langchain的组成三个核心组件实现整个核心组成部分 为什么要使用LangchainLangchain的底层原理Langchain实战操作LangSmithLangChain调用LLM安装openAI库-国内镜像源代码运行结果小结 使用Langchain的提示模板部署Langchain程序安装langserve代码请求格…...

Debian 10 中 Linux 4.19 内核在 x86_64 架构上对中断嵌套的支持情况

一、中断嵌套的定义与原理 中断嵌套是指在一个中断处理程序(ISR)正在执行的过程中,另一个更高优先级的中断请求到来,系统暂停当前中断处理程序,转而处理新的高优先级中断。处理完高优先级中断后,系统返回到原来的中断处理程序继续执行。这种机制允许系统更高效地响应紧急…...

【Envi遥感图像处理】010:归一化植被指数NDVI计算方法

文章目录 一、NDVI简介二、NDVI计算方法1. NDVI工具2. 波段运算三、注意事项1. 计算结果为一片黑2. 计算结果超出范围一、NDVI简介 归一化植被指数,是反映农作物长势和营养信息的重要参数之一,应用于遥感影像。NDVI是通过植被在近红外波段(NIR)和红光波段(R)的反射率差异…...

优选算法合集————双指针(专题二)

好久都没给大家带来算法专题啦&#xff0c;今天给大家带来滑动窗口专题的训练 题目一&#xff1a;长度最小的子数组 题目描述&#xff1a; 给定一个含有 n 个正整数的数组和一个正整数 target 。 找出该数组中满足其和 ≥ target 的长度最小的 连续子数组 [numsl, numsl1, …...

基于微信小程序的私家车位共享系统设计与实现(LW+源码+讲解)

专注于大学生项目实战开发,讲解,毕业答疑辅导&#xff0c;欢迎高校老师/同行前辈交流合作✌。 技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容&#xff1a;…...

糖化之前,为什么要进行麦芽粉碎?

糖化的目的是将麦芽中的淀粉转化为可发酵性的糖分&#xff0c;而糖化之前&#xff0c;进行麦芽粉碎是确保糖化效果的关键步骤。本文天泰将阐述麦芽粉碎的重要性及其对酿造过程的影响。 一、麦芽粉碎的目的 增加酶的作用面积&#xff1a;麦芽中的淀粉和蛋白质等物质需要通过酶…...

PAT甲级1052、Linked LIst Sorting

题目 A linked list consists of a series of structures, which are not necessarily adjacent in memory. We assume that each structure contains an integer key and a Next pointer to the next structure. Now given a linked list, you are supposed to sort the stru…...

半导体器件与物理篇6 MESFET

金属-半导体接触 MESFET与MOSFET的相同点&#xff1a;它们的电压电流特性相似。都有源漏栅三极&#xff0c;强反型&#xff0c;漏极加正向电压&#xff0c;也会经历线性区、夹断点、饱和区三个阶段。 MESFET与MOSFET的不同点&#xff1a;在器件的栅电极部分&#xff0c;MESFE…...

BES2700源码解析之系统初始化

一 概述 bes2700凭借着超高的性能&#xff0c;超低的功耗&#xff0c;在可穿戴领域有着广泛的应用。笔者使用该芯片做了一些产品解决方案&#xff0c;发现该芯片的性能十分强大。这里做个系列的源码解析。 二 源码解析 1.GPIO和led灯的初始化&#xff1a; tgt_hardware_setup(…...

deepseek 本地化部署和小模型微调

安装ollama 因为本人gpu卡的机器系统是centos 7, 直接使用ollama会报 所以ollama使用镜像方式进行部署&#xff0c; 拉取镜像ollama/ollama 启动命令 docker run -d --privileged -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama 查看ollama 是否启动…...

socket实现HTTP请求,参考HttpURLConnection源码解析

背景 有台服务器&#xff0c;网卡绑定有2个ip地址&#xff0c;分别为&#xff1a; A&#xff1a;192.168.111.201 B&#xff1a;192.168.111.202 在这台服务器请求目标地址 C&#xff1a;192.168.111.203 时必须使用B作为源地址才能访问目标地址C&#xff0c;在这台服务器默认…...

3、C#基于.net framework的应用开发实战编程 - 实现(三、三) - 编程手把手系列文章...

三、 实现&#xff1b; 三&#xff0e;三、编写应用程序&#xff1b; 此文主要是实现应用的主要编码工作。 1、 分层&#xff1b; 此例子主要分为UI、Helper、DAL等层。UI负责便签的界面显示&#xff1b;Helper主要是链接UI和数据库操作的中间层&#xff1b;DAL为对数据库的操…...

Ubuntu下Tkinter绑定数字小键盘上的回车键(PySide6类似)

设计了一个tkinter程序&#xff0c;在Win下绑定回车键&#xff0c;直接绑定"<Return>"就可以使用主键盘和小键盘的回车键直接“提交”&#xff0c;到了ubuntu下就不行了。经过搜索&#xff0c;发现ubuntu下主键盘和数字小键盘的回车键&#xff0c;名称不一样。…...

基础笔记|splice()的用法

一、三种用法 splice(index, 0, element) 插入 元素&#xff0c;不删除任何元素。splice(index, deleteCount) 删除 deleteCount 个元素。splice(index, deleteCount, element1, element2, ...) 替换 元素&#xff0c;即删除 deleteCount 个元素&#xff0c;同时插入新的元素。…...

Java BIO详解

一、简介 1.1 BIO概述 BIO&#xff08;Blocking I/O&#xff09;&#xff0c;即同步阻塞IO&#xff08;传统IO&#xff09;。 BIO 全称是 Blocking IO&#xff0c;同步阻塞式IO&#xff0c;是JDK1.4之前的传统IO模型&#xff0c;就是传统的 java.io 包下面的代码实现。 服务…...

Haproxy+keepalived高可用集群,haproxy宕机的解决方案

Haproxykeepalived高可用集群&#xff0c;允许keepalived宕机&#xff0c;允许后端真实服务器宕机&#xff0c;但是不允许haproxy宕机&#xff0c; 所以下面就是解决方案 keepalived配置高可用检测脚本 &#xff0c;master和backup都要添加 配置脚本 # vim /etc/keepalived…...

98,【6】 buuctf web [ISITDTU 2019]EasyPHP

进入靶场 代码 <?php // 高亮显示当前 PHP 文件的源代码&#xff0c;通常用于调试或展示代码&#xff0c;方便用户查看代码逻辑 highlight_file(__FILE__);// 从 GET 请求中获取名为 _ 的参数值&#xff0c;并赋值给变量 $_ // 符号用于抑制可能出现的错误信息&#xff…...

九. Redis 持久化-RDB(详细讲解说明,一个配置一个说明分析,步步讲解到位)

九. Redis 持久化-RDB(详细讲解说明&#xff0c;一个配置一个说明分析&#xff0c;步步讲解到位) 文章目录 九. Redis 持久化-RDB(详细讲解说明&#xff0c;一个配置一个说明分析&#xff0c;步步讲解到位)1. RDB 概述2. RDB 持久化执行流程3. RDB 的详细配置4. RDB 备份&恢…...

小程序越来越智能化,作为设计师要如何进行创新设计

一、用户体验至上 &#xff08;一&#xff09;简洁高效的界面设计 小程序的特点之一是轻便快捷&#xff0c;用户期望能够在最短的时间内找到所需功能并完成操作。因此&#xff0c;设计师应致力于打造简洁高效的界面。避免过多的装饰元素和复杂的布局&#xff0c;采用清晰的导航…...

(done) MIT6.S081 2023 学习笔记 (Day7: LAB6 Multithreading)

网页&#xff1a;https://pdos.csail.mit.edu/6.S081/2023/labs/thread.html (任务1教会了你如何用 C 语言调用汇编&#xff0c;编译后链接即可) 任务1&#xff1a;Uthread: switching between threads (完成) 在这个练习中&#xff0c;你将设计一个用户级线程系统中的上下文切…...

C++泛型编程指南09 类模板实现和使用友元

文章目录 第2章 类模板 Stack 的实现2.1 类模板 Stack 的实现 (Implementation of Class Template Stack)2.1.1 声明类模板 (Declaration of Class Templates)2.1.2 成员函数实现 (Implementation of Member Functions) 2.2 使用类模板 Stack脚注改进后的叙述总结脚注2.3 类模板…...

PHP Composer:高效依赖管理工具详解

PHP Composer:高效依赖管理工具详解 引言 在PHP开发领域,依赖管理是项目构建过程中的重要环节。Composer的出现,极大地简化了PHP项目的依赖管理,使得开发者可以更加高效地构建和维护PHP应用程序。本文将深入探讨PHP Composer的使用方法、功能特点以及它在项目开发中的应用…...

JVM执行流程与架构(对应不同版本JDK)

直接上图&#xff08;对应JDK8以及以后的HotSpot&#xff09; 这里主要区分说明一下 方法区于 字符串常量池 的位置更迭&#xff1a; 方法区 JDK7 以及之前的版本将方法区存放在堆区域中的 永久代空间&#xff0c;堆的大小由虚拟机参数来控制。 JDK8 以及之后的版本将方法…...

C# 精炼题18道题(类,三木运算,Switch,计算器)

1.数组元素和 2.数组元素乘积 3.数组元素平均数 4.数组中最大值 5.数组中的偶数 6.数组中的阶乘 7.数组反转 8.字符串反转 9.回文字符串 10.检查回文 11.最小最大值 12.找素数 13.字符串中的最长无重复字符串 14.字符串去重 15.数组中计算两数之和 16.数字到字符…...