问题描述:
插入一条数据,根据返回的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
网友评论