mybatis map方式inset返回主键

来源:互联网 发布:js设置cookie作用域 编辑:程序博客网 时间:2024/05/17 21:44

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.csdn.net/liuxiao723846/article/details/44085703