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

參考連接:

相關文章
相關標籤/搜索