博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Mybatis返回插入的主键
阅读量:6644 次
发布时间:2019-06-25

本文共 1205 字,大约阅读时间需要 4 分钟。

在使用MyBatis做持久层时,insert语句默认是不返回记录的主键值,而是返回插入的记录条数;如果业务层需要得到记录的主键时,可以通过配置的方式来完成这个功能

情景一:针对自增主键的表,在插入时不需要主键,而是在插入过程自动获取一个自增的主键,比如MySQL,可以采用如下两种配置方式

insert into log_table (code, name) values (#{code,jdbcType=VARCHAR}, #{name,jdbcType=INTEGER})

SELECT LAST_INSERT_ID() AS id
insert into demo_table (code, name) values (#{code,jdbcType=VARCHAR}, #{name,jdbcType=VARCHAR})

在插入操作完成之后,参数demoTable的id属性就已经被赋值了

测试的示例

@RequestMapping(value = "/addDemo")    @ResponseBody    public String addDemo(DemoTable demoTable) {        demoTable = new DemoTable();        demoTable.setCode("10002");        demoTable.setName("测试示例");        log.info("Before:" + demoTable.getId());        int i = demoService.addDemo(demoTable);        log.info("After:" + demoTable.getId());        return i ;    }

情景二:如果数据库表的主键不是自增的类型,那么就需要应用层生成主键的方式,这种情况下主键在插入时已经知道

情景三:针对Sequence主键而言,在执行insert sql前必须指定一个主键值给要插入的记录,如Oracle、DB2,可以采用如下配置方式

SELECT SEQ_TEST.NEXTVAL FROM DUAL
insert into category (code, name) values (#{code,jdbcType=VARCHAR},#{name,jdbcType=VARCHAR})

 

转载地址:http://nirvo.baihongyu.com/

你可能感兴趣的文章
Teledyne DALSA推出面向工业视觉应用的红外相机系列
查看>>
车联网市场现状及未来趋势解析
查看>>
不把网民权益当回事 网络安全早晚出大事
查看>>
解锁时弹出LiveChat在线聊天的恶意勒索软件PadCrypt出现
查看>>
AliSQL 5.6.32 vs MySQL 5.7.15抢鲜测试
查看>>
快速增长的网络犯罪将成为数据中心业务中断主因
查看>>
Infocomm前瞻:迪威视讯重推120吋激光触控屏
查看>>
摩洛哥建新型光伏电站 太阳能转换率达30%
查看>>
云存储行业呈现新特征,将成公有云发展核心动力
查看>>
宁津县大数据中心建成 属“智慧宁津”子项目
查看>>
Python实战案例分享:爬取当当网商品数据
查看>>
路透社:美国金融公司因使用云服务省了数十亿美元
查看>>
瑞士UMB公司为两家新客户提供数据中心服务
查看>>
移动CRM正快读应用于企业内部
查看>>
独立显卡市场分析:AMD东山再
查看>>
Verizon欲收购Vessel 这会让它在视频行业开始转运吗?
查看>>
Windows时间服务出现故障 向用户发送错误的时间
查看>>
斯诺登:我不信任微软 无法确认是否内建后门
查看>>
福州自贸片区招揽物联网应用型人才 500多个岗位虚位以待
查看>>
Coder生涯,又是一个轮回,2年回忆录[超简版]
查看>>