但我的问题是id是直接生成到API或在数据库中。什么是更好的选择,请分享您的答案和建议我的数据库是MySQL或MS SQL Server先谢谢你了。生成自定义ID,当我的应用程序上有流量时,不会在运行时中断。
ar5n3qh51#
我不知道如何才能轻松解决这个问题,但有一个变通办法。您可以创建自定义id生成器类。别忘了,在设置ID之前,你必须检查数据库中ID的最后一个值。以下是示例:
@Service public class CustomIdGenerator { private static final String PREFIX = "R"; private static AtomicInteger counter; private final YourRepository yourRepository; public CustomIdGenerator(YourRepository yourRepository) { this.yourRepository = yourRepository; } @PostConstruct private void init() { int lastId = getLastIdFromDatabase(); counter = new AtomicInteger(lastId); } public String generateId() { return PREFIX + counter.incrementAndGet(); } private int getLastIdFromDatabase() { String lastId = yourRepository.findLastId(); if (lastId == null) { return 2023000; } return Integer.parseInt(lastId.substring(PREFIX.length())); } } @Repository public interface YourRepository extends JpaRepository<YourEntity, String> { @Query(value = "SELECT id FROM your_table ORDER BY id DESC LIMIT 1", nativeQuery = true) String findLastId(); }
使用方法:
public void saveYourEntity(YourEntity entity) { entity.setId(customIdGenerator.generateId()); yourRepository.save(entity); }
1条答案
按热度按时间ar5n3qh51#
我不知道如何才能轻松解决这个问题,但有一个变通办法。您可以创建自定义id生成器类。别忘了,在设置ID之前,你必须检查数据库中ID的最后一个值。
以下是示例:
使用方法: