今天做ssm项目的时候有一个这样的需求——我借阅一本书然后生成一条借阅记录(借阅记录的主键是递增的“borrowNum”),然后将这条记录的主键返回,在往上查阅资料后知道,只要在对应的xml文件对应的那个方法加上两个属性就行了,代码如下:
<insert id="insert" parameterType="com.bsm.model.Borrow" useGeneratedKeys="true" keyProperty="borrownum" keyColumn="borrowNum" >
insert into t_borrow (userAccount, bookInfoNum,borrowTime, giveBackTime)
values (#{useraccount,jdbcType=VARCHAR},#{bookinfonum,jdbcType=INTEGER},
#{borrowtime,jdbcType=DATE}, #{givebacktime,jdbcType=DATE})
</insert>
就是加入的这三个属性:
useGeneratedKeys="true" keyProperty="borrownum" keyColumn="borrowNum"
Mybatis 配置文件 useGeneratedKeys 参数只针对 insert 语句生效,默认为 false。当设置为 true 时,表示如果插入的表以自增列为主键,则允许 JDBC 支持自动生成主键,并可将自动生成的主键返回。“keyProperty”的值对应入参的字段名,“keyColumn”的值对应数据库表中的列名。
入参字段:
但是我们想接收这个返回的id的时候却不是我们想要的
int i=borrowMapper.insert(borrow);
我们得到的还是受影响的条数而不是返回的borrownum的值,那我们返回的borrownum去哪里了呢?在这里:我们的入参是不是一个borrow?
int mun=borrow.getBorrownum();
这个返回的mun就是我们要的borrownum了,原来这个返回的值放进了入参的那个对象中。
数据库字段:
参照大佬博文解决的疑惑: 大佬博文网址