mysql如何获取自增id

 更新时间:2024年07月03日 15:12:06   作者:sugarJava  
这篇文章主要介绍了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()获取。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • linux mysql 数据库开启外部访问设置指南

    linux mysql 数据库开启外部访问设置指南

    Linux下设置MySQL和允许外部机器访问,具体目录是具体情况而定,有的人是安装了在个人目录下,则找到对应的目录则可以
    2012-11-11
  • MySQL中的存储过程异常处理

    MySQL中的存储过程异常处理

    这篇文章主要介绍了MySQL中的存储过程异常处理方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-09-09
  • Win2008 R2 mysql 5.5 zip格式mysql 安装与配置

    Win2008 R2 mysql 5.5 zip格式mysql 安装与配置

    这篇文章主要介绍了Win2008 R2 mysql 5.5 zip格式mysql 安装与配置,需要的朋友可以参考下
    2017-06-06
  • MySQL时间盲注的五种延时方法实现

    MySQL时间盲注的五种延时方法实现

    MySQL时间盲注主要有五种,sleep(),benchmark(t,exp),笛卡尔积,GET_LOCK() RLIKE正则,本文就主要介绍了这五种方法,感兴趣的可以了解一下
    2021-05-05
  • Windows下mysql 8.0.28 安装配置方法图文教程

    Windows下mysql 8.0.28 安装配置方法图文教程

    这篇文章主要为大家详细介绍了Windows下mysql 8.0.28 安装配置方法图文教程,文中安装步骤介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-04-04
  • MySQL如何确定VARCHAR大小问题

    MySQL如何确定VARCHAR大小问题

    本文主要介绍了MySQL如何确定VARCHAR大小问题,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-02-02
  • mysql大小写敏感导致程序无法启动的问题

    mysql大小写敏感导致程序无法启动的问题

    这篇文章主要介绍了mysql大小写敏感导致程序无法启动的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-11-11
  • cmd中MySQL中文数据乱码问题解决方法

    cmd中MySQL中文数据乱码问题解决方法

    MySQL是默认utf8编码的,所建数据库也是设置utf8编码,使用程序可以新增中文数据,在cmd中使用SQL语句新增数据则报错,有类似情况的朋友可以参考下本文
    2014-02-02
  • Mysql字段为null的加减乘除运算方式

    Mysql字段为null的加减乘除运算方式

    这篇文章主要介绍了Mysql字段为null的加减乘除运算方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-09-09
  • mysql之跨库关联查询(dblink)问题

    mysql之跨库关联查询(dblink)问题

    这篇文章主要介绍了mysql之跨库关联查询(dblink)问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03

最新评论