Mybatis插入数据返回自增主键

方法有很多,参考 mysql函数之六:mysql插入数据后返回自增ID的方法,last_insert_id(),selectkey

这里记录一下工作中自己用到的selectkey方法的详细过程。

pojo类:

 1 public class Client {
 2     /**
 3      * 客户id
 4      */
 5     @Id
 6     private Integer id;
 7 
 8     /**
 9      * 客户名称
10      */
11     private String name;
12 
13     //其他的一些域自己补充,对应get/set方法也要添加
14 
15     /**
16      * 获取客户id
17      *
18      * @return id - 客户id
19      */
20     public Integer getId() {
21         return id;
22     }
23 
24     /**
25      * 设置客户id
26      *
27      * @param id 客户id
28      */
29     public void setId(Integer id) {
30         this.id = id;
31     }
32 
33     /**
34      * 获取客户名称
35      *
36      * @return name - 客户名称
37      */
38     public String getName() {
39         return name;
40     }
41 
42     /**
43      * 设置客户名称
44      *
45      * @param name 客户名称
46      */
47     public void setName(String name) {
48         this.name = name;
49     }
50 }

xml映射文件:

keyProperty设置为pojo类的ID域, order为BEFORE则在insert方法之前调用,AFTER则在insert方法之后调用

  <insert id="insertSelective" parameterType="com.zhouyufan.client.pojo.Client">
        <selectKey keyProperty="id" order="AFTER" resultType="java.lang.Integer">
            select LAST_INSERT_ID()
        </selectKey>
        insert into client
        <trim prefix="(" suffix=")" suffixOverrides=",">
            <if test="name != null and name != ''">name,</if>
            <if test="test1 != null">test1,</if>
            <if test="test2 != null">test2,</if>
        </trim>
        <trim prefix="values (" suffix=")" suffixOverrides=",">
            <if test="name != null and name != ''">#{name,jdbcType=VARCHAR},</if>
            <if test="test1 != null">#{test1,jdbcType=TINYINT},</if>
            <if test="test2 != null">#{test2,jdbcType=TINYINT},</if>
        </trim>
    </insert>

在Java方法中调用:

1 // count仍然为insert操作返回的结果
2 int count = clientMapperCustom.insertSelective(client);
3 // 自增主键在client的id域里,通过client.getId();获取自增主键
4 int autoClientid = client.getId();

 

转载于:https://www.cnblogs.com/yfzhou/p/9663416.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值