Mybatis:插入資料返回自增主鍵

划水的魚dm發表於2021-11-12

使用Mybatis作為工具連線MySQL,要求在插入資料之後返回自增主鍵

一開始也很迷惑,Mybatis使用insert之後,成功返回的是1,失敗會報錯或返回0,主鍵去哪找來

後來知道Mybatis可以把自增主鍵的值放到實體中返回

這是實體類的定義(實體類必須有一個欄位接收主鍵的值)

public class UserEntity {

    private Long id;
    private String username;
    private String type;
    private String name;
    private Long number;
    private String password;

}

 

  

 首先建立的xml檔案是這樣的,可以將資料插入到表中,但是不能獲取主鍵值

<insert id="insert" parameterType="com.example.springbootdemo.entity.UserEntity">
        insert into `t_user`(user_name, type,number) VALUES
        (
         #{username},#{type},1
        )
</insert>

 

需要給insert操作加上兩個引數

  1. useGeneratedKeys :確定使用自增主鍵

  2. keyProperty :將主鍵的值放在實體類的欄位中

然後xml檔案就變成了這樣

 

<insert id="insert" keyProperty="id" useGeneratedKeys="true" parameterType="com.example.springbootdemo.entity.UserEntity">
        insert into `t_user`(user_name, type,number) VALUES
        (
         #{username},#{type},1
        )
</insert>

這裡的keyProperty = id ,所以自增主鍵值在id上,也可以賦值給其他欄位

 

測試一下

service實現類

@Service
public class UserService {

    @Autowired
    UserMapper userMapper;

    public Long insert(UserEntity userEntity){

       int result = userMapper.insert(userEntity);

        System.out.println(userEntity);

        System.out.println("result:" + result);

        return userEntity.getId();
    }
}

 

controller類

@RestController
@RequestMapping("/user")
public class UserController {

    @Autowired
    UserService userService;

    @PostMapping("/add")
    public String addUser(@RequestBody UserEntity userEntity){
        Long id = userService.insert(userEntity);
        return "新增成功,主鍵為:" + id;
    }
}

 

命令列輸出結果 

 

Postman測試結果

 

相關文章