Loading... 使用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; } } ``` 最后修改:2021 年 11 月 09 日 © 允许规范转载 打赏 赞赏作者 微信 赞 0 如果觉得我的文章对你有用,请随意赞赏