mysql获取自增id

JAVA在插入自增主键的一条数据,如何同时获取该条自增的主键id?

业务场景

开发业务场景:在学生管理系统业务场景中,比如班上新来一名转校学生小吴,并参与了此次学校的摸底考试,那么系统管理员需要将他的信息更新到学生表的同时还需要和课程表绑定关系(多对多关系中需建立一个关系表)。成绩表(主要字段:student_id, sourse_id, score …)通过学生id和课程id来确定一条数据的唯一性。 所以在添加一名新学生的时候,相关的关系表也要做添加操作(小吴学了哪些课程)。

实际开发举例:


@Service
public class GroupServiceImpl implements IGroupService
{
    private static final Logger log = LoggerFactory.getLogger(GroupServiceImpl.class);

    @Autowired
    private GroupMapper groupMapper;

    @Autowired
    private IGroupUserService groupUserService;
/*
业务场景:group(分组表),user(用户表),分组用户关系表(group_user)
添加一个新的分组,分组下面可以有多个成员,一个成员可以创建多个分组,它们之间是多对多的关系,在添加一个新分组的时候,关系表也要绑定这条添加记录。因此此处有两个insert操作。新建分组是必须由当前user来新建的。所以新建的分组的时候,就得往group_user关系里填一条默认记录。
*/
    @Override
    public int insertGroupInfo(Group group) {
        BeanUtils.initInsertProperty(group);//初始化一些字段
        groupMapper.insertSelective(group);//添加分组
        
        groupUserService.insertGroupUserSelective.  (newGroupUser(0,group.getId(),SecurityUtils.getLoginUser().getUser().getUserId().intValue(),SecurityUtils.getLoginUser().getUser().getRoleId().intValue(),Constants.TEAM_ROLE.LEADER));//默认添加分组成员关系表一条记录(创建分组者)
        return 1;
    }
}

代码实现

这里我们会使用mysql技术,在XXXXXmapper.xml文件中,在insert 代码位置添加如下属性:useGeneratedKeys=“true” 和 keyProperty=“id”,此处的id即为你设置的自增的主键字段

<insert id="insert" parameterType="com.demo.project.entity.Student" useGeneratedKeys="true" keyProperty="id">
    insert into student (id, name,sex,age)
    values (#{id,jdbcType=INTEGER}, #{name,jdbcType=VARCHAR}, #{sex,jdbcType=VARCHAR}, #{age,jdbcType=VARCHAR}
  </insert>

在mapper映射文件添加好属性后便可在service层直接获取id

Student student=new Student();
student.setName("小吴");
studentService.insertStudent(student);//添加学生
ScoreService.insertScore(new Score(student.getId(),sourse.getId,0));//添加成绩实体,成绩默认为0分

总结

获取当前添加的数据字段自增id的值,使用mysql技术,在insert操作的时候,添加关键属性:
1. useGeneratedKeys=“true”
2. keyProperty=“id”
3. 直接在service层获取当前添加实体的id。
4. mybatisplus 默认集成了useGeneratedKeys=“true” 和 keyProperty=“id” 属性,可以直接通过getId()获取。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值