Mybatis插入一条数据后如何返回主键id

Mybatis插入一条数据后如何返回主键id

有的时候我们需要同时添加两个表,这两个表又是一对一添加
我们的思路就是先添加外表,然后再添加主表,同时将外表的id
添加到主表的外键
我们需要在我们的mapper.xml里面
加上这两个东西
useGeneratedKeys=“true”
keyProperty=“pId”
keyProperty的值对应实体类的主键属性
代码这么写

    <insert id="addTParents" parameterType="com.buba.bigdata.exam.pojo.TParents"
            useGeneratedKeys="true" keyProperty="pId">
        INSERT INTO t_parents (p_name, p_phone)
        VALUES
            (#{pName}, #{pPhone})
    </insert>

注意它返回的主键的值,会封装到你的实体类的主键里面
可以用getter去取
比如这样

@RequestMapping("/addStudent")
    public String addStudent(TStudent tStudent, TParents tParents){
        studentService.addTParents(tParents);
        tStudent.setParentsId(tParents.getpId());
        studentService.addTStudents(tStudent);
        return "redirect:/findStudentInformationAll";
    }

有一个注意的点就是,如果正坐在Mapper接口里面,用了@Param注解,
我们插入这条数据的主键是封装不到的,报错截图这里就不放了

我们需要在Mapper接口里面,去掉@param注解,在mapper.xml里面
去掉实体类就不放截图了,不能cv只能上传文件

希望对你有帮助,如果有帮助了,点个赞吧
如果有问题可以加我qq咨询我2368725753,随时等待交流

你可能感兴趣的:(java,mybatis,java)