mybatis map方式inset返回主键

本文介绍了一种使用MyBatis插入数据后返回主键的方法,通过使用Map而非实体类来简化操作流程。

mybatis插入数据返回主键一般都是利用实体类,插入之后mybatis会自动将主键赋值给实体类的id。

可是只为了一个id重新写一个实体类太麻烦了。所以写这篇利用map方式插入返回主键 防止自己忘记。
插入方式跟插入实体类一样

运行环境:spring springmvc mybatis

首先利用map插入时,map里要有你的主键字段。
这里我的主键id是xtxxbm

controller控制器:

Map<String,Object> map=new HashMap<String,Object>();
        map.put("xtxxbm",123);
        map.put("xxbt", getParam(req, "xxbt"));
        map.put("xxnr", getParam(req, "xxnr"));
        map.put("jsbm_jsr", getParam(req, "jsbm_jsr"));
        map.put("rybm_fsr", "123");
        map.put("ryxm_fsr", "123456");
        map.put("fssj", "123456");
        ly0701Service.insertxtxx(map);
        System.out.println( "i "+i+
        "  --"+map.get("xtxxbms").toString());

xml:

<insert id="insertxtxx" parameterType="java.util.Map" useGeneratedKeys="true" keyColumn="xtxxbm" keyProperty="xtxxbm">
        insert into
        lyl_xtxx(xxbt,xxnr,rybm_fsr,ryxm_fsr,jsbm_jsr,fssj)
        values(
        #{xxbt},
        #{xxnr},
        #{rybm_fsr},
        #{ryxm_fsr},
        #{jsbm_jsr},
        #{fssj}
        )
    <selectKey resultType="int" order="AFTER" keyProperty="xtxxbm">   
            SELECT LAST_INSERT_ID()   
        </selectKey> 
    </insert>

serviceImp:

@Override
    public int insertxtxx(Map map) {
        // TODO Auto-generated method stub


        return ly0701Dao.insertxtxx(map);       

    }

运行结果:
这里写图片描述
可以看出 最后返回的主键是放在map里的 而i只是代表插入是否成功

注意:map里的字段必须和主键字段相同。即使你用别名也不行。
我测试了一下:
xtxxbms不是主键字段,比主键字段多了一个s,虽然xml 写了as xtxxbms.但是map里的xtxxbms仍然是123.不是主键值。(SELECT LAST_INSERT_ID() as xtxxbms 这个会执行出来。但是xtxxbms无法通过map获取到真正的主键值)
map.put(“xtxxbms”,123);


SELECT LAST_INSERT_ID() as xtxxbms

这里写图片描述

所以即使你用别名 也必须是主键字段xtxxbm

参考网址:http://blog.youkuaiyun.com/liuxiao723846/article/details/44085703

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值