Mybatis向mysql数据库中插入一表属性返回主键

1.insert元素 属性详解 

parameterType ,入参的全限定类名或类型别名
keyColumn ,设置数据表自动生成的主键名。对特定数据库(如PostgreSQL),若自动生成的主键不是第一个字段则必须设置
keyProperty ,默认值unset,用于设置getGeneratedKeys方法或selectKey子元素返回值将赋值到领域模型的哪个属性中
useGeneratedKeys ,取值范围true|false(默认值),设置是否使用JDBC的getGenereatedKeys方法获取主键并赋值到keyProperty设 置的领域模型属性中。MySQL和SQLServer执行auto-generated key field,因此当数据库设置好自增长主键后,可通过JDBC的getGeneratedKeys方法获取。但像Oralce等不支持auto-generated key field的数据库就不能用这种方法获取主键了
statementType ,取值范围STATEMENT,PREPARED(默认值),CALLABLE
flushCache ,取值范围true(默认值)|false,设置执行该操作后是否会清空二级缓存和本地缓存
timeout ,默认为unset(依赖jdbc驱动器的设置),设置执行该操作的最大时限,超时将抛异常
databaseId ,取值范围oracle|mysql等,表示数据库厂家,元素内部可通过`<if test="_databaseId = 'oracle'">`来为特定数据库指定不同的sql语句 。

2.xxxMap.xml语法。

<insert id="add" parameterType="EStudent" useGeneratedKeys="true" keyProperty="id"> 
 insert into TStudent(name, age) values(#{name}, #{age})
</insert>

useGeneratedKeys 开启主键返回功能,keyProperty 接收主键的值。

3.注意:

这种方法对mysql有效,对其他数据库无效。

实例:

package alian.domain;

import org.springframework.stereotype.Component;

import java.util.Date;
public class Homework {
    private Integer id;

    private Integer classId;

    private Date stime;

    private Date etime;

    private Integer type;

    private String filename;

    private Integer state;

    private String text;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public Integer getClassId() {
        return classId;
    }

    public void setClassId(Integer classId) {
        this.classId = classId;
    }

    public Date getStime() {
        return stime;
    }

    public void setStime(Date stime) {
        this.stime = stime;
    }

    public Date getEtime() {
        return etime;
    }

    public void setEtime(Date etime) {
        this.etime = etime;
    }

    public Integer getType() {
        return type;
    }

    public void setType(Integer type) {
        this.type = type;
    }

    public String getFilename() {
        return filename;
    }

    public void setFilename(String filename) {
        this.filename = filename == null ? null : filename.trim();
    }

    public Integer getState() {
        return state;
    }

    public void setState(Integer state) {
        this.state = state;
    }

    public String getText() {
        return text;
    }

    public void setText(String text) {
        this.text = text == null ? null : text.trim();
    }

    @Override
    public String toString() {
        return "Homework{" +
                "id=" + id +
                ", classId=" + classId +
                ", stime=" + stime +
                ", etime=" + etime +
                ", type=" + type +
                ", filename='" + filename + '\'' +
                ", state=" + state +
                ", text='" + text + '\'' +
                '}';
    }
}

 HomeworkMapper.xml

<insert id="insertHomework_returnKey" useGeneratedKeys="true" keyProperty="id"     parameterType="alian.domain.Homework" >
        insert into homework ( id,class_id, stime,
      etime, type, filename,
      state, text)
      values (#{id,jdbcType=INTEGER},#{classId,jdbcType=INTEGER},                                #{stime,jdbcType=TIMESTAMP},
       #{etime,jdbcType=TIMESTAMP}, #{type,jdbcType=INTEGER}, #{filename,jdbcType=VARCHAR},
      #{state,jdbcType=INTEGER}, #{text,jdbcType=LONGVARCHAR})
 </insert>

controller

 @RequestMapping("/test")
        public Object test()
        {
                Homework homework=new Homework();
                int id=homeworkMapper.insertHomework_returnKey(homework);
                System.out.println(homework.getId());
                System.out.println(id);
                return homework.getId();
        }
 

注意:Homework homework的id属性用于接收数据库中传递出来的主键,而不是插入的返回值(只为受影响的行数)。homework.getId()为主键。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值