但我的问题是id是直接生成到api或数据库中的。
什么是更好的选择,请分享您的答案和建议
我的数据库是MySQL或MSSQL服务器
提前感谢。
生成自定义Id,当我的应用程序上有流量时,不会在运行时中断。
我不知道我们如何才能轻松解决它,但有一个解决方法。您可以创建一个自定义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);
}