springboot+mybaits+mysql转为人大金仓KingbaseES_V008R006

大致步骤:

1.人大金仓的安装不同

1.1安装人大金仓数据库和mysql的区别

1.2.使用人大金仓数据库创建用户、库、表,体验和mysql的区别

2.将mysql的数据迁移到人大金仓数据库

3.调整springboot项目中的连接方式

4.启动项目,对项目进行检查,调整特殊情况。

详细步骤:

1.人大金仓的安装不同(本文介绍window下的安装)

1.1安装人大金仓数据库和mysql的区别

1.1.1下载人大金仓数据库的安装软件(v8-win)

人大金仓-成为世界卓越的数据库产品与服务提供商

1.1.2解压下载的iso文件

KingbaseES_V008R006C008B0014_Win64_install.iso

1.1.3过程不详细介绍,安装路下的doc中有安装文档,如果安装错了,可以查看矫正。要记录安装路径,后面会用。

模式:兼容mysql

其它默认

1.2.使用人大金仓数据库创建用户、库、表,体验和mysql的区别

1.2.1使用人大金仓的“数据库开发管理工具”

找到“数据库开发管理工具”的位置:菜单>k>kingbaseES V8>数据库开发管理工具

连接数据库

创建数据库(这一步类似给新建的连接上创建一个存储空间)

在创建的数据库里创建模式(这一步类似mysql创建一个库,比如“cpsacw_202110”)。有了模式后,就可以创建自己的表了

创建表。

重点提醒:怎么查看表数据,如下如,表右键》查询数据

2.将mysql的数据迁移到人大金仓数据库

2.1下载“企业版的补丁包”。v86版本不能直接迁移mysql的数据库。

链接:百度网盘 请输入提取码 

提取码:sn84 

也可以加入人大金仓的qq群,联系管理员提供:305033759

2.2升级

解压后放在Server下;替换安装目录下的KESrealpro的授权,群文件下载test授权;

重启数据库

做好备份,注意权限属主

数据库安装目录data下的kingbase.conf中添加参数ignore_char_null_check=on迁移完成改成off

2.3开启人大金仓数据库迁移工具

2.4创建原数据库(mysql)、目标数据库(人大金仓)

2.5创建迁移任务,基本上下一步下一步就可以

2.6查看迁移日志,失败很正常,但要检查失败的原因和对迁移失败的表或者数据进行单独迁移,一般都是数据格式不多的问题

3.调整springboot项目中的连接方式

driver-class-name: com.kingbase8.Driver
url: jdbc:kingbase8://localhost:54321/tomysql?currentSchema=cpsacw_202110
username: system
password: system

pom.xml配置, jar包在安装人大金仓的目录下。下方的配置为导入了maven仓库的引用

cn.com.kingbase

kingbase8

8.6.0

4.启动项目,对项目进行检查,调整特殊情况。

4.1部分实体类的关联表前,需要加上模式的名字,sys_config可能是关键字,必须要指定。否则会报错:没有**字段

4.2有些映射sql的map.xml需要加上模式名字,否则也可能会被认为是关键字

4.3替换完成之后,就是测试项目的时间点了,每个功能都点点测试测试,小心有惊喜。

### MyBatis 与人大金仓数据库结合使用的分页实现方法 #### 配置 `DatabaseIdProvider` 为了使 MyBatis 能够识别不同类型的数据库并应用相应的 SQL 方言,在配置文件中需注册 `DatabaseIdProvider` 并指定其属性。对于人大金仓数据库而言,这一步骤至关重要,因为默认情况下 MyBatis 可能不会自动检测到该特定数据库类型[^1]。 ```xml <databaseIdProvider type="DB_VENDOR"> <property name="KINGBASE" value="kingbase"/> </databaseIdProvider> ``` #### 设置分页插件 针对人大金仓数据库的特性,应调整分页插件以适应此环境下的查询需求。通过自定义拦截器或利用现有的第三方分页组件来处理 LIMIT 和 OFFSET 的语法差异是非常必要的。特别是当从其他数据库迁移过来时,这种定制化的设置可以有效解决兼容性问题[^4]。 ```java @Configuration public class MyBatisConfig { @Bean public PaginationInterceptor paginationInterceptor() { PaginationInterceptor paginationInterceptor = new PaginationInterceptor(); // 添加支持的人大金仓方言 RuleConfiguration ruleConfiguration = new RuleConfiguration().setLimit("LIMIT ? OFFSET ?"); List<RuleConfiguration> list = Collections.singletonList(ruleConfiguration); paginationInterceptor.setDialectType("kingbase"); return paginationInterceptor; } } ``` #### 数据源配置 考虑到项目可能涉及多种数据源的情况,建议采用动态数据源管理策略。这样不仅可以简化多库间的切换操作,还能提高系统的灵活性和可维护性。以下是基于 Spring Boot 的多数据源配置实例: ```yaml spring: datasource: kingbase: url: jdbc:kingbase8://localhost:54321/dbname username: root password: password driver-class-name: com.kingbase8.Driver ``` ```java @MapperScan(basePackages = {"com.example.mapper"}, sqlSessionTemplateRef = "kingbaseSqlSessionTemplate") @Configuration public class DataSourceConfig { @Primary @Bean(name = "kingbaseDataSource") @ConfigurationProperties(prefix = "spring.datasource.kingbase") public DataSource kingbaseDataSource() { return DataSourceBuilder.create().build(); } @Primary @Bean(name = "kingbaseTransactionManager") public PlatformTransactionManager transactionManager(@Qualifier("kingbaseDataSource") DataSource dataSource) { return new DataSourceTransactionManager(dataSource); } @Primary @Bean(name = "kingbaseSqlSessionFactory") public SqlSessionFactory sqlSessionFactory(@Qualifier("kingbaseDataSource") DataSource dataSource, DatabaseIdProvider databaseIdProvider) throws Exception { final SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean(); sessionFactory.setDataSource(dataSource); sessionFactory.setPlugins(new Interceptor[]{paginationInterceptor()}); sessionFactory.setDatabaseIdProvider(databaseIdProvider); Resource[] resources = new PathMatchingResourcePatternResolver() .getResources("classpath*:mapper/*.xml"); sessionFactory.setMapperLocations(resources); return sessionFactory.getObject(); } } ``` #### 关键字排除与模式设定 为了避免由于关键字冲突而导致的SQL语句解析错误,可以在数据库层面进行相应配置。例如,通过修改配置项 `exclude_reserved_words` 来屏蔽某些可能导致问题的关键字;同时,适当调整 `sql_mode` 参数有助于增强对 MySQL 特定语法的支持程度[^2]。 ```properties exclude_reserved_words='owner' sql_mode='' ``` #### 测试与验证 完成上述配置更改后,务必进行全面的功能测试,尤其是关注那些依赖于分页逻辑的部分。确保所有预期功能正常工作,并且性能指标满足业务要求。如果遇到任何异常情况,则应回溯检查各个配置环节直至找到根本原因并加以修正。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值