关于mybatis的 insert into select 命令未结束问题

关于mybatis的 insert into select 命令未结束问题,最后以为是sql写错了,但是,在plsql执行又没问题。最后还是解决问题,

是设置问题。

### Cause: java.sql.SQLSyntaxErrorException: ORA-00933: SQL 命令未正确结束

原先的配置:

  <insert id="addHistoryByPostBatchno" parameterType="paramMap" >

修改了以后,加了

 useGeneratedKeys="false"
<insert id="addHistoryByPostBatchno" parameterType="paramMap" useGeneratedKeys="false" >
 	 Insert into
	  Tb_Dispatch_Mail_History
	  (
		  mail_no, rec_name, rec_address, rec_telephone,
		  customer_no, post_opter, mail_content_name, mail_weight,
		  actual_postage, delivery_area, post_time, post_condition,
	      post_status, post_batchNo, customer_id
	   )
	  select
		   mail_no, rec_name, rec_address, rec_telephone,
		   customer_no, post_opter, mail_content_name, mail_weight,
		   actual_postage, delivery_area, post_time, post_condition,
		   post_status, post_batchNo, customer_id
	  from Tb_Dispatch_Mail_Post tp
  	<where>
  	 	  tp.post_batchno=#{paramMap.postBatchno}
  	</where>
  </insert>
  

问题顺利解决,不在报错。如果你也遇到同样问题,请留言一起探讨,我也只是解决了问题而已。如果看到这里你解决了问题,麻烦点赞吧!

官网的解释是

允许 JDBC 支持自动生成主键,需要驱动兼容。如果设置为 true 则这个设置强制使用自动生成主键,尽管一些驱动不能兼容但仍可正常工作(比如 Derby)。

时间: 2025-01-22 19:07:27

关于mybatis的 insert into select 命令未结束问题的相关文章

解决Oracle+Mybatis批量插入报错:SQL 命令未正确结束

Mybatis批量插入需要foreach元素.foreach元素有以下主要属性: (1)item:集合中每一个元素进行迭代时的别名. (2)index:指定一个名字,用于表示在迭代过程中,每次迭代到的位置. (3)collection:根据传入的参数值确定. (4)open:表示该语句以什么开始. (5)separator:表示在每次进行迭代之间以什么符号作为分隔 符. (6)close:表示以什么结束. 首先,错误的xml配置文件如下: <insert id="save" da

Hive insert into directory 命令输出的文件没有列分隔符分析和解决

参考资料:http://stackoverflow.com/questions/16459790/hive-insert-overwrite-directory-command-output-is-not-separated-by-a-delimiter 问题描述: Hive insert into directory 命令输出的文件没有指定列分隔符,输出结果就像变成了一个字符串. 通过CREATE EXTERNAL TABLE 和load 方式,尝试了多种分隔符都不能正确的区分,所有的字段内容

Mybatis Generator insert useGeneratedKeys keyProperty

Mybatis自动生成代码,需要用到mybatis Generator,详见http://mybatis.github.io/generator/configreference/generatedKey.html insert语句如果要返回自动生成的key值,一般会在insert里加入useGeneratedKeys属性,例如 <insert id="insert" parameterType="cn.ac.iscas.pebble.ufe.bean.Subtask&q

MyBatis :Insert (返回主键、批量插入)

一.前言    数据库操作怎能少了INSERT操作呢?下面记录MyBatis关于INSERT操作的笔记,以便日后查阅. 二.insert元素 属性详解   其属性如下: parameterType ,入参的全限定类名或类型别名 keyColumn ,设置数据表自动生成的主键名.对特定数据库(如PostgreSQL),若自动生成的主键不是第一个字段则必须设置 keyProperty ,默认值unset,用于设置getGeneratedKeys方法或selectKey子元素返回值将赋值到领域模型的哪

Mybatis 在 insert 之后想获取自增的主键 id,但是总是返回1

记录一次傻逼的问题, 自己把自己蠢哭:Mybatis 在 insert 之后想获取自增的主键 id,但是总是返回1 错误说明: 返回的1是影响的行数,并不是自增的主键id: 想要获取自增主键id,需要通过xx.getId()方法获取,因为在mybatis中指定自增主键id封装到了对象的属性中,所以我们需要在对象中来获取 代码示例如下: <insert id="add" useGeneratedKeys="true" keyColumn="id&quo

mybatis+mysql insert添加数据后返回数据主键id

1.根据useGeneratedKeys获取返回值,部分数据库不支持 修改mybatis xml <insert id="insertUser" useGeneratedKeys="true" keyProperty="id" parameterType="com.entity.user"> insert into test (name) values (#{name}) </insert> useGe

【ORACLE】 两个order by的SQL使用 UNION 或者 UNION ALL 报错 ORA-00933:sql命令未正确结束

在oracle sql中,要求order by是select语句的最后一个语句,而且一个select语句中只允许出现一个order by语句,而且order by必须位于整个select语句的最后. union操作实际上做了两部分动作:结果集合并 + 排序, union all只进行结果集简单合并,不做排序,效率比union高 . 例子: 表一:table1  查询语句 : select  * from table1 t1  order by t1. c1  ;         表二:table

oracle 两个sql带有order by的使用union/union all的时候报错 &#39;ORA-00933:sql命令未正确结束&#39; 处理办法

错误语句:select id,name from s1 order by stime union all select id,name from s2 order by stime 报错原因:oracle 搜索到order by后认为整个select语句就该结束了但是后面还有union all所以数据库无法解析,导致报错 处理办法:with a1 as (select id,name from s1 order by stime) , a2 as (select id,name from s2

Mybatis批量Insert及水平分表

首先是Mybatis批量insert 说一下核心部分,整个工程参考我的github,运行的main方法在org/xiongmaotailang/mybatis/batchinsert/DbUtil.java中,涉及到的脚本是sql.txt 需要的数据表示例,包括4个字段. CREATE TABLE `newspvuv` (   `id` int(10) unsigned NOT NULL AUTO_INCREMENT,   `pv` bigint(11) DEFAULT NULL,   `uv`