mybatis新增save结束后自动返回主键id详解
程序员文章站
2022-06-26 10:46:02
目录mybatis新增save结束后自动返回主键id1.使用场景2.原理在mybatis配置了mybatis或者mybatis-plus中save方法返回主键值1.mapper.xml中2.servi...
mybatis新增save结束后自动返回主键id
1.使用场景
save操作之前实体类中id为null,save之后自动返回带id的实体类
@override public chartpagepanel save(chartpagepanel entity) { userdetails user = securitycontextholder.getuserdetails(); entity.setcreateuser(user.getusername()); entity.setlastmodifyuser(user.getusername()); //entity中的id为null chartpagepanelmapper.save(entity); //经过save操作后自动返回带id的entity // savepanelmanage(entity); 其中的entity带有id savepanelmanage(entity); return entity; } @transactional public void savepanelmanage(chartpagepanel entity){ if(entity.getchartpagemanges()!=null && entity.getchartpagemanges().size()>0) { map<string, object> map = new hashmap<>(); for (int i = 0; i < entity.getchartpagemanges().size(); i++) { int manageid = entity.getchartpagemanges().get(i).getid(); map.put("manageid", manageid); map.put("panelid", entity.getid()); chartpagepanelmanagemapper.save(map); } } }
2.原理在mybatis配置了
usegeneratedkeys=“true” keyproperty=“id”
<insert id="save" parametertype="com.centrin.generator.entity.chartpagepanel" usegeneratedkeys="true" keyproperty="id"> insert into chart_page_panel ( `parent_id`, `position`, `name`, `create_time`, `create_user`, `last_modify_time`, `last_modify_user` ) values ( #{parentid}, #{position}, #{name}, now(), #{createuser}, now(), #{lastmodifyuser} ) </insert>
mybatis或者mybatis-plus中save方法返回主键值
1.mapper.xml中
方式:
usegeneratedkeys=“true” keyproperty=“id” keycolumn=“id”
解释:
在xml中定义usegeneratedkeys为true,返回主键id的值,keycolumn和keyproperty分别代表数据库记录主键字段和java对象成员属性名
<insert id="savebill" parametertype="com.jd.fp.mrp.domain.model.biz.adjustbillinfo" usegeneratedkeys="true" keyproperty="id" keycolumn="id"> insert into adjust_bill_info(external_bill_id, warehouse_code, warehouse_name) values(#{externalbillid}, #{warehousecode}, #{warehousename}); </insert>
2.service或者dao中
注意:通过该种方式得到的结果是受影响的行数!!!!!
如果要获取主键id值,需要从传入的对象中获取!!!!!
long id = atranscationmapper.savebill(adjustbillinfo); system.out.println("===========保存受影响的行数:"+id+" 保存的id值为:"+adjustbillinfo.getid());
输出结果展示:
===========保存受影响的行数:1 保存的id值为:191
mybatis-plus的insert后,返回主键id,直接通过传入的对象获取id即可!
bizapplicationformmapper.insert(form);
system.out.println("=============="+form.getid());
以上为个人经验,希望能给大家一个参考,也希望大家多多支持。