mybatis 插入数据至mysql并返回主键

功能说明:mysql 主键id自增,并在返回对象中插入对应字段值html


表设计以下:

DROP TABLE IF EXISTS `api_quartz`;
CREATE TABLE `api_quartz` (
  `id` int(10) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `job_class_name` varchar(100) DEFAULT NULL COMMENT '须要执行定时任务的类的全路径(包名和类名)',
  `job_group_name` varchar(40) DEFAULT NULL COMMENT 'job的分组名',
  `job_cron` varchar(40) DEFAULT NULL COMMENT '定时任务的时间间隔,可参考http://cron.qqe2.com/',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8;

mybatis的xml以下:

<insert id="insertAndGetId" parameterType="ApiQuartz" useGeneratedKeys="true" keyProperty="id" keyColumn="id">
    insert into api_quartz (job_class_name, job_group_name,
      job_name,job_cron)
    values (#{jobClassName,jdbcType=VARCHAR}, #{jobGroupName,jdbcType=VARCHAR},
      #{jobName,jdbcType=VARCHAR},#{jobCron,jdbcType=VARCHAR})
  </insert>

对应接口以下:

/**
 * 返回插入数据的主键id值
 * @param apiQuartz
 * @return
 */
int insertAndGetId(ApiQuartz apiQuartz);

该接口的返回值为1或0,分别表明插入成功或失败(注意:不表明返回的主键id值)。这样 apiQuartz 对象中,原先apiQuartz.getIdnull , 如今,将插入数据库的主键id值赋给它,eg:apiQuartz.getId7java

实体类以下:

import lombok.Data;
import java.io.Serializable;

/**
 * 实体类 对应 api_quartz 表,定时任务配置
 */
@Data
public class ApiQuartz implements Serializable {

    private static final long serialVersionUID = 7485426523275431367L;

    /**
     * 主键
     */
    private Long id;

    /**
     * 须要执行定时任务的类的全路径(包名和类名)
     */
    private String jobClassName;

    /**
     * 'job的分组名'
     */
    private String jobGroupName;

    /**
     * '定时任务的时间间隔,可参考http://blog.csdn.net/yansong_8686/article/details/46991189'
     */
    private String jobCron;
}

解释:

  • useGeneratedKeys="true" 表示给主键设置自增加mysql

  • keyProperty="userId" 表示将自增加后的Id赋值给实体类中的userId字段。sql

  • parameterType="com.chenzhou.mybatis.User" 这个属性指向传递的参数实体类数据库

  • 这里提醒下,<insert></insert> 中没有resultType属性,不要乱加。api

  • 实体类中uerId 要有getter() and setter(); 方法 (也能够采用lombok插件完成)mybatis

参考连接:

相关文章
相关标签/搜索