亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

mybatisplus雪花算法生成Id怎么使用

發布時間:2022-09-20 17:21:03 來源:億速云 閱讀:245 作者:iii 欄目:開發技術

這篇文章主要講解了“mybatisplus雪花算法生成Id怎么使用”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“mybatisplus雪花算法生成Id怎么使用”吧!

雪花算法實戰

1.建表

DROP TABLE IF EXISTS user;

CREATE TABLE user
(
    id BIGINT(20) NOT NULL COMMENT '主鍵ID',
    name VARCHAR(30) NULL DEFAULT NULL COMMENT '姓名',
    age INT(11) NULL DEFAULT NULL COMMENT '年齡',
    email VARCHAR(50) NULL DEFAULT NULL COMMENT '郵箱',
    PRIMARY KEY (id)
);

注意??:
這里的主鍵字段沒有配置自增生成策略,所以執行新增操作的時候,需要給id字段設置值,才能新增成功。類似如下:

INSERT INTO user ( id, name, age, email ) VALUES ( 123434, 'test', 13, '101@qq.com')

mybatisplus雪花算法生成Id怎么使用

相關代碼:
maven依賴:

 <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.5.2</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

實體User:

@Data
public class User {
    private Long id;
    private String name;
    private Integer age;
    private String email;
}

mapper:

public interface UserMapper extends BaseMapper<User> {

}

啟動類Application:

@SpringBootApplication
@Slf4j
@MapperScan("com.laowan.mybatis_plus.mapper")
public class MybatisPlusApplication {
    public static void main(String[] args) {
        SpringApplication.run(MybatisPlusApplication.class, args);
        log.info("mybatis_plus_demo 啟動成功");
    }
}

注意??:
這里在啟動類上配置了@MapperScan(“mapper接口目錄”),所以在UserMapper接口上沒有條件@Mapper注解。
@Mapper配置方法:

@Mapper
public interface UserMapper extends BaseMapper<User> {

}

兩者任意選擇一種方式配置即可,如果都不配置,那么在執行dao層方法進行數據操作時,會出現在spring容器中找不到對應的bean的異常。

@Mapper和@MapperScan都不配置調用mapper方法時出現的異常:

Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'com.laowan.mybatis_plus.mapper.UserMapper' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}

配置屬性:

server.port=8080
logging.level.com.laowan.mybatis_plus.mapper=debug
spring.datasource.url = jdbc:mysql://localst:3306/seckill?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true
spring.datasource.username = root
spring.datasource.password = 123456

3.測試

@SpringBootTest
class MybatisPlusApplicationTests {
    @Autowired
    private UserMapper userMapper;

    @Test
    public void testInsert() {
        System.out.println(("----- insert method test ------"));
        User user = new User();
        user.setName("test");
        user.setAge(13);
        user.setEmail("101@qq.com");
        userMapper.insert(user);
        System.out.println(user.toString());
    }

執行結果:

mybatisplus雪花算法生成Id怎么使用

User(id=728666272023183375, name=test, age=13, email=101@qq.com)

多次執行,發現主鍵ID的確呈趨勢遞增。

mybatisplus雪花算法生成Id怎么使用

結論:
主鍵id的生成策略已經采用了雪花算法,呈趨勢遞增。

實現分析

很多人可能疑惑????,你這明明啥都沒干,怎么就實現了雪花算法生成Id。
其實mybatis-plus已經內置雪花算法生成分布式唯一id。
在mybatis-plus特性中已經明確說明了這點。

mybatisplus雪花算法生成Id怎么使用

我們可以直接在IDEA中雙擊shift搜索Sequence類查看其具體實現,可以發現其實現就是采用了雪花算法。

mybatisplus雪花算法生成Id怎么使用

為什么默認就是雪花算法

實體User:

@Data
public class User {
    private Long id;
    private String name;
    private Integer age;
    private String email;
}

這里可以看到我們并沒有在實體類的id上設置id生成策略。
其實mybatis-plus中默認的主鍵生成策略為DefaultIdentifierGenerator,里面的實現就是采用Sequence生成主鍵。

mybatisplus雪花算法生成Id怎么使用

public class DefaultIdentifierGenerator implements IdentifierGenerator {
    private final Sequence sequence;

    public DefaultIdentifierGenerator() {
        this.sequence = new Sequence((InetAddress)null);
    }

    public DefaultIdentifierGenerator(InetAddress inetAddress) {
        this.sequence = new Sequence(inetAddress);
    }

    public DefaultIdentifierGenerator(long workerId, long dataCenterId) {
        this.sequence = new Sequence(workerId, dataCenterId);
    }

    public DefaultIdentifierGenerator(Sequence sequence) {
        this.sequence = sequence;
    }

    public Long nextId(Object entity) {
        return this.sequence.nextId();
    }
}

主動設置Id生成策略

可以通過mybatis-plus中的@TableId主鍵,主動標識主鍵字段,并配置主鍵生成策略。

@Data
public class User {
    //采用IdentifierGenerator默認的實現類DefaultIdentifierGenerator生成id
    @TableId(type = IdType.ASSIGN_ID)
    private Long id;
    private String name;
    private Integer age;
    private String email;
}

mybatisplus雪花算法生成Id怎么使用

感謝各位的閱讀,以上就是“mybatisplus雪花算法生成Id怎么使用”的內容了,經過本文的學習后,相信大家對mybatisplus雪花算法生成Id怎么使用這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

张掖市| 宁城县| 仙居县| 扶沟县| 嘉峪关市| 延庆县| 肇东市| 汽车| 新和县| 中超| 越西县| 蒙山县| 登封市| 黄浦区| 吉木乃县| 延吉市| 中方县| 五原县| 灌云县| 玉龙| 姚安县| 仁化县| 蚌埠市| 安宁市| 邵阳县| 象州县| 洛川县| 丘北县| 航空| 沧源| 台中市| 云南省| 六盘水市| 巩义市| 信丰县| 青浦区| 无棣县| 柳林县| 柞水县| 内江市| 珲春市|