使用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操作加上兩個引數
-
useGeneratedKeys :確定使用自增主鍵
-
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測試結果