PostgreSQL使用MyBatis,insert时返回主键
MyBatis中普通的insert语句是这样的:
<insert id="insert" parameterType="com.xxx.xxx.xxDo">
insert into "table_name" (key, value)
values (#{key,jdbcType=VARCHAR}, #{value,jdbcType=VARCHAR})
</insert>
此时Dao接口的public Integer insert(DatabaseObject do);返回的Integer是收到改动的行数,插入成功时返回1
主键默认是由数据库自己加入的,可以使用selectKey的子查询语句获得
但PostgreSQL为serial字段生成的sequence名字为: 表名_列名_seq,但是这个序列并不能单独访问
所以这个方法需要进行一些修改,这里还是使用最简便的方式:
给insert语句添加useGeneratedKeys="true" keyProperty="id"
<insert id="insert" parameterType="com.xxx.xxx.xxDo" useGeneratedKeys="true" keyProperty="id">
insert into "table_name" (key, value)
values (#{key,jdbcType=VARCHAR}, #{value,jdbcType=VARCHAR})
</insert>
useGeneratedKeys让MyBatis来分配主键id,keyProperty用于在主键名不是id时指定主键名
此时MyBatis会将分配的主键加入insert的传参do中,通过do自带的getId就可以返回主键了
在server层中使用
public Integer insert(DatabaseObject xxDo){
if(MyBatisDao.insert(xxDo) > 0){
return xxDo.getId();
}
else{
return 0;
}
}
PostgreSQL使用MyBatis,insert时返回主键的更多相关文章
- MyBatis返回主键,MyBatis Insert操作返回主键
MyBatis返回主键,MyBatis Insert操作返回主键 >>>>>>>>>>>>>>>>> ...
- MyBatis insert操作返回主键
在使用MyBatis做持久层时,insert语句默认是不返回记录的主键值,而是返回插入的记录条数: Dao.java @Override public int insert(T record) { f ...
- 160613、MyBatis insert操作返回主键
在使用MyBatis做持久层时,insert语句默认是不返回记录的主键值,而是返回插入的记录条数:如果业务层需要得到记录的主键时,可以通过配置的方式来完成这个功能,针对Sequence主键而言,在执行 ...
- mybatis insert后返回主键ID
需求: mybatis 在添加记录时需要获取到记录主键id id=0 无法获取主键id的值 在插入方法中添加如下属性和相应的值 <insert useGeneratedKeys="t ...
- (转)Mybatis insert后返回主键给实体对象(Mysql数据库)
<insert id="insert" parameterType="com.zqgame.game.website.models.Team"> & ...
- mybatis insert oracle 返回主键
mybtis返回oracle主键 只需要加一点代码(红色处的代码)就可以了 <!-- 添加记录到临时表 --> <insert id="insertPlaneStateme ...
- mybatis insert 如何返回主键
在使用ibatis插入数据进数据库的时候,会用到一些sequence的数据,有些情况下,在插入完成之后还需要将sequence的值返回,然后才能进行下一步的操作. 使用ibatis的sel ...
- mybatis添加记录时返回主键id
参考:mybatis添加记录时返回主键id 场景 有些时候我们在添加记录成功后希望能直接获取到该记录的主键id值,而不需要再执行一次查询操作.在使用mybatis作为ORM组件时,可以很方便地达到这个 ...
- Java MyBatis 插入数据库返回主键
最近在搞一个电商系统中由于业务需求,需要在插入一条产品信息后返回产品Id,刚开始遇到一些坑,这里做下笔记,以防今后忘记. 类似下面这段代码一样获取插入后的主键 User user = new User ...
随机推荐
- 【Linux 网络】网络测试命令 长期更新
一.网络测试命令 1.测试 网络连接 发送两包后停发 [oracle@hadoop ~]$ PING www.a.shifen.com (() bytes of data. bytes from tt ...
- 开源的 Restful Api 集成测试工具 Hitchhiker
Hitchhiker 是一款开源的 Restful Api 集成测试工具,你可以在轻松部署到本地,和你的team成员一起管理Api. 先上图看看: 简单介绍 背景是Team在开发一些Api,这些Api ...
- AngularJS 动画总结
对读过的几篇文章的总结,尽量保证逻辑性,不断补充.精简.更正. 后面会列出参考文章地址,方便以后取用.感谢各位作者以及翻译者. AngularJS 动画思考 一.如何使用 1)我们需要构建什么 2)如 ...
- jeecg 3.7.1 新版功能,集群定时任务动态发布模块 使用规则
jeecg 3.7.1 集群定时任务动态发布模块 使用规则 新版特性: 支持集群定时任务,支持分布式. 菜单路径: 系统监控-->定时任务 字段说明: 任务ID.任务说明:自定义即可 ...
- 如何使用 flannel host-gw backend?- 每天5分钟玩转 Docker 容器技术(62)
flannel 支持多种 backend,前面我们讨论的是 vxlan,host-gw 是 flannel 的另一个 backend,本节会将前面的 vxlan backend 切换成 host-gw ...
- 转每天一个linux命令(8):cp 命令
cp命令用来复制文件或者目录,是Linux系统中最常用的命令之一.一般情况下,shell会设置一个别名,在命令行下复制文件时,如果目标文件已经存在,就会询问是否覆盖,不管你是否使用-i参数.但是如果是 ...
- myeclipse eclipse创建maven web项目时 index.jsp报错
第一种办法 解决办法: ---------------------------------------------------------------------------------------- ...
- 几个常用EL表达式的用法
转载至 http://yqsshr.blog.51cto.com/469059/131824 1,用来获取表单数据 param 和 paramValues 1.jsp 的有如下表单 <for ...
- Spring Cloud在国内中小型公司能用起来吗?
今天吃完饭休息的时候瞎逛知乎,突然看到这个一个问题Spring Cloud在国内中小型公司能用起来吗?,吸引了我的注意.仔细的看了题主的问题,发现这是一个好问题,题主经过了一番思考,并且用图形全面的将 ...
- 结队编程-基于gui的四则运算生成器
成员:卢少锐 201421123027.刘存201421033023 coding.net地址 1.需求分析:除了实现四则运算的功能外,还添加了计时器功能和语言选择功能 2.程序设计:这次作业是基于上 ...