记录MyBatis插入数据不返回ID的问题

问题描述:
插入一条数据,根据返回的ID做其他数据的录入,但返回值一直为1
查了很久资料,都是描述mapper.xml中如何配置属性,让sql执行完返回ID,并没有描述ID怎么能拿到

<insert id="insertUser" parameterType="users" useGeneratedKeys="true" keyProperty="id" keyColumn="ID">
   INSERT INTO
    USERS (USERNAME,BIRTHDAY,SEX,ADDRESS)
   VALUES
  (#{userName},#{birthday},#{sex},#{address})
</insert>

 @Override
  public int insertUser(Users users) {
    return usersDao.insertUser(users);
  }

@RequestMapping("insertUser")
    public String insertUser() {

        try {

            Users users = new Users();
            users.setUserName("测试插入");
            users.setBirthday(new Date());
            users.setSex("0");
            users.setAddress("帝都");
            userServiceImpl.insertUser(users);
            logger.info("插入后id={}", JSONObject.toJSONString(users));

        } catch (Exception e) {
            e.printStackTrace();
            return "error";
        }
        return "success";
    }

注意方法insertUser的返回值,并不是返回插入数据后生成的ID,而是数据库受影响行数,成功返回1,失败返回0,要想获取本次插入数据,数据库自动生成的ID,需要通过传入的参数users,调用getID进行获取,因为MyBatis把数据库生成的ID封装到了该参数中

ps:
数据库支持主键自增长,本例使用的数据库为MySQL

转载于:https://www.jianshu.com/p/a6c34fdffc9b

猜你喜欢

转载自blog.csdn.net/weixin_34268169/article/details/91081562