mybatis配置获取自增主键
【/n】
01 使用场景
- 当需要刚刚插入数据库的数据对应的新增主键时,通过配置xml文件,使数据库返回新增主键id,并把主键id与类参数对应
02 涉及配置
- 注解@TableId(type = IdType.AUTO):在类主键id通过配置实现插入数据库时主键自增
java
public class XzsQuestionsAnswerCreate {
@ApiModelProperty(value = "选项内容",required = true)
@NotBlank(message = "选项内容不能为空")
private String xzsOptionText;
@ApiModelProperty(value ="选项标题",required = true)
@NotBlank(message = "选项标题不能为空")
private String xzsOptionTitle;
@TableId(type = IdType.AUTO)
@ApiModelProperty("标准答案id")
private Long answerId;
}
- mapper(数据操作层):正常插入接口
int saveQuestionAnswer(@Param("questionId")Long questionId, @Param("list")List<XzsQuestionsAnswerCreate> XzsQuestionsAnswerCreate);
- 关键部分:配置MySQL插入数据对应的返回值
xml
<insert id="saveQuestionAnswer" useGeneratedKeys="true" keyProperty="list.answerId" keyColumn="xzs_question_options_id">
INSERT INTO xzs_question_options (
xzs_question_id,
xzs_option_text,
xzs_option_title
)
VALUES
<foreach collection="list" item="option" open="(" separator="), (" close=")">
#{questionId},#{option.xzsOptionText}, #{option.xzsOptionTitle}
</foreach>
</insert>
03 关键部分使用
字段 | 作用 |
---|---|
useGeneratedKeyss="true" | 开启主键自增返回设置 |
keyProperty | 类属性 |
keyColumn | 数据库字段 |
- keyProperty对应的是返回的自增主键对应的属性,list中answerId属性会在插入语句后被赋值
- mapper层函数中的返回值int,依旧是插入改变了多少行语句,不是自增主键
int saveQuestionAnswer(@Param("questionId")Long questionId, @Param("list")List<XzsQuestionsAnswerCreate> XzsQuestionsAnswerCreate);
- keyColumn对应的是数据库中的字段