mybatis配置获取自增主键
01 使用场景
- 当需要刚刚插入数据库的数据对应的新增主键时,通过配置xml文件,使数据库返回新增主键id,并把主键id与类参数对应
02 涉及配置
- 注解@TableId(type = IdType.AUTO):在类主键id通过配置实现插入数据库时主键自增
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插入数据对应的返回值
<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对应的是数据库中的字段