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

手机百度关键词排名 网站优化软件flash制作网页

手机百度关键词排名 网站优化软件,flash制作网页,网络架构如何写,linux网站管理面板文章目录 1. 环境准备2. 创建Spring Boot项目3. 添加依赖4. 配置多数据源5. 配置MyBatis-Plus6. 使用多数据源7. 创建Mapper接口8. 实体类定义9. 测试多数据源10. 注意事项10.1 事务导致多数据源失效问题解决方案#xff1a; 10.2 ClickHouse的事务支持10.3 数据源切换的性能开… 文章目录 1. 环境准备2. 创建Spring Boot项目3. 添加依赖4. 配置多数据源5. 配置MyBatis-Plus6. 使用多数据源7. 创建Mapper接口8. 实体类定义9. 测试多数据源10. 注意事项10.1 事务导致多数据源失效问题解决方案 10.2 ClickHouse的事务支持10.3 数据源切换的性能开销10.4 数据源配置的优先级 11. 总结 使用Spring Boot 3.x MyBatis-Plus MySQL 8.0 ClickHouse 24 实现多数据源配置 在现代的应用程序开发中使用多个数据源已经成为一种常见的需求。例如我们可能需要在同一个应用中使用MySQL作为主数据库同时使用ClickHouse来处理大量的分析数据。本文将介绍如何使用Spring Boot 3.x、MyBatis-Plus、MySQL 8.0和ClickHouse 24结合dynamic-datasource-spring-boot-starter实现多数据源配置。 1. 环境准备 在开始之前确保你已经准备好以下环境 JDK 17 或更高版本Spring Boot 3.xMySQL 8.0ClickHouse 24Maven 或 Gradle 2. 创建Spring Boot项目 首先创建一个新的Spring Boot项目。你可以使用Spring Initializr来生成项目骨架选择以下依赖 Spring WebMyBatis FrameworkMySQL DriverClickHouse Driver 3. 添加依赖 在pom.xml中添加以下依赖 dependencies!-- Spring Boot Starter --dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactIdversion3.0.0/springBoot/dependency!-- MyBatis-Plus --dependencygroupIdcom.baomidou/groupIdartifactIdmybatis-plus-boot-starter/artifactIdversion3.5.3.1/version/dependency!-- MySQL Driver --dependencygroupIdmysql/groupIdartifactIdmysql-connector-java/artifactIdversion8.0.33/version/dependency!-- ClickHouse JDBC driver --dependencygroupIdru.yandex.clickhouse/groupIdartifactIdclickhouse-jdbc/artifactIdversion0.3.2/version/dependency!-- Dynamic Datasource --dependencygroupIdcom.baomidou/groupIdartifactIddynamic-datasource-spring-boot-starter/artifactIdversion3.6.1/version/dependency /dependencies4. 配置多数据源 在application.yml中配置MySQL和ClickHouse的数据源 spring:datasource:dynamic:primary: master # 设置默认的数据源strict: false # 是否严格匹配数据源不严格匹配时找不到对应数据源会使用默认数据源datasource:master:url: jdbc:mysql://localhost:3306/mydb?useUnicodetrueconnectTimeout30000characterEncodingutf-8allowMultiQueriestrueuseSSLfalseserverTimezoneAsia/ShanghairewriteBatchedStatementstrueallowPublicKeyRetrievaltrueusername: rootpassword: rootdriver-class-name: com.mysql.cj.jdbc.Driverdw:url: jdbc:clickhouse://localhost:8123/mzdb?timezoneAsia/Shanghaisocket_timeout600000connect_timeout60000username: defaultpassword: driver-class-name: com.clickhouse.jdbc.ClickHouseDriver5. 配置MyBatis-Plus 在Spring Boot中配置MyBatis-Plus确保它能够支持多数据源。 Configuration MapperScan(com.example.mapper) public class MybatisPlusConfig {Beanpublic MybatisPlusInterceptor mybatisPlusInterceptor() {MybatisPlusInterceptor interceptor new MybatisPlusInterceptor();interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));return interceptor;} }6. 使用多数据源 在代码中使用DS注解来指定使用哪个数据源。DS注解可以放在类或方法上。 DS注解可以使用在mapper接口上也可以使用在方法上也可以使用在Service类上取决于业务中需要实现的作用域 Service public class UserService {Autowiredprivate UserMapper userMapper;public ListUser getUsers() {return userMapper.selectList(null);}DS(clickhouse) // 切换为clickhouse数据源public ListDwOperationRecordMapper getAnalyticsData() {return analyticsMapper.selectList(null);} }7. 创建Mapper接口 创建对应的Mapper接口并使用Mapper注解标记。 /** * 主数据源 */ Mapper public interface SysUserMapper extends BaseMapperSysUser { } /** * 副数据源 */ Mapper DS(dw) //切换为clickhouse数据源 public interface DwOperationRecordMapper extends BaseMapperDwOperationRecord { }8. 实体类定义 定义对应的实体类并使用TableName注解指定表名。 /** * 主数据源 */ Data Builder AllArgsConstructor NoArgsConstructor TableName(value sys_user) public class SysUser {//账号状态_启用public final static Integer FORBIDDEN 0;TableId(type IdType.AUTO)private Long id;Schema(description 姓名)private String name;Schema(description 密码)private String password;Schema(description 账号名)private String userName;Schema(description 手机号)private String phone; }/** * 副数据源 */ Data NoArgsConstructor AllArgsConstructor Builder TableName(DWS_OPERATION_RECORD) public class DwOperationRecord implements Serializable {/*** 手术记录id*/TableField(value surgical_id,exist false)Schema(description 手术记录id)private String surgicalId;/*** 病案号*/Schema(description 病案号)private String patientid;/*** 姓名*/Schema(description 姓名)private String name;/*** 性别*/Schema(description 性别)private String sex; }9. 测试多数据源 编写测试类验证多数据源是否正常工作。 SpringBootTest public class MultiDataSourceTest {Autowiredprivate UserService userService;Testpublic void testMySQLDataSource() {ListSysUser users userService.getUsers();Assert.notEmpty(users, MySQL数据源查询失败);}Testpublic void testClickHouseDataSource() {ListDwOperationRecord list userService.list();Assert.notEmpty(list, ClickHouse数据源查询失败);} }10. 注意事项 10.1 事务导致多数据源失效问题 在使用多数据源时如果开启了事务Transactional可能会导致数据源切换失效。这是因为Spring的事务管理机制默认会绑定一个数据源事务开启后不会动态切换数据源。 解决方案 禁用事务 如果业务场景允许可以在切换数据源的方法上禁用事务 DS(dw) Transactional(rollbackFor SQLException.class, propagation Propagation.NOT_SUPPORTED) // 禁用事务 public ListDwOperationRecord getDwOperationRecord() {return dwOperationRecordMapper.selectList(null); }使用DSTransactional注解 dynamic-datasource-spring-boot-starter提供了DSTransactional注解支持多数据源事务管理。需要在主数据源上开启事务其他数据源不支持事务。 Transactional(rollbackFor SQLException.class) // 主数据源事务 public void updateUserAndLog(SysUser user) {userMapper.updateById(user);logToClickhouse(user); // 切换到ClickHouse }DS(clickhouse) public void logToClickhouse(SysUser user) {dwOperationRecordMapper.insert(new DwOperationRecord(user.getId(), UPDATE, LocalDateTime.now())); }手动控制事务 如果必须使用事务可以手动控制事务的提交和回滚 Autowired private DataSourceTransactionManager transactionManager;// 默认使用主数据源 public void updateUserAndLog(SysUser user) {DefaultTransactionDefinition definition new DefaultTransactionDefinition();TransactionStatus status transactionManager.getTransaction(definition);try {userMapper.updateById(user);logToClickhouse(user); // 切换到ClickHousetransactionManager.commit(status);} catch (Exception e) {transactionManager.rollback(status);throw e;} }10.2 ClickHouse的事务支持 ClickHouse本身不支持事务ACID因此在使用ClickHouse时无法使用事务管理。如果需要保证数据一致性可以通过业务逻辑或补偿机制来实现。 10.3 数据源切换的性能开销 频繁切换数据源可能会带来一定的性能开销尤其是在高并发场景下。建议尽量减少数据源切换的次数或者通过缓存机制优化数据访问。 10.4 数据源配置的优先级 如果同时配置了spring.datasource.url和dynamic-datasourcedynamic-datasource会覆盖默认的spring.datasource配置。确保只使用一种配置方式避免冲突。 11. 总结 通过以上步骤我们成功地在Spring Boot 3.x项目中配置了MySQL和ClickHouse的多数据源并使用MyBatis-Plus进行数据操作。dynamic-datasource-spring-boot-starter使得多数据源的切换变得非常简单只需通过DS注解即可轻松切换数据源。 在实际项目中多数据源的配置可能会更加复杂例如涉及到事务管理、读写分离等。但通过本文的介绍你已经掌握了基本的配置方法可以根据实际需求进行扩展和优化。 注意事项 事务管理在多数据源场景下需要特别处理避免数据源切换失效。ClickHouse不支持事务需通过业务逻辑保证数据一致性。尽量减少数据源切换的频率优化性能。 希望本文对你有所帮助祝你在使用Spring Boot开发多数据源应用时顺利
http://www.hkea.cn/news/14484411/

相关文章:

  • 网站建设个人工作室沈阳seo网站推广优化
  • 台州椒江区建设局网站ui设计师需要学什么专业
  • 360网站收录推广教程
  • php网站开发面试题临沂网站定制
  • 网站正在建设_敬请期待!wordpress数据库替换
  • wordpress管理员密码忘记seo技术培训南阳
  • 蔬菜水果网站建设wordpress添加一个论坛
  • 网站设计优缺点分析安徽水利建设市场信用信息平台网站
  • 网站备案几年备案一次吗网站换域名图片这么设置
  • 标准物质网站建设网站建设毕业设计报告书
  • 重庆整合网络营销之整站优化网站推广方式
  • 深圳商城网站建设报价合肥seo网站优化培训
  • 健身网站开发过程中遇到的麻烦如何跟进网站建设的客户
  • 培训教育的网站怎么做网页编辑格式
  • 网站推广中应注意哪些事项今天秦皇岛最新通知公告
  • 微信长图的免费模板网站wordpress主题cms
  • 七初SEO网站建设天琥设计
  • 国家工程建设标准化网站调查网站怎么做
  • 投票网站设计罗湖网站设计公司哪家好
  • 哪个网站做设计可以挣钱代理招商平台
  • 做外贸怎样免费登录外国网站怎么查域名是否被注册
  • 做vlogger的网站有哪些犀牛云网站建设费用
  • 网上书城网站建设目的增城网站怎么做seo
  • 网站建设设计 昆山南京广告公司电话
  • 厦门个人建网站接网站开发做多少钱
  • 做网站界面多少钱影楼网站源码
  • 东莞网站建设备案微信如何开通小程序
  • 网站建设开发图片青岛崂山区网站建设
  • 网站建设财务分析wordpress搭建邮箱
  • 一般网站的服务器云电脑免费体验