ibatis psql/mysql 主键 自增 以及ibatis代码分析

问题(ibatis代码分析请看最后两行):

 

ibatis完成插入数据后获取插入数据的id,ibatis是通过“selectKey”完成id的获取。

 

而对于插入的id分两种:

 

1.预先生成(pre-generate)主键的,如Oracle和PostgreSQL;

2.有些是事后生成(post-generate)主键的,如MySQL和SQL Server

 

参考自:http://www.iteye.com/post/429901

 

下面现给出mysql的例子:

 

<insert id="InsertOrganization" parameterClass="Organization" resultClass="int">
	<selectKey property="Id" type="post" resultClass="int">
		SELECT LAST_INSERT_ID() AS value
	</selectKey>			
	INSERT INTO Organizations
		(Org_Code, Org_Name) 
	VALUES 
		(#Code#, #Name#)
</insert>

 

这里需要注意type="post"定义了selectKey语句在insert语句之后执行type="pre"则是在前面执行,也有人说这里可以不加这个type属性,而直接将selectKey标签放到insert的后面即:

 

<insert id="InsertOrganization" parameterClass="Organization" resultClass="int">			
	INSERT INTO Organizations
		(Org_Code, Org_Name) 
	VALUES 
		(#Code#, #Name#)
	<selectKey property="Id" resultClass="int">
		SELECT LAST_INSERT_ID() AS value
	</selectKey>
</insert> 

 

这个未亲自测试...

 

而对于psql则应该通过下面方式实现:

 

一下例子参考自:http://opensource.atlassian.com/confluence/oss/pages/viewpage.action?pageId=407

里面包含了很多数据库的自增的实现方式。这里没有介绍的,可以进去参考。

 

<insert id="InsertOrganization" parameterClass="Organization" resultClass="int">
	<selectKey property="Id" type="post" resultClass="int">
		SELECT cast(last_value as int) AS value
		FROM TableName_Colom_seq
	</selectKey>
	INSERT INTO Organizations
		(Org_Code, Org_Name) 
	VALUES 
		(#Code#, #Name#)
</insert>

 

这里的TableName_Colom_seq其实是就是:数据表名_字段名_seq,而我这边简化成了:

SELECT last_value FROM member_id_seq,

这里需要解释的是:虽然psql是预先生成(pre-generate)主键,但这里的type="post"却是post后执行而不是pre先执行。大家可以在pgadmin里面执行一下上面的sql语句,对比一下,其实获取到的数值是最后一条记录的id值。

 

而psql的NEXTVAL(“member_id_seq“)获取到的是预先生成的编号。这里至于他是不是预先生成还是获取到最后一条记录,我就没那个功力去研究了。但是如果先执行:

SELECT NEXTVAL(“member_id_seq“)

再执行insert语句,你会发现:nexxtval获取到了1则insert的时候id为2

如果反过来则insert为1,nexxtval为2,

我在pgadmin里面测试过。如果连续执行:SELECT NEXTVAL(“member_id_seq“)

会发现获取到的数值是连续增加的,而不是一样的。

所以说NEXTVAL函数会增加一条记录编号,而insert又会增加一条。

因此两个无法配置使用获取到刚刚插入的数据的id,那么nextVal是作什么用的呢?文档是明明是这样写的?

http://man.chinaunix.net/database/postgresql_8.0_CN/sql-createsequence.html

http://man.chinaunix.net/database/postgresql_8.0_CN/functions-sequence.html

 

这个地址提到ibatis这种用法的性能问题:http://duooluu.iteye.com/blog/397763

 

最后有个文章提一下,说的是ibatis的主要流程,核心类,说的比较风趣,即便不学习ibatis也当看一乐子。

http://eils2000.iteye.com/blog/348722

2025 居民消费结构数据集(21列,15000条记录)XLSX 详情介绍:该数据集为 2025 年 12 个月、1250 户家庭的平衡面板消费数据,15000 行 ×21 列零缺失,覆盖 31 省、城乡均衡,含八大类消费支出和恩格尔系数(均值 0.293,属富裕区间),家庭月收入均值 8473 元、月支出 6487 元,附完整字段说明 sheet,数据干净规整,非常适合做消费结构分析、面板回归、城乡 / 区域差异对比和收入等级分类预测,但为合成数据、仅 1 年时间跨度,不适合做真实政策研究或长期趋势分析。 立即下载

相关推荐

jsprit 是一个基于 Java 的开源工具包

jsprit 是一个基于 Java 的开源工具包,用于解决复杂的 旅行商问题 (TSP) 和 车辆路径问题 (VRP)。 它轻量、灵活且易于使用,基于单一的通用 元启发式算法,目前可解决以下问题: 带容量约束的车辆路径问题 (Capacitated VRP) 多 depot 车辆路径问题 (Multiple Depot VRP) 带时间窗的车辆路径问题 (VRP with Time Windows) 带回程的车辆路径问题 (VRP with Backhauls) 带取送货的车辆路径问题 (VRP with Pickups and Deliveries) 带异构车队的车辆路径问题 (VRP with Heterogeneous Fleet) 时间依赖型车辆路径问题 (Time-dependent VRP) 旅行商问题 (Traveling Salesman Problem) 拨号乘车问题 (Dial-a-Ride Problem) 上述各类问题的多种组合

C#操作mysql数据库事务以及获取插入数据ID的方法

要准备一个项目,需要用的C#的事务,以及获取insert自增数据库的ID。所以试了一下。

hi_kong的专栏 4479

配合上述本地模型资源文件

配合上述本地模型资源文件

iBatis下插入数据返回数据ID的问题

今天让做SSI整合的东西,遇到了使用iBatis插入数据返回主键的问题。一开始按照自己的想法,在插入数据之后通过当前条数据的其他字段将这条数据的主键查询出来,结果当然是不满意。然后在业务层,通过时间生成ID,不过也被人家给淘汰掉了。后来才突然想到iBatis下边有selectkey元素,不过只是用过在oracle下边的,不知道mySQL下边有没有。后来查询了一下资料,才发现常用数据库都是用这个属性

zhangsiboy的专栏 752

三电平维也纳VIENNA双闭环控制整流器仿真(Simulink仿真实现)

内容概要:本文档系统性地介绍了以“三电平维也纳VIENNA双闭环控制整流器”为核心的电力电子系统Simulink仿真资源,聚焦于电压电流双闭环控制、中点电位平衡、空间矢量脉宽调制(SVPWM)等关键技术的建模与实现。资源包不仅提供完整的仿真模型,还配套Mathcad计算书、设计报告及参考文献,帮助用户从理论推导到参数设计再到仿真验证实现全流程贯通。同时,文档整合了大量相关拓扑(如DAB、LLC、PFC、CLLC等)与先进控制策略(如EPS调制、软开关、最小应力优化、模型预测控制等)的仿真案例,覆盖从基础整流器到复杂双向变换系统的多个典型应用场景,构成一个面向科研、教学与工程实践的综合性学习体系。; 适合人群:具备电力电子、自动控制或电气工程等相关专业背景,熟悉MATLAB/Simulink仿真环境,正在从事新能源变换、电能质量治理、电机驱动或电力系统方向研究的研究生、高校教师及企业研发工程师。; 使用场景及目标:①开展三电平VIENNA整流器、双有源桥DAB、LLC谐振变换器等先进拓扑的科研建模与论文复现;②完成课程设计、毕业设计或实际工程项目中的控制器开发与系统性能验证;③深入掌握双闭环控制架构、中点电位平衡机制、SVPWM调制策略及系统稳定性分析等核心知识点; 阅读建议:建议结合Mathcad计算书进行系统参数设计,理解控制算法的数学基础,并在Simulink中逐步搭建与调试模型,注重理论计算与仿真结果的对比分析,推荐按照资源目录顺序循序渐进学习,以建立完整的知识框架和技术实现能力。

三相充电桩维也纳PFC+三电平LLC谐振变换器三电平PSIM仿真设计(Simulink仿真实现)

内容概要:本文档聚焦于电力电子与电力系统领域的仿真设计,重点围绕三相充电桩中维也纳PFC(Vienna Power Factor Correction)整流器与三电平LLC谐振变换器的联合系统展开,提供基于PSIM和Simulink平台的完整仿真设计方案。内容涵盖9kW三相三开关维也纳PFC整流器的Mathcad计算书、双闭环控制策略、中点电压均衡控制、SVPWM调制技术及电流过零畸变消除方法等关键技术环节,并配套详细的仿真模型与设计报告。此外,文档整合了丰富的电力电子拓扑资源,包括图腾柱PFC、交错并联PFC、双有源桥DAB、CLLC谐振变换器、双向Buck-Boost等典型电路结构,覆盖Matlab/Simulink、Plecs、PSIM等多种仿真环境,形成从理论计算、建模、控制算法设计到性能优化的一体化技术体系。; 适合人群:面向具备电力电子、电气工程、自动化等相关专业背景,熟悉Matlab/Simulink/PSIM等仿真工具,从事新能源汽车充电技术、高效率AC-DC/DC-DC变换器设计、电力系统能量管理等方向的研究生、科研人员及工程技术人员。; 使用场景及目标:①支持三相高功率因数校正与高效DC-DC变换系统的科研仿真与教学实践;②用于PI控制、前馈控制、SVPWM、软开关技术、中点电位平衡、双闭环动态响应等核心控制算法的研究与验证;③服务于毕业设计、科研课题、学术论文复现及实际工程项目开发,提升系统级建模与优化能力。; 阅读建议:建议结合Mathcad计算书与仿真模型同步学习,优先掌握维也纳PFC与LLC的基本工作原理与参数设计流程,再深入理解双闭环控制系统架构与关键控制策略,推荐先运行Simulink模型观察动态波形响应,并参考附带文献深化理论认知与工程实现能力。

iBATIS自动生成主键(oracle,sqlserver,mysql)

在数据库插入一条数据的时候,经常是需要返回插入这条数据的主键。但是数据库供应商之间生成主键的方式都不一样。 有些是预先生成(pre-generate)主键的,如Oracle和PostgreSQL;有些是事后生成(post-generate)主键的,如MySQL和SQL Server。但是不管是哪种方式,我们都可以用iBATIS的节点来获取语句所产生的主键。 例子如下: 假设我的数据库表为PR...

scheme2008的专栏 223

政府科技管理者在推动科技成果转移转化时,如何高效识别具有高转化价值的科研成果.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

ibatis获取主键自动增长ID

三种数据库 本文和大家讲一下如何使用ibatis来获取刚刚插入数据的ID的方法,也是在网上找到的,挺实用。 iBatis的sqlMap配置文件的selectKey元素有个type属性,可以指定pre或者post表示前生成(pre)还是后生成(post)。 Oracle设置 1&lt;!-- Oracle SEQUENCE --&gt;    2&lt;insert id="...

tianshi147258的博客 517

Anomalib实战指南:从零开始构建自定义异常检测数据集

本文提供了一份详细的Anomalib实战指南,指导用户从零开始构建自定义异常检测数据集。文章深入解析了数据准备的核心步骤、目录结构规范,并对比了PatchCore与FastFlow等关键模型的适用场景。通过清晰的代码示例,手把手演示了环境配置、模型训练与推理评估的全流程,旨在帮助开发者快速掌握这一工业视觉异常检测利器,有效解决实际生产中的缺陷识别难题。

weixin_29054245的博客 643

2.4G跳频算法 2.4G切信道算法 (简例示意nRF52832)

2.4G跳频算法 nRF52832示例 2.4G自适应信道算法

Peter.Min 956

MySQL字段自增自减的SQL语句

MySQL的自增语句大家应该都很熟悉 也很简单 update `info` set `comments` = `comments`+1 WHERE `id` = 32 这样就可以了,但是有时候我们会涉及到做减法, 例如:文章的评论数,在删除或者锁定了一条评论之后需要对该文章总评论数减一 comments smallint(5) unsigned 文章评论总数统...

weixin_30765505的博客 638

谈谈SAP顾问的几个发展趋势

大家新年好,今天想聊一下对SAP顾问发展趋势的一些个人见解。过去10多年得益于我国的经济发展,外资不断加大在中国的投资和中国企业的发展,SAP顾问行业得到了很大的发展和壮大。那么未来几年SAP顾问的职业发展到底怎么样呢?

syounger的专栏 2514

PostGres常用sql锦集(持续更新中,内容会越来越多)

POSTGRES常用sql示例 修改表的owner: alter table qrtz_locks owner to quartz; alter table qrtz_scheduler_state owner to quartz;

lhever_的博客 3193

PCA9548实战:从硬件连接到Linux驱动的I2C扩展全解析

本文详细解析了PCA9548 I2C多路复用器从硬件连接到Linux驱动配置的全过程。涵盖硬件引脚连接、电源去耦、地址选择等关键设计要点,以及Linux驱动加载、设备树配置和应用层编程技巧,帮助开发者高效实现I2C总线扩展。

weixin_28726391的博客 410

微信本地数据解密实战:从AES加密原理到EnMicroMsg.db恢复指南

数据加密是保障信息安全的核心技术,其中对称加密算法AES因其高效可靠,被广泛应用于各类本地数据保护场景。其原理是通过特定密钥对数据进行混淆转换,确保未经授权者无法读取原始内容。在移动应用领域,本地数据库加密对于保护用户隐私、防止数据泄露具有重要价值。微信作为国民级应用,对其本地存储的聊天记录数据库(EnMicroMsg.db)采用了基于设备标识和用户UIN生成的AES-256-CBC加密方案。理解这一机制,不仅有助于在合法合规前提下进行个人数据备份与恢复,也为开发者进行客户端安全分析、兼容工具开发提供了基础

weixin_30764883的博客 570

根据父id,查询子id集合的sql快速写法

我们的业务场景是根据父栏目id查询所有子栏目信息,这里提供了几种根据父id查询子id集合的一些方法,cms_channel表名,channel_id,主键id总结下: oracle数据库IBatis写法 select channel_id from cms_channel start with parent_id =#channelId:VARCHAR# connect by prior ...

baiofchao 1307

分享一个N-MOS管和P-MOS管驱动应用实例

大家好,我是『芯知识学堂』的SingleYork,今天给大家分享一下MOS管驱动相关的知识。 MOS管在电路设计中是比较常见的,按照驱动方式来分的话,有两种,即:N-MOS管和P-MOS管。MOS管跟三极管的驱动方式有点类似,但又不完全相同,那么今天笔者将会给大家简单介绍一下N-MOS管和P-MOS管的工作原理,并结合自己实际的应用来给大家分享一下如何来驱动N-MOS管和P-MOS管。 首先,我们先来看一下N-MOS管和P-MOS管分别在电路中的电气符号: 咋一看上面两个电气符号,似乎非常的相似,可能让很

『芯知识学堂』SingleYork 的博客 3万+

ibatis 返回sql server和mysql主键自增值

用ibatis 返回sqlserver主键自增值 [code="java"] select @@IDENTITY as value [/code] 返回mysql主键自增值 [code="java"] SELECT LAST_INSERT_ID() [/code]

iteye_11197的博客 194

基于MCP协议的AssistAI:深度集成Eclipse的AI编程助手实战指南

在AI辅助编程领域,大型语言模型(LLM)与开发工具的深度集成是提升开发效率的关键。其核心原理在于通过标准化的协议(如MCP,Model Context Protocol),将IDE的功能封装为AI可调用的工具集,从而实现环境感知与操作同步。这项技术的价值在于打破了传统AI编程工具与开发者工作流的割裂,使AI能够以符合工程规范的方式直接操作项目,如进行代码重构、运行测试和交互式调试。其典型应用场景包括复杂代码导航、自动化测试生成与精准的增量编译。本文以Eclipse插件AssistAI为例,详细解析了如何通

weixin_42531579的博客 558

云计算 | 期末梳理(上)

2024云计算回忆版 && 复盘向梳理

知识库搭建ing 2231

pgsql 建表主键自增

使用navicat创建postgresql数据库的表时如何设定主键自增? 我们知道,在navicat中MySQL 里面有auto_increment 自增字段PostgreSQL 没有自增字段这一说法,但是有单独的对象:序列。 可以用序列或者其他方法来是实现这样的语法。或者设置某一列的默认值为sequence的值即可 在MySQL当中,我们可以通过勾选来实现ID自增,我们的navcat如下图所...

qq_35622837的博客 1万+

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

ibatis插入时获取自增主键的方式

(1)对象作为参数执行插入  &lt;insert id="insert" parameterType="Person"&gt;          insert ignore into tb_person_${tbIndex} (uid,name )          values(#{person.uid,jdbcType=INTEGER},#{person.name,jdbcType...

hit_ynsun的博客 670

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

ibatis mysql 自增_mybatis自增主键

简单介绍:在使用mybats插入数据是,有很多需要和id关联的其他数据,所以在插入一条信息时获取其主键信息是很常见的操作。一 mysql数据库的主键自增(int类型的主键)1 创建一个表,设置表的id(此id必须是int类型),设置为auto_increment自增类型2 映射文件配置如下:insert into user(name,sex,age) values(#{name},#{sex},#...

weixin_39800387的博客 382

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

iBatis自动生成的主键 (Oracle,MS Sql Server,MySQL)

&lt; &gt; 猎头职位: &lt;script type="text/javascript"&gt;&lt;/script&gt;安徽: 合肥,杭州,苏州:诚聘java架构师 相关文章:   iBATIS自动生成主键 IBatis简单实现(附主键自动生成) oracle中可以不用selectKey而直接把Sequences生成ID写在SQL语中吗? 推荐圈...

蝈蝈的技术博客 216

psql  设置主键自增

psql 设置主键自增 tools=# create sequence task_info_id_seq start with 1 increment by 1 no minvalue no maxvalue cache 1; CREATE SEQUENCE tools=# alter table gait_task_info alter COLUMN id set default nextval('task_info_id_seq'); ALTER TABLE tools=# \d gait_task.

weixin_39934560的博客 343
上一篇: suse linux 11 apache 虚拟目录配置
下一篇: Hessian与Axis完成webservice远程调用
xiaoxinphp
博客等级 码龄18年 1粉丝 45原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值