<?xml version="1.0" encoding="UTF-8"?>
|
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
<mapper namespace="com.highdatas.mdm.mapper.TableInfoMapper">
|
|
<select id="selectTableByName" parameterType="java.util.Map" resultType="String">
|
show TABLES like #{tableName}
|
</select>
|
|
<select id="selectIdxByTableName" parameterType="java.lang.String" resultType="java.util.Map"
|
statementType="STATEMENT">
|
SELECT * FROM mysql.`innodb_index_stats` a WHERE a.table_name = ${tableName}
|
</select>
|
|
<select id="getTableField" parameterType="String" resultType="com.highdatas.mdm.entity.TableSchemaResult">
|
select COLUMN_NAME as fieldName,DATA_TYPE as dbType, character_maximum_length as length from information_schema.COLUMNS where table_name = #{tableName} and table_schema = (select database())
|
</select>
|
|
<select id="getTableFieldFromDb" parameterType="com.highdatas.mdm.entity.TableSchema"
|
resultType="com.highdatas.mdm.entity.TableSchemaResult">
|
select COLUMN_NAME as fieldName,DATA_TYPE as dbType,character_maximum_length as length from information_schema.COLUMNS where table_name = #{tableName} and table_schema = #{dbName}
|
</select>
|
|
<select id="selectByPage" resultType="java.util.Map" statementType="STATEMENT">
|
select ${fields} from ${tableName} where ${where} ${limit}
|
</select>
|
|
<select id="selectDistinct" resultType="java.util.Map" statementType="STATEMENT">
|
select DISTINCT ${fields} from ${tableName} where ${where}
|
</select>
|
|
<select id="selectByPageByVersion" resultType="java.util.Map" statementType="STATEMENT">
|
<![CDATA[
|
SELECT ${fields}
|
FROM
|
(SELECT ${A1fields}
|
FROM ${tableName} a1
|
LEFT JOIN
|
(SELECT DISTINCT mt1.std_id
|
FROM ${tableTempName} mt1
|
LEFT JOIN maintain_detail md
|
ON md.pre_merge_id = mt1.id
|
LEFT JOIN maintain m
|
ON m.id = md.parent_id
|
WHERE m.order_no <= ${fromOrderNo}
|
AND m.order_no > ${toOrderNo}
|
AND m.table_name = '${tableName}'
|
AND (operate = 'create'
|
OR operate = 'update') ) v
|
ON v.std_id = a1.id
|
WHERE v.std_id IS NULL
|
UNION
|
SELECT ${tempFields}
|
FROM
|
(SELECT mt.*,
|
m.order_no
|
FROM ${tableTempName} mt
|
LEFT JOIN maintain_detail md
|
ON md.pre_merge_id = mt.id
|
LEFT JOIN maintain m
|
ON md.parent_id = m.id
|
WHERE m.order_no <= ${fromOrderNo}
|
AND m.order_no > ${toOrderNo}
|
AND m.table_name = '${tableName}'
|
AND operate = 'update' ) AS a1
|
INNER JOIN
|
(SELECT std_id,
|
min(order_no) AS order_no
|
FROM
|
(SELECT mt.id,
|
std_id,
|
m.order_no
|
FROM ${tableTempName} mt
|
LEFT JOIN maintain_detail md
|
ON md.pre_merge_id = mt.id
|
LEFT JOIN maintain m
|
ON md.parent_id = m.id
|
WHERE m.order_no <= ${fromOrderNo}
|
AND m.order_no > ${toOrderNo}
|
AND m.table_name = '${tableName}'
|
AND operate = 'update'
|
AND NOT EXISTS
|
(SELECT mt1.id
|
FROM ${tableTempName} mt1
|
LEFT JOIN maintain_detail md
|
ON md.pre_merge_id = mt1.id
|
LEFT JOIN maintain m
|
ON m.id = md.parent_id
|
WHERE m.order_no <= ${fromOrderNo}
|
AND m.order_no > ${toOrderNo}
|
AND m.table_name = '${tableName}'
|
AND operate = 'create'
|
AND mt1.std_id = mt.std_id ) ) AS gz
|
GROUP BY std_id ) AS zb
|
ON a1.std_id = zb.std_id
|
AND a1.order_no = zb.order_no
|
UNION
|
SELECT DISTINCT ${tempFields}
|
FROM ${tableTempName} a1
|
LEFT JOIN maintain_detail md
|
ON md.pre_merge_id = a1.id
|
LEFT JOIN maintain m
|
ON m.id = md.parent_id
|
LEFT JOIN
|
(SELECT DISTINCT mt1.std_id
|
FROM ${tableTempName} mt1
|
LEFT JOIN maintain_detail md
|
ON md.pre_merge_id = mt1.id
|
LEFT JOIN maintain m
|
ON m.id = md.parent_id
|
WHERE m.order_no <= ${fromOrderNo}
|
AND m.order_no > ${toOrderNo}
|
AND m.table_name = '${tableName}'
|
AND (operate = 'create'
|
OR operate = 'update') ) zb
|
ON zb.std_id = a1.std_id
|
WHERE zb.std_id is null
|
AND md.operate = 'delete'
|
AND m.order_no <= ${fromOrderNo}
|
AND m.order_no > ${toOrderNo}
|
AND m.table_name = '${tableName}' ) a
|
WHERE ${where} ${limit}
|
]]>
|
</select>
|
|
<select id="selectByPageByMaxVersion" resultType="java.util.Map" statementType="STATEMENT">
|
<![CDATA[
|
|
select ${fields},operate, status from (
|
SELECT ${tempFields}, md.operate, f.`status` from ${tableTempName} a1
|
LEFT JOIN maintain_detail md on md.pre_merge_id = a1.id
|
LEFT JOIN maintain m on m.id = md.parent_id
|
LEFT JOIN flows f on flow_id = f.id
|
WHERE order_no > ${fromOrderNo} and f.id is null
|
UNION
|
SELECT ${tempFields}, md.operate, f.`status` from ${tableTempName} a1
|
LEFT JOIN maintain_detail md on md.pre_merge_id = a1.id
|
LEFT JOIN maintain m on m.id = md.parent_id
|
LEFT JOIN flows f on flow_id = f.id
|
WHERE order_no > ${fromOrderNo} and f.`status` = 'working'
|
|
union
|
SELECT ${A1fields}, '', '' from ${tableName} a1
|
LEFT JOIN
|
(
|
SELECT DISTINCT std_id from ${tableTempName} mt
|
LEFT JOIN maintain_detail md on md.pre_merge_id = mt.id
|
LEFT JOIN maintain m on m.id = md.parent_id
|
LEFT JOIN flows f on flow_id = f.id
|
WHERE order_no > ${fromOrderNo} and f.id is null
|
UNION
|
SELECT DISTINCT std_id from ${tableTempName} mt
|
LEFT JOIN maintain_detail md on md.pre_merge_id = mt.id
|
LEFT JOIN maintain m on m.id = md.parent_id
|
LEFT JOIN flows f on flow_id = f.id
|
WHERE order_no > ${fromOrderNo} and f.`status` = 'working'
|
) a on a.std_id = a1.id where a.std_id is null
|
)a where ${where} ${limit}
|
|
]]>
|
</select>
|
|
<select id="select" resultType="java.util.Map" statementType="STATEMENT">
|
select ${fields} from ${tableName} where ${where}
|
</select>
|
|
<select id="tempDeal" statementType="STATEMENT" resultType="java.lang.Integer">
|
UPDATE ${tableTempName} mt
|
INNER JOIN (
|
SELECT pre_merge_id from
|
maintain_detail
|
WHERE maintain_detail.parent_id = ${maintainId}
|
)md on mt.id = md.pre_merge_id
|
set mt.deal = 1
|
|
|
</select>
|
|
<select id="getCount" resultType="java.lang.Long" statementType="STATEMENT">
|
select count(1) from ${tableName} where ${where}
|
</select>
|
|
<select id="getCountByVersion" resultType="java.lang.Long" statementType="STATEMENT">
|
<![CDATA[
|
SELECT count(1)
|
FROM
|
(SELECT ${A1fields}
|
FROM ${tableName} a1
|
LEFT JOIN
|
(SELECT DISTINCT mt1.std_id
|
FROM ${tableTempName} mt1
|
LEFT JOIN maintain_detail md
|
ON md.pre_merge_id = mt1.id
|
LEFT JOIN maintain m
|
ON m.id = md.parent_id
|
WHERE m.order_no <= ${fromOrderNo}
|
AND m.order_no > ${toOrderNo}
|
AND m.table_name = '${tableName}'
|
AND (operate = 'create'
|
OR operate = 'update') ) v
|
ON v.std_id = a1.id
|
WHERE v.std_id IS NULL
|
UNION
|
SELECT ${tempFields}
|
FROM
|
(SELECT mt.*,
|
m.order_no
|
FROM ${tableTempName} mt
|
LEFT JOIN maintain_detail md
|
ON md.pre_merge_id = mt.id
|
LEFT JOIN maintain m
|
ON md.parent_id = m.id
|
WHERE m.order_no <= ${fromOrderNo}
|
AND m.order_no > ${toOrderNo}
|
AND m.table_name = '${tableName}'
|
AND operate = 'update' ) AS a1
|
INNER JOIN
|
(SELECT std_id,
|
min(order_no) AS order_no
|
FROM
|
(SELECT mt.id,
|
std_id,
|
m.order_no
|
FROM ${tableTempName} mt
|
LEFT JOIN maintain_detail md
|
ON md.pre_merge_id = mt.id
|
LEFT JOIN maintain m
|
ON md.parent_id = m.id
|
WHERE m.order_no <= ${fromOrderNo}
|
AND m.order_no > ${toOrderNo}
|
AND m.table_name = '${tableName}'
|
AND operate = 'update'
|
AND NOT EXISTS
|
(SELECT mt1.id
|
FROM ${tableTempName} mt1
|
LEFT JOIN maintain_detail md
|
ON md.pre_merge_id = mt1.id
|
LEFT JOIN maintain m
|
ON m.id = md.parent_id
|
WHERE m.order_no <= ${fromOrderNo}
|
AND m.order_no > ${toOrderNo}
|
AND m.table_name = '${tableName}'
|
AND operate = 'create'
|
AND mt1.std_id = mt.std_id ) ) AS gz
|
GROUP BY std_id ) AS zb
|
ON a1.std_id = zb.std_id
|
AND a1.order_no = zb.order_no
|
UNION
|
SELECT DISTINCT ${tempFields}
|
FROM ${tableTempName} a1
|
LEFT JOIN maintain_detail md
|
ON md.pre_merge_id = a1.id
|
LEFT JOIN maintain m
|
ON m.id = md.parent_id
|
LEFT JOIN
|
(SELECT DISTINCT mt1.std_id
|
FROM ${tableTempName} mt1
|
LEFT JOIN maintain_detail md
|
ON md.pre_merge_id = mt1.id
|
LEFT JOIN maintain m
|
ON m.id = md.parent_id
|
WHERE m.order_no <= ${fromOrderNo}
|
AND m.order_no > ${toOrderNo}
|
AND m.table_name = '${tableName}'
|
AND (operate = 'create'
|
OR operate = 'update') ) zb
|
ON zb.std_id = a1.std_id
|
WHERE zb.std_id is null
|
AND md.operate = 'delete'
|
AND m.order_no <= ${fromOrderNo}
|
AND m.order_no > ${toOrderNo}
|
AND m.table_name = '${tableName}' ) a
|
WHERE ${where}
|
|
]]>
|
</select>
|
|
<select id="getCountByMaxVersion" resultType="java.lang.Long" statementType="STATEMENT">
|
<![CDATA[
|
|
select count(1) from (
|
SELECT ${tempFields}, md.operate, f.`status` from ${tableTempName} a1
|
LEFT JOIN maintain_detail md on md.pre_merge_id = a1.id
|
LEFT JOIN maintain m on m.id = md.parent_id
|
LEFT JOIN flows f on flow_id = f.id
|
WHERE order_no > ${fromOrderNo} and f.id is null
|
UNION
|
SELECT ${tempFields}, md.operate, f.`status` from ${tableTempName} a1
|
LEFT JOIN maintain_detail md on md.pre_merge_id = a1.id
|
LEFT JOIN maintain m on m.id = md.parent_id
|
LEFT JOIN flows f on flow_id = f.id
|
WHERE order_no > ${fromOrderNo} and f.`status` = 'working'
|
|
union
|
SELECT ${A1fields}, '', '' from ${tableName} a1
|
LEFT JOIN
|
(
|
SELECT DISTINCT std_id from ${tableTempName} mt
|
LEFT JOIN maintain_detail md on md.pre_merge_id = mt.id
|
LEFT JOIN maintain m on m.id = md.parent_id
|
LEFT JOIN flows f on flow_id = f.id
|
WHERE order_no > ${fromOrderNo} and f.id is null
|
UNION
|
SELECT DISTINCT std_id from ${tableTempName} mt
|
LEFT JOIN maintain_detail md on md.pre_merge_id = mt.id
|
LEFT JOIN maintain m on m.id = md.parent_id
|
LEFT JOIN flows f on flow_id = f.id
|
WHERE order_no > ${fromOrderNo} and f.`status` = 'working'
|
) a on a.std_id = a1.id where a.std_id is null
|
)a where ${where}
|
|
]]>
|
</select>
|
|
<insert id="insert" statementType="STATEMENT">
|
INSERT INTO ${tableName} (${fields}) VALUES ${values}
|
</insert>
|
|
<insert id="insertOneSelect" statementType="STATEMENT">
|
INSERT INTO ${tableName} (${fields})
|
select ${selectFields} from (${selectSql}) a
|
</insert>
|
|
<update id="update">
|
update ${tableName} set ${updateSegment}
|
where ${where}
|
</update>
|
|
<update id="updateJoin">
|
update ${tableName}
|
${joinTableSegment}
|
set ${updateSegment}
|
where ${where}
|
</update>
|
|
<delete id="delete">
|
DELETE FROM ${tableName} where ${where}
|
</delete>
|
|
<select id="createIdx">
|
CREATE INDEX ${idxName} ON ${tableName} (${fields})
|
</select>
|
|
|
<delete id="deleteTempByMaintainId">
|
DELETE tm FROM ${tableTempName} tm , maintain_detail md WHERE tm.id = md.pre_merge_id
|
and md.parent_id = ${maintainId};
|
</delete>
|
|
<!-- temp 2 standrad-->
|
<insert id="tempCreate2std" statementType="STATEMENT">
|
INSERT INTO ${tableName}
|
SELECT
|
${tempFields}
|
from ${tableTempName} t
|
inner join maintain_detail md on t.id = md.pre_merge_id
|
where md.parent_id = ${maintainId} and md.operate = 'create'
|
|
</insert>
|
|
<select id="getTempIdByStdId" statementType="STATEMENT" resultType="java.lang.String">
|
SELECT tm.id from ${tableTempName} tm
|
inner JOIN maintain_detail md on md.pre_merge_id = tm.id
|
where tm.std_id = ${stdId} and md.parent_id = ${maintainId}
|
|
</select>
|
|
<insert id="insertMatintainDetailFromTemp" statementType="STATEMENT">
|
|
INSERT INTO maintain_detail
|
SELECT md5(uuid()) as id, ${maintainId} as parent_id, ${operate} as operate, id as pre_merge_id, NOW() as create_time
|
from ${tableTempName} m WHERE m.deal = 0
|
|
</insert>
|
|
<insert id="insertMatintainDetailFromStandrad" statementType="STATEMENT">
|
|
INSERT INTO maintain_detail
|
SELECT md5(uuid()) as id, ${maintainId} as parent_id, 'delete' as operate, id as pre_merge_id, NOW() as create_time
|
from ${tableTempName} m WHERE m.deal = 0
|
|
</insert>
|
|
<update id="updateStdId" statementType="STATEMENT">
|
|
update ${tableTempName}
|
set std_id = md5(uuid()) WHERE deal = 0
|
|
</update>
|
|
<insert id="insertRecordFromStandrad" statementType="STATEMENT">
|
INSERT INTO ${recordTableName}
|
SELECT ${tempFieldList}, 0 as deal
|
from ${tableName}
|
|
</insert>
|
|
<select id="tempByOperate" statementType="STATEMENT" resultType="java.util.Map">
|
SELECT
|
${fields}
|
from ${tableTempName} t
|
inner join maintain_detail md on md.pre_merge_id = t.id
|
where md.parent_id = ${maintainId}
|
and operate = ${operate}
|
|
</select>
|
|
<update id="updateRecordByMaintainId" statementType="STATEMENT">
|
update ${tableTempName}
|
INNER JOIN maintain_detail on ${tableTempName}.id = maintain_detail.pre_merge_id
|
set ${updateSegment}
|
WHERE maintain_detail.parent_id = ${maintainId}
|
|
</update>
|
|
<delete id="deleteRecordByMaintainId" statementType="STATEMENT">
|
DELETE ${tableTempName} from ${tableTempName}
|
INNER JOIN maintain_detail on maintain_detail.pre_merge_id = ${tableTempName}.id
|
WHERE maintain_detail.parent_id = ${maintainId} and ${tableTempName}.std_id = ${stdId}
|
</delete>
|
|
<select id="selectActMemberShip" parameterType="java.util.Map" resultType="java.util.Map">
|
select * from ACT_ID_MEMBERSHIP where USER_ID_ = #{userId} and GROUP_ID_ = #{roleId}
|
</select>
|
<select id="selectActMemberShipByRole" parameterType="java.util.Map" resultType="java.util.Map">
|
select * from ACT_ID_MEMBERSHIP where GROUP_ID_ = #{roleId}
|
</select>
|
<select id="selectActMemberShipByUser" parameterType="java.util.Map" resultType="java.util.Map">
|
select * from ACT_ID_MEMBERSHIP where USER_ID_ = #{userId}
|
</select>
|
|
<select id="getOneTempFieldDataByMaintainExtent" statementType="STATEMENT" resultType="java.util.Map">
|
<![CDATA[
|
|
SELECT DISTINCT ${field} FROM ${tempTableName} t
|
LEFT JOIN maintain_detail md on md.pre_merge_id = t.id
|
LEFT JOIN maintain m on m.id = md.parent_id
|
|
WHERE
|
m.table_name = ${tableName}
|
AND m.order_no >= ${fromOrderNo}
|
AND m.order_no < ${toOrderNo}
|
|
]]>
|
</select>
|
|
<select id="getTempDataByMaintainExtent" statementType="STATEMENT" resultType="java.util.Map">
|
<![CDATA[
|
SELECT t.* FROM ${tempTableName} t
|
LEFT JOIN maintain_detail md on md.pre_merge_id = t.id
|
LEFT JOIN maintain m on m.id = md.parent_id
|
|
WHERE
|
m.table_name = ${tableName}
|
AND m.order_no >= ${fromOrderNo}
|
AND m.order_no < ${toOrderNo}
|
|
|
]]>
|
</select>
|
</mapper>
|