在部分数据库主键自动生成策略中,一些业务逻辑需要返回新增的数据标识,重查不现实,在insert的时候能够直接返回最好。MyBatis支持此种操作,只需要添加两个参数即可。
-
XML形式
<insert id="insert" parameterType="com.test.entity.User" keyProperty="id" useGeneratedKeys="true"> insert into user **** </insert>
-
注解形式
@Insert("insert into user ****") @Options(useGeneratedKeys = true, keyProperty = "id") int insert(User user);
上述两种写法中
keyProperty
对应实体类自动生成的字段名。 -
使用:
@Override public void insert(User user) { Integer change = userMapper.insert(user); log.info("change值为:[{}]", change); log.info("新增用户标识为:[{}]", user.getId()); }
接口返回值为数据库受影响行数,
user.getId()
才是新增的数据在数据库中对应的标识。
个人建议:在实际开发中,除了无关紧要的数据,绝大部分数据标识应该是UUID或者SnowFlake算法算出来的,Integer自增主键安全性太低。