背景:基於Mybatis+Oracle的源碼轉爲Mybatis+Mysql
1、數據庫轉換
sequnce
CREATE TABLE `sys_sequence` (
`name` varchar(64) NOT NULL COMMENT '序列名稱',
`value` bigint(20) NOT NULL COMMENT '當前值',
`MIN_VALUE` bigint(20) NOT NULL COMMENT '最小值',
`MAX_VALUE` bigint(20) NOT NULL COMMENT '最大值',
`increment` int(11) NOT NULL DEFAULT '1' COMMENT '步長(跨度) ',
`nocycle` int(11) NOT NULL DEFAULT '1' COMMENT '不循環',
PRIMARY KEY (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4
DROP FUNCTION IF EXISTS currval;
DELIMITER $
CREATE FUNCTION currval (seq_name VARCHAR(64))
RETURNS BIGINT
LANGUAGE SQL
DETERMINISTIC
CONTAINS SQL
SQL SECURITY DEFINER
COMMENT ''
BEGIN
DECLARE VALUE BIGINT;
SET VALUE = 0;
SELECT current_value INTO VALUE
FROM sys_sequence
WHERE NAME = seq_name;
RETURN VALUE;
END$
DELIMITER ;
-- 加鎖
DROP FUNCTION IF EXISTS nextval;
DELIMITER $
CREATE FUNCTION `nextval`(seq_name VARCHAR(64))
RETURNS BIGINT
LANGUAGE SQL
DETERMINISTIC
CONTAINS SQL
SQL SECURITY DEFINER
COMMENT ''
BEGIN
DECLARE _cur BIGINT;
SELECT current_value INTO _cur FROM sys_sequence WHERE NAME= seq_name FOR UPDATE;
UPDATE sys_sequence SET current_value = _cur + _increment
WHERE NAME=seq_name;
RETURN _cur;
END$
DELIMITER ;
DROP FUNCTION IF EXISTS setval;
DELIMITER $
CREATE FUNCTION setval (seq_name VARCHAR(64), VALUE BIGINT)
RETURNS BIGINT
LANGUAGE SQL
DETERMINISTIC
CONTAINS SQL
SQL SECURITY DEFINER
BEGIN
UPDATE sys_sequence
SET current_value = VALUE
WHERE NAME = seq_name;
RETURN currval(seq_name);
END$
DELIMITER ;
插入sequence:
INSERT INTO `sys_sequence`(`name`,`value`,`MIN_VALUE`,`MAX_VALUE`,`increment`,`nocycle`) VALUES
('sequence_name',初始值,最小值,最大值,步長,不循環),
日期
https://www.cnblogs.com/caicaizi/p/7813518.html
日期Datetime默認值使用now()函數在mybatis5.7+版本沒問題
函數
https://www.cnblogs.com/HondaHsu/p/3641190.html
字段類型
nvarchar --->varchar
Date ---->Datetime
Number
建表腳本
DROP TABLE IF EXISTS table_name;
去掉表空間相關語句描述
表註釋:ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC COMMENT='';
字段末尾加註釋 TELPHONE varchar(32) comment comment ' '
唯一索引:CREATE UNIQUE INDEX index_name ON table_name(column_name[,其他字段])
視圖:DROP VIEW IF EXISTS view_name
CREATE VIEW view_name AS SELECT ...... FROM ....
建主鍵:
ALTER TABLE table_name ADD(
CONSTRAINT pk_name
PRIMARY KEY
(column_name[,其他字段])
);
2、mapper文件轉換修改
mysql 類似to_char() to_date()函數
mysql日期和字符相互轉換方法
date_format(date,'%Y-%m-%d') -------------->oracle中的to_char();
str_to_date(date,'%Y-%m-%d') -------------->oracle中的to_date();
%Y:代表4位的年份
%y:代表2爲的年份
%m:代表月, 格式爲(01……12)
%c:代表月, 格式爲(1……12)
%d:代表月份中的天數,格式爲(00……31)
%e:代表月份中的天數, 格式爲(0……31)
%H:代表小時,格式爲(00……23)
%k:代表 小時,格式爲(0……23)
%h: 代表小時,格式爲(01……12)
%I: 代表小時,格式爲(01……12)
%l :代表小時,格式爲(1……12)
%i: 代表分鐘, 格式爲(00……59)
%r:代表 時間,格式爲12 小時(hh:mm:ss [AP]M)
%T:代表 時間,格式爲24 小時(hh:mm:ss)
%S:代表 秒,格式爲(00……59)
%s:代表 秒,格式爲(00……59)
SELECT DATE_FORMAT(20130111191640,'%Y-%m-%d %H:%i:%s')
DATE_FORMAT(20130111191640,'%Y-%m-%d %H:%i:%s') //沒有橫槓時其實就是數字了