雪花策略配置

1.基本功能 1.基本功能

主键使用雪花策略生成。

2.配置方法 2.配置方法

配置

1.如果项目组需要使用snowFlakeGenerator 19位数字生成器,则拷贝19_BIGINT\id-generator.xml文件覆盖或者拷贝到 src\resources\context下。(ps:拷贝文件可以从升级包V3.22.C.0中的参考配置文件夹中取,也可参考如下代码)。
其中id-generator.xm代码文件为:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

    <bean id="numberIncIdentitiesHolder" class="com.gillion.intinc.service.NumberIncIdentitiesHolder">
        <property name="jdbcTemplate">
            <bean class="org.springframework.jdbc.core.JdbcTemplate">
                <property name="dataSource" ref="dataSource"/>
            </bean>
        </property>
        <property name="defaultRegionSize" value="1000"/>
        <property name="dbType" value="MYSQL"/>
    </bean>

    <bean id="uuidGenerator" class="com.gillion.persist.generator.UUIDGenerator"></bean>
    <bean id="numberIncGenerator" class="com.gillion.persist.generator.NumberIncGenerator">
        <property name="defaultPKCodeMapping" value="DEFAULT_PK_CODE"/>
        <property name="numberIncIdentitiesHolder" ref="numberIncIdentitiesHolder"/>
    </bean>
    <!-- 19位  snowFlakeGenerator bigint型主键生成器 start-->
    <bean id="nodeGetter" class="com.gillion.persist.generator.DbPersistNodeGetter">
        <property name="app" value="common"/>
        <property name="jdbcTemplate">
            <bean class="org.springframework.jdbc.core.JdbcTemplate">
                <property name="dataSource" ref="dataSource" />
            </bean>
        </property>
    </bean>
    <bean id="snowFlakeGenerator" class="com.gillion.persist.generator.SnowFlakeGenerator" >
          <property name="nodeGetter" ref="nodeGetter" />
    </bean>
    <!-- 19位  snowFlakeGenerator bigint型主键生成器 end-->

</beans>

2.然后检查src\resources\context\applicationContext.xml修改如下

    <!-- id生成器 -->
    <import resource="classpath:context/id-generator.xml"/>

3.执行 Generator\dbsceript\app_nodes_mysql.sql 脚本。目前只支持mysql 、其他数据库还不支持。脚本文件如下(ps:拷贝文件可以从升级包V3.22.C.0中的参考配置文件夹中取,也可参考如下代码)。

CREATE TABLE `app_nodes` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `app_name` varchar(20) DEFAULT NULL,
  `node_name` varchar(50) DEFAULT NULL,
  `node_num` int(4) DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `node_unique` (`app_name`,`node_name`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=2348 DEFAULT CHARSET=utf8;

4.对象建模–业务对象–可视化布局-选中左边的数据源,在右边的【属性定义】页签找到主键字段,主键字段必须为长整型,且长度为19
QQ截图20210312193449

5.对象建模–业务对象–可视化布局-点击【业务对象编辑】按钮,在弹窗页里面-的【ID生成器名称】字段中配置【snowFlakeGenerator】即可。
QQ截图20210312193235

6.如果架构使用EC3【目前仅象屿项目】,需在视图配置那里配置内容,配置项类型:【使用哪种JAVA后端架构】、配置内容:【EC3】。
单号规则3

代码

在实体类中主键字段生成如下注解

    /** 货品ID */
    @Id
    @GeneratedValue(generator = "idGenerator")
    @Generator("snowFlakeGenerator")
    @JsonSerialize(using = Long2String.class)
    @Column(name = "TEST_CASE_209_ID", nullable = false, length = 19, precision = 19, scale = 0)
    private Long testCase209Id;

3.常用扩展 3.常用扩展

暂无

4.版本更新 4.版本更新

7.4.1,2021.03.12

优化

  • 雪花主键策略支持直接在可视化上配置。