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

python做网站 不适合四川省建设领域信用系统网站

python做网站 不适合,四川省建设领域信用系统网站,wordpress 页面导出,网站建设补充报价单H2->Mysql数据迁移 需求背景环境说明实现过程配置调整原配置修改配置 代码调整新增DatasourceConfig配置类使用secondaryJdbcTemplate 需求背景 最近有一需求,原本项目中由于某些原因使用嵌入式数据库H2,鉴于嵌入式数据库可靠性以及不方便管理等因素…

H2->Mysql数据迁移

  • 需求背景
  • 环境说明
  • 实现过程
    • 配置调整
      • 原配置
      • 修改配置
    • 代码调整
      • 新增DatasourceConfig配置类
      • 使用secondaryJdbcTemplate

需求背景

最近有一需求,原本项目中由于某些原因使用嵌入式数据库H2,鉴于嵌入式数据库可靠性以及不方便管理等因素,需要将数据库迁移到Mysql。

环境说明

SpringBoot:3.0.2
JDK:17
H2:2.1.214
spring-boot-starter-data-jpa:3.0.2

Mysql:8.0.32

实现过程

配置调整

原配置

pom.xml

<!-- 省略其他依赖... -->
<dependency><groupId>com.h2database</groupId><artifactId>h2</artifactId><version>2.1.214</version><scope>runtime</scope>
</dependency>

dev.yml

spring:datasource:url: jdbc:h2:file:./data/cloak-abdriver-class-name: org.h2.Driverusername: rootpassword: root789456jpa:database: h2hibernate:ddl-auto: updateshow-sql: trueh2:console:path: /h2-consoleenabled: truesettings:web-allow-others: truetrace: true

修改配置

修改后pom.xml

<!-- 省略其他依赖... -->
<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.32</version>
</dependency>
<dependency><groupId>com.h2database</groupId><artifactId>h2</artifactId><version>2.1.214</version><scope>runtime</scope>
</dependency>

修改后dev.yml

spring:datasource:url: jdbc:mysql://192.168.0.80:3306/cloak_ab?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=GMT%2B8&allowMultiQueries=truedriver-class-name: com.mysql.cj.jdbc.Driverusername: rootpassword: root789456jpa:# 此处有修改database: mysqlhibernate:ddl-auto: updateshow-sql: trueh2:console:path: /h2-consoleenabled: truesettings:web-allow-others: truetrace: true

主要修改点有三处:

①添加Mysql连接依赖
②数据库的连接地址和数据库驱动
③jpa使用的数据库

代码调整

新增DatasourceConfig配置类

配置Mysql主数据源,H2次数据源
DatasourceConfig.java

import lombok.Data;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.jdbc.DataSourceBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.jdbc.core.JdbcTemplate;import javax.sql.DataSource;@Configuration
public class DatasourceConfig {@Data@Configuration@ConfigurationProperties(prefix="spring.datasource")public static class MasterDatasourceProperties {private String url;private String driverClassName;private String username;private String password;}@Bean@Primarypublic DataSource dataSource(MasterDatasourceProperties masterDatasourceProperties) {return DataSourceBuilder.create().driverClassName(masterDatasourceProperties.getDriverClassName()).url(masterDatasourceProperties.getUrl()).username(masterDatasourceProperties.getUsername()).password(masterDatasourceProperties.getPassword()).build();}@Primary@Bean(name = "jdbcTemplate")public JdbcTemplate jdbcTemplate(@Qualifier("dataSource") DataSource dataSource) {return new JdbcTemplate(dataSource);}@Bean(name = "secondaryDataSource")@Qualifier("secondaryDataSource")public DataSource secondaryDataSource() {return DataSourceBuilder.create().url("jdbc:h2:file:./data/cloak-ab").driverClassName("org.h2.Driver").username("root").password("root789456").build();}@Bean(name = "secondaryJdbcTemplate")public JdbcTemplate secondaryJdbcTemplate(@Qualifier("secondaryDataSource") DataSource secondaryDataSource) {return new JdbcTemplate(secondaryDataSource);}}

Mysql主数据源添加@Primary注解,jpa使用的默认是主数据源,如此一来jpa操作的就是Mysql数据库了。

使用secondaryJdbcTemplate

	@Autowiredprivate AppParamDao appParamDao;@Autowired@Qualifier("secondaryJdbcTemplate")protected JdbcTemplate secondaryJdbcTemplate;@Overridepublic void h2ToMysql() {String sql = "select * from app_param";List<AppParam> appParams = secondaryJdbcTemplate.query(sql, new BeanPropertyRowMapper<>(AppParam.class));appParamDao.saveAllAndFlush(appParams);}

此时secondaryJdbcTemplate操作的就是H2数据库,而appParamDao操作的就是Mysql数据库

AppParamDao.java

import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Repository;import java.util.List;
import java.util.Optional;
import java.util.Set;@Repository
public interface AppParamDao extends CrudRepository<AppParam, Long>, JpaRepository<AppParam, Long> {
}
http://www.yayakq.cn/news/454249/

相关文章:

  • 如何做网站推广私人建设网站个类型好
  • 上海网站域名注册价格网站访问量查询
  • 虚拟主机可建站1个是不是只能放一个网站可以提升自己的网站
  • 佛山牛豹云网站开发福州建网站
  • 在线手机网站建设做直播网站有哪些
  • 网站购物系统制作雨辰资讯电子商务类网站开发韶关公司做网站
  • 徐州智能模板建站手机移动端网站建设宣传
  • 企业门户网站建设方案网站运营与管理规划书
  • 铁道部建设司网站动漫设计与制作工资多少
  • 中国制造网网站特色论述网站建设流程
  • 大连哪家做网站比较好网站备案没公司名称
  • 网站优化如何收费济源专业网站建设(制作网站)
  • 用jsp做的可运行的网站西部域名网
  • 温州哪里有网站c语言开发环境
  • 广州市住房和城乡建设局网站淘宝网页美工设计
  • 网站建设服务天软科技广州在线网站制作
  • 省建设厅网站安全生产标准化网络推广怎么收费
  • 济南做网站哪里好重庆 网站 备案 查询
  • python 自己做网站新城疫最快解决的办法
  • 泉州免费建站菏泽建设信息网官网
  • 网站建设流程简图个人如何制作网站源码
  • 广西住建局官方网站在线生成短链接
  • 购物网站线下推广方案wordpress 图片压缩
  • 做瞹瞹爱免费网站wordpress文章发布专题文章
  • 快速学会做网站聊城手机网站建设方案
  • 站长是什么职位wordpress嵌入代码
  • 佛山的网站建设公司100件机械创意产品设计
  • 江门英文网站建设海南做网站找谁
  • 网站做收付款接口卡片式 主题 wordpress
  • 网站建设排名软件wordpress5.6