赞
踩
名称 | 版本 |
---|---|
达梦数据库 | DmJdbcDriver18 8.1.2.144 |
通用mapper – tk.mybatis | mapper-spring-boot-starter 4.2.5 |
<!-- 达梦数据库-->
<dependency>
<groupId>com.dameng</groupId>
<artifactId>DmJdbcDriver18</artifactId>
<version>8.1.2.141</version>
</dependency>
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper-spring-boot-starter</artifactId>
<version>4.2.2</version>
</dependency>
已进行测试数据:基础平台开发库基础表
数据和结构部分无损迁移
使用DM数据迁移工具
--> 新建工程
--> 右键迁移目录节点
--> 新建迁移
涉及截图较多,随后再添加吧,挺简单的,遇到的问题都在下面写着呢
数据源配置
#yml切换配置
#mysql
driverClassName: com.mysql.cj.jdbc.Driver
#达梦
driverClassName: dm.jdbc.driver.DmDriver
CREATE OR REPLACE
FUNCTION 模式名.FIND_IN_SET ( piv_str1 VARCHAR2,
piv_str2 VARCHAR2,
p_sep VARCHAR2 := ',')
RETURN NUMBER
IS
l_idx NUMBER:=0; -- 用于计算piv_str2中分隔符的位置
str VARCHAR2(500); -- 根据分隔符截取的子字符串
piv_str VARCHAR2(500) := piv_str2; -- 将piv_str2赋值给piv_str
res NUMBER :=0; -- 返回结果
loopIndex NUMBER :=0;
BEGIN
-- 如果piv_str中没有分割符,直接判断piv_str1和piv_str是否相等,相等 res=1
IF instr(piv_str, p_sep, 1) = 0 THEN
IF piv_str = piv_str1 THEN
res := 1;
END IF;
ELSE
-- 循环按分隔符截取piv_str
LOOP
l_idx := instr(piv_str, p_sep);
loopIndex:=loopIndex+1;
-- 当piv_str中还有分隔符时
IF l_idx > 0 THEN
-- 截取第一个分隔符前的字段str
str:= SUBSTR(piv_str, 1, l_idx-1);
-- 判断 str 和piv_str1 是否相等,相等 res=1 并结束循环判断
IF str = piv_str1 THEN
res:= loopIndex;
EXIT;
END IF;
piv_str := SUBSTR(piv_str, l_idx+LENGTH(p_sep));
ELSE
-- 当截取后的piv_str 中不存在分割符时,判断piv_str和piv_str1是否相等,相等 res=1
IF piv_str = piv_str1 THEN
res:= loopIndex;
END IF;
-- 无论最后是否相等,都跳出循环
EXIT;
END IF;
END LOOP;
-- 结束循环
END IF;
-- 返回res
RETURN res;
END FIND_IN_SET;
#数据库模式名配置
mydb:
myDatabaseSchemaName: scctest.
@Configuration
public class MyBatisConfig {
/**
* 数据库模式名
*/
@Value("${mydb.myDatabaseSchemaName}")
private String myDatabaseSchemaName;
/**
* 数据库模式名key
*/
private final static String DATABASE_SCHEMA_NAME = "myDatabaseSchemaName";
@Bean
public SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception {
final SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
Properties pro = new Properties();
pro.setProperty(DATABASE_SCHEMA_NAME, this.myDatabaseSchemaName);
sessionFactory.setConfigurationProperties(pro);
}
#sql写法
select * from ${myDatabaseSchemaName}sys_user
#实际效果
select * from scctest.sys_user
关于varchar类型使用问题
以下区域内内容来源为达梦官方“大房子”和“破烂换钱勒”用户提供
影响varchar类型长度的有两个关键的初始换参数选项:
1、字符集:CHARSET/UNICODE_FLAG 字符集(0),可选值:0[GB18030],1[UTF-8],2[EUC-KR]
2、LENGTH_IN_CHAR:VARCHAR类型长度是否以字符为单位(N),可选值:Y/N,1/0;
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。