1. 程式人生 > 實用技巧 >mybatis-generator 唯一索引外掛

mybatis-generator 唯一索引外掛

因工作使用到了分庫分表中,一般使用含有分庫分表鍵的唯一索引操作資料庫,而不是使用子增長id主鍵進行操作,因此寫了一個唯一索引的資料庫操作方式。

github地址:https://github.com/suyin58/mybatis-generator-tddl

提供的唯一索引操作包括:

根據唯一索引查詢單條資料:selectByUniqueKey
根據唯一索引進行forupdate悲觀鎖操作:selectByUniqueKeyForUpdate
根據唯一索引更新資料:updateByUniqueKeySelective
根據唯一索引刪除資料:deleteByUniqueKey
根據唯一索引進行存在即更新操作:upsertByUniqueKey

需要在
配置檔案
中增加外掛:(https://github.com/suyin58/mybatis-generator-tddl/blob/master/generator-test/src/test/resources/generatorConfigMyBatis3.xml)
<!-- 自定義外掛開始 -->
        <!--序列化外掛-->
        <plugin type="com.toolplat.generator.plugins.SerializablePlugin"/>
        <!-- lombok 外掛 -->
        <plugin type="com.toolplat.generator.plugins.LombokPlugin">
            <property name="data" value="true"/>
            <property name="builder" value="true"/>
            <property name="allArgsConstructor" value="true"/>
            <property name="noArgsConstructor" value="true"/>
            <property name="toString" value="true"/>
        </plugin>
        <!-- 自定義unique key操作外掛 -->
        <plugin type="com.toolplat.generator.plugins.SelectByUniqueKeyPlugin">
        </plugin>
        <plugin type="com.toolplat.generator.plugins.UpdateByUniqueKeySelectivePlugin">
        </plugin>
        <plugin type="com.toolplat.generator.plugins.DeleteByUniqueKeyPlugin">
        </plugin>
        <!--存在即更新外掛-->
        <plugin type="com.toolplat.generator.plugins.UpsertByUniqueKeyPlugin">
        </plugin>
        <plugin type="com.toolplat.generator.plugins.UpsertByPrimaryKeyPlugin">
        </plugin>
        <!--批量插入外掛-->
        <plugin type="com.toolplat.generator.plugins.BatchInsertPlugin">
        </plugin>
        <!--for
update 外掛--> <plugin type="com.toolplat.generator.plugins.SelectByPrimaryForUpdate"> </plugin> <plugin type="com.toolplat.generator.plugins.SelectByExampleForUpdate"> </plugin> <plugin type="com.toolplat.generator.plugins.SelectByUniqueKeyForUpdatePlugin"> </plugin> <!--分頁外掛--> <plugin type="com.toolplat.generator.plugins.LimitPlugin"> </plugin> <!-- 自定義外掛結束 --> <!--自定義註釋開始 --> <!-- commentGenerator 去除自動生成的註釋 --> <commentGenerator type="com.toolplat.generator.plugins.CommentGenerator"> <property name="author" value="szy" /> </commentGenerator> <!--自定義註釋結束 -->
View Code

如果一個表只存在一個非主鍵的唯一索引,系統可以自動識別。如果存在非主鍵外的多個唯一索引,需要手動指定需要使用的唯一索引名稱

        <table tableName="table_two_unique_key" domainObjectName="TableTwoUniqueKeyPO">
            <property name="uniqueKey" value="uk_org_cid"/>
        </table>
View Code

PS:表中無唯一索引,將不會生成這些唯一索引的相關操作。