简单记录一下问题:

以前通过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 序列自增相关推荐

  1. myBatis 简单的增删改查

    myBatis 简单的增删改查 前面已经讲到用接口的方式编程.这种方式,要注意的一个地方就是.在User.xml 的配置文件中, mapper namespace="com.fjh.inte ...

  2. PostgreSQL SERIAL创建自增列

    PostgreSQL SERIAL创建自增列 本文我们介绍PostgreSQL SERIAL,并展示如何使用serial类型创建表自增列. PostgreSQL SERIAL伪类型 PostgreSQ ...

  3. Mybatis基础:增删改查、模糊查询、多条件查询

    Mybatis基础:增删改查.模糊查询.多条件查询http://www.bieryun.com/3132.html 1.新建测试数据库,根据实体类属性创建 2.实体类 [java] view plai ...

  4. SpringBoot + MyBatis + MySQL +IDEA2021 增删改查 2021-06-04

    SpringBoot + MyBatis + MySQL +IDEA2021 增删改查 1.环境介绍 Windows 10 JDK 1.8 MySQL 8 IDEA 2021.1.2 2.开始操作.新 ...

  5. mysql实现序列自增_MySQL实现序列自增

    #创建序列表 DROP TABLE IF EXISTS `sequence`; CREATE TABLE `sequence` ( `name` varchar(50) NOT NULL COMMEN ...

  6. python操作Oracle、PostgreSQL,MySql数据库增删改查

    python操作Oracle.PostgreSQL,MySql数据库增删改查,工作中可运行案例,直接上代码,供大家参考. # _*_ coding:UTF-8 _*_#import ServerCon ...

  7. mybatis教程--实现增删改查的入门教程

    1 开发环境 jdk1.7.0_72 eclipse:eclipse-3.7-indigo mysql:mysql5.1 1.1 创建数据库 先导入sql_table.sql,再导入sql_data. ...

  8. 【Mybatis 之应用篇】1_Mybatis简介、第一个Mybatis程序和增删改查在Mybatis中的使用方式

    文章目录 Mybatis 一.简介 1.持久化 2.持久层 3.为什么需要Mybatis? 二.第一个Mybatis程序 1.创建一个数据库 2.配置pom.xml文件 3.创建实体类 4.创建一个M ...

  9. oracle+创建序列自增,oracle序列详解和建立自增主键

    序列: 是oacle提供的用于产生一系列惟一数字的数据库对象.sql l 自动提供惟一的数值数据库 l 共享对象性能 l 主要用于提供主键值测试 l 将序列值装入内存能够提升访问效率spa 1.首先建 ...

最新文章

  1. 实现Unity编辑器模式下的旋转
  2. 【实验】如何实现远程同一网段互通?
  3. 深度学习资料汇总(满满的干货)
  4. html css3模拟心的跳动
  5. 匿名函数 lambda
  6. 计算机一级基础知识理论,计算机一级考试理论试题 第6部分 信息与计算机基础知识...
  7. php可变方法,php 函数使用可变数量的参数方法
  8. 查找窗口隐藏了怎么办_百度地图这些不为人知的隐藏功能
  9. Hortonworks的开源框架SHC的使用(一)
  10. docker入门小结
  11. 突破单IP频繁反爬虫限制的小技巧
  12. 创建facebook_我如何重新创建Facebook的微交互以进行功能发现
  13. Neural Factorization Machines(NFM)
  14. 计算机编程课程顺序_您可以在八月开始的500项免费在线编程和计算机科学课程
  15. 疫情可视化part3
  16. Mac下安装sqlmap
  17. 电脑防火墙未使用推荐的设置来保护计算机,防火墙无法使用推荐设置,
  18. Seurat | 强烈建议收藏的单细胞分析标准流程(基础质控与过滤)(一)
  19. unity塔防游戏,可以正常运行
  20. 几种求最小公倍数的方法

热门文章

  1. jsonObject.toBean
  2. 地图白化function
  3. fcpx视频剪辑软件中文版
  4. 微软2022校招福袋揭秘!
  5. 微软校招来喽 | 内推名额等待优秀的你
  6. Laya官方不会告诉你的坑(微信小游戏系列)
  7. 诺奖终属黑洞理论-IT与物理的相互成就
  8. 阿里云视频点播大招盘点
  9. 中国公民身份证编号规则
  10. 自媒体视频剪辑,怎样去掉视频中的字幕和水印