汪的爱琪 2024-02-15 17:26 采纳率: 67.5%
浏览 9
已结题

mybatis返回id值错误

我做了一个简单的插入,并且想通过插入后返回用户数据库自增的id值,用来对另一张表进行补充(user表与userinfo表通过外键依赖连接起来,user表只存用户名和密码,其余都在userinfo表里)
在Controller层接收两个字符串username和password

    @PostMapping("/register")
    public Result<String> register(@Pattern(regexp = "^\\S{4,10}$") String username,@Pattern(regexp = "^\\S{8,16}$") String password)  {
        User u = userService.findByUsername(username);
        if (u == null) {
            userService.register(username, password);
            return Result.success();
        } else {
            return Result.error("用户已存在");
        }
    }

在service层进行封装到user对象中

    @Override
    public void register(String username, String password) {
        System.out.println("开始执行");
                // todo 需要使用加密算法
        User user = new User();
        user.setUsername(username);
        user.setPassword(password);
        Integer id =  userMapper.register(user);
        System.out.println("返回的id值="+id);
        userInfoMapper.insertRegistrationTime(id);
    }

然后通过mybatis的xml文件进行用户新建操作

    <insert id="register" parameterType="user" useGeneratedKeys="true" keyProperty="id">
            insert into user(username,password) values(#{username},#{password})
    </insert>

之前在数据库内就有两条了,我觉得返回应该就是自增的3了,可是当我看到mybiatis返回的结果的时候就不对了,返回了1,不是useGeneratedKeys="true" keyProperty="id"这两个会返回自增后的id吗,而且是一直返回1,也不自增

img

img

img

  • 写回答

5条回答 默认 最新

  • _Onelone丶 2024-02-19 14:09
    关注

    忽略掉上面的人工智障,你这样获取是获取到了插入成功的条数,并不是你的id,如想获取可在mapper执行插入语句后用user.getId()

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 2月20日
  • 已采纳回答 2月20日
  • 修改了问题 2月15日
  • 创建了问题 2月15日

悬赏问题

  • ¥15 有人会用py或者r画这种图吗
  • ¥15 MOD04_3K图像预处理
  • ¥15 [VASP]关于超胞大小和k 点网格的收敛性测试
  • ¥15 pip下载paddle2onnx离谱错误
  • ¥60 db2move nlzxams import 导出db2备份数据报错
  • ¥15 关于#python#的问题:全文总结功能咨询
  • ¥15 俄罗斯方块中无法同时消除多个满行
  • ¥15 使用gojs3.0,如何在nodeDataArray设置好text的位置,再go.TextBlock alignment中进行相应的改变
  • ¥15 psfusion图像融合指标很低
  • ¥15 银河麒麟linux系统如何修改/etc/hosts权限为777