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

网站设计评级安庆建设银行网站

网站设计评级,安庆建设银行网站,抖音开放平台是干嘛的,安装百度一、简单上手&#xff1a;从配置到使用全流程 DsFactory 的核心优势是零侵入配置&#xff0c;支持多种配置方式&#xff0c;不管是 properties 文件还是代码里直接定义&#xff0c;都能快速初始化数据源。先引依赖&#xff08;Maven&#xff09;&#xff1a; <dependency>…

一、简单上手:从配置到使用全流程

DsFactory 的核心优势是零侵入配置,支持多种配置方式,不管是 properties 文件还是代码里直接定义,都能快速初始化数据源。先引依赖(Maven):

<dependency><groupId>cn.hutool</groupId><artifactId>hutool-db</artifactId><version>5.8.20</version>
</dependency>
<!-- 数据库驱动根据需要添加,比如MySQL -->
<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.33</version>
</dependency>
  1. 配置文件方式:最推荐的做法在resources目录下创建db.setting文件,配置数据源信息:

在resources目录下创建db.setting文件,配置数据源信息:

# 默认数据源(必填)
[default]
url = jdbc:mysql://localhost:3306/db1
username = root
password=123456
driver = com.mysql.cj.jdbc.Driver# 第二个数据源(名称自定义)
[second]
url = jdbc:mysql://localhost:3306/db2
username = root
password=123456
driver = com.mysql.cj.jdbc.Driver# 连接池配置(可选,全局生效)
[pool]
maxActive = 50
maxIdle = 10
minIdle = 5
initialSize = 5

然后一行代码获取数据源:

// 获取默认数据源
DataSource defaultDs = DsFactory.get();// 获取指定名称的数据源
DataSource secondDs = DsFactory.get("second");
  1. 代码配置方式:动态添加数据源

不需要配置文件时,直接在代码里定义:

// 创建数据源配置
DbConfig defaultConfig = new DbConfig();
defaultConfig.setUrl("jdbc:mysql://localhost:3306/db1");
defaultConfig.setUsername("root");
defaultConfig.setPassword("123456");// 添加到DsFactory
DsFactory.register("default", defaultConfig);// 再添加一个数据源
DbConfig otherConfig = new DbConfig();
otherConfig.setUrl("jdbc:mysql://localhost:3306/db3");
otherConfig.setUsername("root");
otherConfig.setPassword("123456");
DsFactory.register("other", otherConfig);// 使用时直接获取
DataSource defaultDs = DsFactory.get("default");
DataSource otherDs = DsFactory.get("other");
  1. 支持的数据库类型:不止关系型数据库

除了 MySQL、Oracle 这些关系型数据库,还支持 SQLite、H2 等嵌入式数据库:

# SQLite数据源配置
[sqlite]
url = jdbc:sqlite:test.db
driver = org.sqlite.JDBC
# SQLite不需要用户名密码

甚至可以配置 Redis(虽然 Redis 不是数据库,但 DsFactory 也能管理):

[redis]
type = redis
host = localhost
port = 6379
password = 

二、核心功能:数据源管理就该这么简单

  1. 切换数据源:一行代码搞定

需要操作不同数据库时,直接通过名称获取即可:

// 操作默认数据库
Db.use(DsFactory.get()).query("select * from user");// 切换到second数据源
Db.use(DsFactory.get("second")).execute("insert into log values(...)");

在业务代码中切换更是方便:

public class UserService {public List<User> getUsersFromDb1() {// 使用默认数据源return Db.use(DsFactory.get()).query(Entity.create("user"), User.class);}public List<User> getUsersFromDb2() {// 切换到第二个数据源return Db.use(DsFactory.get("second")).query(Entity.create("user"), User.class);}
}
  1. 连接池配置:全局统一管理

在db.setting的[pool]节点配置连接池参数,所有数据源都会生效:

[pool]
maxActive = 100  # 最大活跃连接数
maxIdle = 20     # 最大空闲连接数
minIdle = 5      # 最小空闲连接数
initialSize = 10 # 初始连接数
maxWait = 3000   # 获取连接的最大等待时间(毫秒)

如果某个数据源需要特殊配置,可以单独指定:

# 单独给second数据源配置连接池
[second]
url = jdbc:mysql://localhost:3306/db2
username = root
password = 123456
driver = com.mysql.cj.jdbc.Driver
maxActive = 80  # 覆盖全局配置
maxIdle = 15
  1. 动态增减数据源:运行时也能改

支持在程序运行中添加或移除数据源,适合动态切换场景:

// 动态添加一个临时数据源
DbConfig tempConfig = new DbConfig();
tempConfig.setUrl("jdbc:mysql://localhost:3306/temp_db");
tempConfig.setUsername("root");
tempConfig.setPassword("123456");
DsFactory.register("temp", tempConfig);// 使用临时数据源
Db.use(DsFactory.get("temp")).execute("create table temp_table(id int)");// 用完移除
DsFactory.unregister("temp");

三、实战场景

  1. 读写分离:查询走从库,写入走主库

配置主库和从库两个数据源,业务代码中按需切换:

# db.setting配置
[master]
url = jdbc:mysql://master:3306/db
username = root
password = 123456[slave]
url = jdbc:mysql://slave:3306/db
username = root
password = 123456

业务代码:

public class OrderService {// 写入操作走主库public void createOrder(Order order) {Db.use(DsFactory.get("master")).insert(Entity.parse(order));}// 查询操作走从库public List<Order> getOrders(Long userId) {Entity where = Entity.create("order").set("user_id", userId);return Db.use(DsFactory.get("slave")).query(where, Order.class);}
}
  1. 多租户系统:不同租户用不同数据库

给每个租户分配独立数据库,通过租户 ID 切换数据源:

public class TenantService {// 根据租户ID获取数据源private DataSource getTenantDs(String tenantId) {// 检查是否已注册该租户数据源if (!DsFactory.contains(tenantId)) {// 从配置中心获取租户数据库信息(实际项目中从配置中心获取)String url = "jdbc:mysql://localhost:3306/tenant_" + tenantId;DbConfig config = new DbConfig();config.setUrl(url);config.setUsername("root");config.setPassword("123456");// 注册数据源DsFactory.register(tenantId, config);}return DsFactory.get(tenantId);}// 操作租户数据public List<User> getTenantUsers(String tenantId) {return Db.use(getTenantDs(tenantId)).query(Entity.create("user"), User.class);}
}
  1. 临时数据处理:动态创建数据源

处理临时任务时,动态创建数据源,用完即删:

public class TempDataService {public void processTempData(String dbPath) {// 动态注册SQLite数据源String dsName = "temp_" + System.currentTimeMillis();DbConfig config = new DbConfig();config.setUrl("jdbc:sqlite:" + dbPath);config.setDriver("org.sqlite.JDBC");DsFactory.register(dsName, config);try {// 处理数据Db.use(DsFactory.get(dsName)).execute("select * from temp_data");} finally {// 移除数据源DsFactory.unregister(dsName);}}
}

四、优势

  • 配置简单:一个db.setting文件搞定所有数据源,不用写 XML

  • 切换方便:通过名称获取数据源,一行代码完成切换,不用 AOP

  • 支持广泛:各种关系型数据库、嵌入式数据库都能管理

  • 动态灵活:运行时可以添加、移除数据源,适合动态场景

当然它也有局限:复杂的分库分表场景还是需要 Sharding-JDBC,但普通多数据源场景用它足够了。

五、细节注意

  • 默认数据源必须有:至少要配置一个default数据源,否则会报错

  • 驱动包要配齐:使用哪种数据库,就要添加对应的驱动依赖,不然会提示 “找不到驱动类”

  • 连接池参数要合理:根据业务量调整maxActive等参数,避免连接数过多导致数据库压力过大

http://www.dtcms.com/a/401455.html

相关文章:

  • 网站建设报告总结品牌建设部
  • 济南网站建设李尚荣模板网站seo
  • 东莞网站建设服务有什么用开发网站做图文水印逻辑
  • 网站建设怎样上传程序手机代码网站有哪些问题吗
  • 用wordpress制作网站图案设计网
  • 网站编程学习网页版微信登陆
  • 网站建设 cn歌曲网站源码
  • 无锡网站推广公司排名哈尔滨工程招投标信息网
  • 1有免费建网站站酷做网站
  • 地产网站互动营销新昌建设局网站
  • 住房和城乡建设部执法网站湛江做网站说
  • 网站域名实名认证临汾做网站
  • 潍坊网站建设解决方案wordpress插件无法安装插件
  • 柯桥区建设集团网站建阳网站建设wzjseo
  • 网站开发+自动生成缩略图保定建设局网站
  • 网站右侧二维码代码网站页面做成自适应优缺点
  • 怎么做电商卖东西东莞市网络seo推广服务机构
  • 四川网站建设的公司排名磁力搜索器 磁力猫在线
  • 湖州网站开发版面设计绘画
  • 网站建设开场白怎么说福建建设厅网站工程履约保险
  • pv3d 优秀网站建网站卖产品怎么样
  • 东道设计公司难进吗快速排名生客seo
  • 南昌做网站哪家专业如何搭建o2o网站
  • 石桥铺网站建设阿里云域名注册万网
  • 世界著名设计公司郑州网站建设搜索优化
  • python微信网站开发北京西站附近的景点有哪些
  • 佛山做网站制作公司一级a做爰网站免费
  • 中国做跨境电商出口的网站logo设计公司怎么去跟客户谈
  • wordpress多站点用户互通网站js聊天代码
  • 联科网站建设wordpress英文导航模板