展开
拓展 关闭
订阅号推广码
GitHub
视频
公告栏 关闭

自定义id生成器

  • 实体类
@Data
public class User {
@TableId(type = IdType.ASSIGN_ID)
private Long id;
private String name;
private Integer age;
private String email;
}
  • mapper
@Mapper
public interface UserMapper extends BaseMapper<User> {
}
  • service
@Service
public class UserService extends ServiceImpl<UserMapper, User> {
}
  • id生成器
@Slf4j
@Component
public class CustomIdGenerator implements IdentifierGenerator {
private final AtomicLong al = new AtomicLong(1);
@Override
public Long nextId(Object entity) {
//可以将当前传入的class全类名来作为bizKey,或者提取参数来生成bizKey进行分布式Id调用生成.
String bizKey = entity.getClass().getName();
log.info("bizKey:{}", bizKey);
MetaObject metaObject = SystemMetaObject.forObject(entity);
String name = (String) metaObject.getValue("name");
final long id = al.getAndAdd(1);
log.info("为{}生成主键值->:{}", name, id);
return id;
}
}
  • 测试类
@Test
public void test() {
User user = new User();
user.setName("靓仔");
user.setAge(18);
userMapper.insert(user);
Assertions.assertEquals(Long.valueOf(1L), user.getId());
}
# 控制台
为靓仔生成主键值->:1
posted @   DogLeftover  阅读(112)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
· 提示词工程——AI应用必不可少的技术
点击右上角即可分享
微信分享提示