From c007f0ca1785db093d48f4846cda82fe8e955765 Mon Sep 17 00:00:00 2001 From: kimi <kimi42345@gmail.com> Date: 星期三, 27 五月 2020 09:59:29 +0800 Subject: [PATCH] merage --- src/main/resources/mapping/TableInfoMapper.xml | 146 ++++++++++++++++++++++++++++++++++++++++++++---- 1 files changed, 134 insertions(+), 12 deletions(-) diff --git a/src/main/resources/mapping/TableInfoMapper.xml b/src/main/resources/mapping/TableInfoMapper.xml index 5526fe0..ab82581 100644 --- a/src/main/resources/mapping/TableInfoMapper.xml +++ b/src/main/resources/mapping/TableInfoMapper.xml @@ -6,16 +6,24 @@ 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 from information_schema.COLUMNS where table_name = #{tableName} and table_schema = (select database()) ; + 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 from information_schema.COLUMNS where table_name = #{tableName} and table_schema = #{dbName}; + 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" > @@ -28,9 +36,11 @@ SELECT std_id FROM ${tableTempName} tm LEFT JOIN maintain_detail ON tm.id = maintain_detail.pre_merge_id LEFT JOIN maintain ON maintain.id = maintain_detail.parent_id + LEFT JOIN flows f on maintain.flow_id = f.id WHERE maintain.order_no <= ${fromOrderNo} and maintain.order_no > ${toOrderNo} and operate = 'create' AND tm.std_id = m.id + AND f.status = 'open' and maintain.table_name = '${tableName}' ) ) a1 LEFT JOIN @@ -42,8 +52,10 @@ SELECT MIN(m.order_no) as order_no, mt.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 m.flow_id = f.id WHERE m.order_no <= ${fromOrderNo} and m.order_no > ${toOrderNo} and m.table_name = '${tableName}' and operate = 'update' + AND f.status = 'open' GROUP BY mt.std_id ) a on a.order_no = m.order_no and a.std_id = h.std_id )a2 on a1.id = a2.id WHERE a2.id is null @@ -56,8 +68,10 @@ SELECT std_id FROM ${tableTempName} tm LEFT JOIN maintain_detail ON tm.id = maintain_detail.pre_merge_id LEFT JOIN maintain ON maintain.id = maintain_detail.parent_id + LEFT JOIN flows f on maintain.flow_id = f.id WHERE maintain.order_no <= ${fromOrderNo} and maintain.order_no > ${toOrderNo} and operate = 'create' + AND f.status = 'open' AND tm.std_id = m.id and maintain.table_name = '${tableName}' ) ) a1 @@ -70,23 +84,29 @@ SELECT MIN(m.order_no) as order_no, mt.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 m.flow_id = f.id WHERE m.order_no <= ${fromOrderNo} and m.order_no > ${toOrderNo} and m.table_name = '${tableName}' and operate = 'update' + AND f.status = 'open' GROUP BY mt.std_id ) a on a.order_no = m.order_no and a.std_id = h.std_id )a2 on a1.id = a2.id WHERE a2.id is not null UNION SELECT ${tempFields} FROM maintain_detail md LEFT JOIN maintain ON maintain.id = md.parent_id + LEFT JOIN flows f on maintain.flow_id = f.id LEFT JOIN ${tableTempName} mt on mt.id = md.pre_merge_id WHERE maintain.order_no <= ${fromOrderNo} and maintain.order_no > ${toOrderNo} AND operate = 'delete' + AND f.status = 'open' and maintain.table_name = '${tableName}' AND NOT EXISTS ( SELECT * FROM maintain_detail LEFT JOIN maintain ON maintain.id = maintain_detail.parent_id LEFT JOIN ${tableTempName} mt1 on mt1.id = maintain_detail.pre_merge_id + LEFT JOIN flows f on maintain.flow_id = f.id WHERE maintain.order_no <= ${fromOrderNo} and maintain.order_no > ${toOrderNo} AND operate = 'create' + AND f.status = 'open' AND mt.std_id = mt1.std_id and maintain.table_name = '${tableName}' ) @@ -183,7 +203,7 @@ select ${fields} from ${tableName} where ${where} </select> - <select id="tempDeal" statementType="STATEMENT" resultType="java.lang.Long"> + <select id="tempDeal" statementType="STATEMENT" resultType="java.lang.Integer"> UPDATE ${tableTempName} t SET deal = 1 @@ -208,8 +228,10 @@ SELECT std_id FROM ${tableTempName} tm LEFT JOIN maintain_detail ON tm.id = maintain_detail.pre_merge_id LEFT JOIN maintain ON maintain.id = maintain_detail.parent_id + LEFT JOIN flows f on maintain.flow_id = f.id WHERE maintain.order_no <= ${fromOrderNo} and maintain.order_no > ${toOrderNo} and maintain.table_name = '${tableName}' + AND f.status = 'open' and operate = 'create' AND tm.std_id = m.id ) ) a1 @@ -222,8 +244,10 @@ SELECT MIN(m.order_no) as order_no, mt.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 m.flow_id = f.id WHERE m.order_no <= ${fromOrderNo} and m.order_no > ${toOrderNo} and m.table_name = '${tableName}' and operate = 'update' + AND f.status = 'open' GROUP BY mt.std_id ) a on a.order_no = m.order_no and a.std_id = h.std_id )a2 on a1.id = a2.id WHERE a2.id is null @@ -236,8 +260,10 @@ SELECT std_id FROM ${tableTempName} tm LEFT JOIN maintain_detail ON tm.id = maintain_detail.pre_merge_id LEFT JOIN maintain ON maintain.id = maintain_detail.parent_id + LEFT JOIN flows f on maintain.flow_id = f.id WHERE maintain.order_no <= ${fromOrderNo} and maintain.order_no > ${toOrderNo} and maintain.table_name = '${tableName}' + AND f.status = 'open' and operate = 'create' AND tm.std_id = m.id ) ) a1 @@ -250,8 +276,10 @@ SELECT MIN(m.order_no) as order_no, mt.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 m.flow_id = f.id WHERE m.order_no <= ${fromOrderNo} and m.order_no > ${toOrderNo} and m.table_name = '${tableName}' and operate = 'update' + AND f.status = 'open' GROUP BY mt.std_id ) a on a.order_no = m.order_no and a.std_id = h.std_id )a2 on a1.id = a2.id WHERE a2.id is not null @@ -259,15 +287,19 @@ SELECT ${tempFields} FROM maintain_detail md LEFT JOIN maintain ON maintain.id = md.parent_id LEFT JOIN ${tableTempName} mt on mt.id = md.pre_merge_id + LEFT JOIN flows f on maintain.flow_id = f.id WHERE maintain.order_no <= ${fromOrderNo} and maintain.order_no > ${toOrderNo} and maintain.table_name = '${tableName}' + AND f.status = 'open' AND operate = 'delete' AND NOT EXISTS ( SELECT * FROM maintain_detail LEFT JOIN maintain ON maintain.id = maintain_detail.parent_id LEFT JOIN ${tableTempName} mt1 on mt1.id = maintain_detail.pre_merge_id + LEFT JOIN flows f on maintain.flow_id = f.id WHERE maintain.order_no <= ${fromOrderNo} and maintain.order_no > ${toOrderNo} AND operate = 'create' + AND f.status = 'open' AND mt.std_id = mt1.std_id and maintain.table_name = '${tableName}' ) @@ -364,18 +396,35 @@ ]]> </select> - <select id="insert" resultType="java.lang.Boolean" statementType="STATEMENT" > + <insert id="insert" statementType="STATEMENT" > INSERT INTO ${tableName} (${fields}) VALUES ${values} - </select> + </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 FROM ${tableTempName} where EXISTS ( @@ -385,7 +434,7 @@ </delete> <!-- temp 2 standrad--> - <select id="tempCreate2std" statementType="STATEMENT" > + <insert id="tempCreate2std" statementType="STATEMENT" > INSERT INTO ${tableName} SELECT ${tempFields} @@ -399,7 +448,7 @@ and operate = 'create' and tm.id = t.id ) - </select> + </insert> <select id="getTempIdByStdId" statementType="STATEMENT" resultType="java.lang.String"> SELECT tm.id from ${tableTempName} tm @@ -408,20 +457,35 @@ </select> - <select id="insertMatintainDetailFromTemp" statementType="STATEMENT" resultType="java.lang.Integer"> + <insert id="insertMatintainDetailFromTemp" statementType="STATEMENT" > INSERT INTO maintain_detail - SELECT md5(uuid()) as id, ${maintainId} as parent_id, 'create' as operate, id as pre_merge_id, NOW() as createdate + 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 - </select> + </insert> - <select id="updateStdId" statementType="STATEMENT" resultType="java.lang.Integer"> + <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 - </select> + </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 @@ -437,4 +501,62 @@ and maintain_detail.pre_merge_id = t.id ) </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 WHERE EXISTS ( + SELECT pre_merge_id FROM ( SELECT pre_merge_id FROM maintain_detail WHERE EXISTS ( + SELECT id FROM ( SELECT id FROM `maintain` WHERE + table_name = ${tableName} + AND order_no >= ${fromOrderNo} + AND order_no < ${toOrderNo} + ) a + WHERE + a.id = maintain_detail.parent_id ) + ) a + WHERE t.id = a.pre_merge_id) + + ]]> + </select> + + <select id="getTempDataByMaintainExtent" statementType="STATEMENT" resultType="java.util.Map"> + <![CDATA[ + SELECT * FROM ${tempTableName} t WHERE EXISTS ( + SELECT pre_merge_id FROM ( SELECT pre_merge_id FROM maintain_detail WHERE EXISTS ( + SELECT id FROM ( SELECT id FROM `maintain` WHERE + table_name = ${tableName} + AND order_no >= ${fromOrderNo} + AND order_no < ${toOrderNo} + ) a + WHERE + a.id = maintain_detail.parent_id ) + ) a + WHERE t.id = a.pre_merge_id) + + ]]> + </select> </mapper> -- Gitblit v1.8.0