postgresql Mybatis 序列自增
简单记录一下问题:
以前通过Oracle+Mybatis做新增功能时主键都是通过sequence自增的,了解到postgresql也有序列,遂尝试结合Mybatis做一个简单的insert功能,结果报错:
org.springframework.jdbc.BadSqlGrammarException: CrudMapper.saveGoods (batch index #1) failed. Cause: java.sql.BatchUpdateException: 批次处理 0 insert into t_crud values (seq_crud.nextval,'牧马人鼠标','鼠标',168.0) 被中止,呼叫 getNextException 以取得原因。
; bad SQL grammar []; nested exception is org.postgresql.util.PSQLException: 错误: 对于表"seq_crud",丢失FROM子句项位置:32at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:231)at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:73)at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:74)at org.mybatis.spring.SqlSessionUtils$SqlSessionSynchronization.beforeCommit(SqlSessionUtils.java:291)at org.springframework.transaction.support.TransactionSynchronizationUtils.triggerBeforeCommit(TransactionSynchronizationUtils.java:95)at org.springframework.transaction.support.AbstractPlatformTransactionManager.triggerBeforeCommit(AbstractPlatformTransactionManager.java:928)at org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTrans
错误很明显,BadSqlGrammarException,即SQL语法错误,oracle中的序列使用方法和pg的明显是不一样的,我们在oracle中可以通过序列的隐式对象nextval来获取序列的下一个值,而在postgresql中nextval是作为一个函数来使用,也就是说:
Oracle中的 seq_xxx(序列名).nextval等同于
Postgresql中的 nextval('序列名')
问题成功解决,下面贴出mapper和测试方法:
<insert id="saveGoods" parameterType="cn.zhsz.model.admin.Goods">insert into t_crud values (nextval('seq_crud'),#{name},#{type},#{price})</insert>
关于postgresql的序列基本和oracle的序列没有区别,可以在pgAdmin中通过可视化工具方便的进行创建:
postgresql Mybatis 序列自增相关推荐
- myBatis 简单的增删改查
myBatis 简单的增删改查 前面已经讲到用接口的方式编程.这种方式,要注意的一个地方就是.在User.xml 的配置文件中, mapper namespace="com.fjh.inte ...
- PostgreSQL SERIAL创建自增列
PostgreSQL SERIAL创建自增列 本文我们介绍PostgreSQL SERIAL,并展示如何使用serial类型创建表自增列. PostgreSQL SERIAL伪类型 PostgreSQ ...
- Mybatis基础:增删改查、模糊查询、多条件查询
Mybatis基础:增删改查.模糊查询.多条件查询http://www.bieryun.com/3132.html 1.新建测试数据库,根据实体类属性创建 2.实体类 [java] view plai ...
- SpringBoot + MyBatis + MySQL +IDEA2021 增删改查 2021-06-04
SpringBoot + MyBatis + MySQL +IDEA2021 增删改查 1.环境介绍 Windows 10 JDK 1.8 MySQL 8 IDEA 2021.1.2 2.开始操作.新 ...
- mysql实现序列自增_MySQL实现序列自增
#创建序列表 DROP TABLE IF EXISTS `sequence`; CREATE TABLE `sequence` ( `name` varchar(50) NOT NULL COMMEN ...
- python操作Oracle、PostgreSQL,MySql数据库增删改查
python操作Oracle.PostgreSQL,MySql数据库增删改查,工作中可运行案例,直接上代码,供大家参考. # _*_ coding:UTF-8 _*_#import ServerCon ...
- mybatis教程--实现增删改查的入门教程
1 开发环境 jdk1.7.0_72 eclipse:eclipse-3.7-indigo mysql:mysql5.1 1.1 创建数据库 先导入sql_table.sql,再导入sql_data. ...
- 【Mybatis 之应用篇】1_Mybatis简介、第一个Mybatis程序和增删改查在Mybatis中的使用方式
文章目录 Mybatis 一.简介 1.持久化 2.持久层 3.为什么需要Mybatis? 二.第一个Mybatis程序 1.创建一个数据库 2.配置pom.xml文件 3.创建实体类 4.创建一个M ...
- oracle+创建序列自增,oracle序列详解和建立自增主键
序列: 是oacle提供的用于产生一系列惟一数字的数据库对象.sql l 自动提供惟一的数值数据库 l 共享对象性能 l 主要用于提供主键值测试 l 将序列值装入内存能够提升访问效率spa 1.首先建 ...
最新文章
- 实现Unity编辑器模式下的旋转
- 【实验】如何实现远程同一网段互通?
- 深度学习资料汇总(满满的干货)
- html css3模拟心的跳动
- 匿名函数 lambda
- 计算机一级基础知识理论,计算机一级考试理论试题 第6部分 信息与计算机基础知识...
- php可变方法,php 函数使用可变数量的参数方法
- 查找窗口隐藏了怎么办_百度地图这些不为人知的隐藏功能
- Hortonworks的开源框架SHC的使用(一)
- docker入门小结
- 突破单IP频繁反爬虫限制的小技巧
- 创建facebook_我如何重新创建Facebook的微交互以进行功能发现
- Neural Factorization Machines(NFM)
- 计算机编程课程顺序_您可以在八月开始的500项免费在线编程和计算机科学课程
- 疫情可视化part3
- Mac下安装sqlmap
- 电脑防火墙未使用推荐的设置来保护计算机,防火墙无法使用推荐设置,
- Seurat | 强烈建议收藏的单细胞分析标准流程(基础质控与过滤)(一)
- unity塔防游戏,可以正常运行
- 几种求最小公倍数的方法