mybatis如何获取插入操作自增长的id

mybatis如何获取插入操作的自增长的id

  • mybatis如何获取插入操作的自增长的id
    • keyProperty属性
    • useGeneratedKeys的属性
    • 使用keyProperty属性和useGeneratedKeys的属性
      • mapper文件
      • 测试代码
      • 执行结果

mybatis如何获取插入操作的自增长的id

最近发现身边的同事,在写插入操作的时候需要用到它的自增长的id,都是另外写一个查询方法取获取刚刚插入语句的id,这样写起来也很麻烦因为这样子我们还需要去写sql语句以及接口,其实mybatis给我们提供了这样的属性,来让我们获取他的自增长id,下面来了解一下它的属性

keyProperty属性

keyProperty 取id的key值,主要是在主键是自增的情况下,添加成功后可以直接使用主键值,其中keyProperty的值是对象的属性值不是数据库表中的字段名。

useGeneratedKeys的属性

useGeneratedKeys 参数只针对 insert 语句生效,默认为 false。当设置为 true 时,表示如果插入的表以自增列为主键,则允许 JDBC 支持自动生成主键,并可将自动生成的主键返回。

使用keyProperty属性和useGeneratedKeys的属性

mapper文件


<insert id="insert" keyProperty="id" useGeneratedKeys="true" parameterType="User" >
            INSERT INTO `test`.`smbms_user`
            (`userCode`, `userName`, `userPassword`) VALUES
            (#{userCode}, #{userName}, #{userPassword});
insert>

测试代码

        User user=new User();
        user.setUserCode("friday");
        user.setUserPassword("123456");
        int num = UserService.insert(user);
        //等方法执行完之后调用对象的user.getId()方法即可
        if (num>0){
            System.out.println("自增长id:"+user.getId()+"\t"+"用户名:"+user.getUserCode());
        }else {
            System.out.println("操作失败");
        }

执行结果

mybatis如何获取插入操作自增长的id_第1张图片

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