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 系统状态分析
查看操作系统类型---返回结果Linux 适合与字符比较 cat /proc/sys/kernel/ostype cat /proc/version shell : www.jb51.net/arti ...
- 【Weblogic】linux下weblogic新建domain(入门教程)
找到weblogic下的/common/bin目录,/home/weblogic/Oracle/Middleware/wlserver_10.3/common/bin ./config.sh -mod ...
- 超简单CSS3水平动态进度条+小圆球+背景色渐变
实现的的效果图如下:效果是动态加载的 代码如下: <!DOCTYPE html> <html lang="en"> <head> <met ...
- 浏览器F12进行Web程序调试
转自http://www.cnblogs.com/yougewe/p/5152700.html 引语:如今的整个Web开发行业甚至说整个软件开发行业,已经相当成熟,基本上已经很少找不到没有前人做过的东 ...
- Java对象的创建
学了很久的java,是时候来一波深入思考了.比如:对象是如何在JVM中创建,并且被使用的.本文主要讲解下new对象的创建过程.要想更深入的了解建议去认认真真的看几遍<深入理解Java虚拟机> ...
- C#中MessageBox.Show()方法详解
1. // 摘要: // 显示具有指定文本的消息框. // // 参数: // text: // 要在消息框中显示的文本. // // 返回结果: // System.Windows.Forms.Di ...
- JavaScript 30 - 2 学习笔记
学习JavaScirpt30的笔记! 有意思! 2-------> CSS clock 效果是这样的.... 这是改良过后的 版本.... 话不多说,直接来看代码. 首先是html部分 &l ...
- adb 安装apk 报错:Failure [INSTALL_FAILED_CPU_ABI_INCOMPATIBLE]
这是因为系统里缺少了 Google Play 市场等各种谷歌服务应用,其实是因为版权问题,从 2.0 版本开始 Genymotion 提供的虚拟设备都已经移除了 Google Apps 以及 AR ...
- chrome开发工具指南(十二)
使用 Device Mode 模拟移动设备 使用 Chrome DevTools 的 Device Mode 打造移动设备优先的完全自适应式网站.了解如何使用 Device Mode 模拟多种设备及其 ...
- 为什么Java 两个Integer 中1000==1000为false而100==100为true?
详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt346 这是一个挺有意思的讨论话题. 如果你运行下面的代码 1 2 3 4 I ...