问题:
在做关联表插入操作时,需要根据主表的 主键id作详情表的属性值,最笨的方法就是,先插入主表,然后通过查询返回刚刚插入的 主键id,容易出现问题。
解决办法:
在mybatis的配置文件中,用keyProperty和useGeneratedKeys属性。useGeneratedKeys 参数只针对 insert 语句生效,默认为 false。当设置为 true 时,表示如果插入的表以自增列为主键,则允许 JDBC 支持自动生成主键,并可将自动生成的主键返回。
具体用法:
<insert id="insertRoom" useGeneratedKeys="true" keyProperty="roomId">
ps:下图中的这种获取方式,得到的数据并不是返回的该条数据的id,这个数据只代表成功执行了1条数据
实际上,返回值的id是被set进传入的Room对象里了,所以需要从room.getId()就可以得到