MyBatis Oracle 自增序列的实现方法
mybatis oracle 自增序列的代码如下所示:
<insert id=" insert " useGeneratedKeys="true" keyProperty="s_id" parameterType="xxxx" > <selectKey resultType="int" order="BEFORE" keyProperty="s_id"> SELECT SEQ_TABLE.NEXTVAL FROM dual </selectKey> INSERT INTO <span style="font-family: Arial, Helvetica, sans-serif;">s_id</span><span style="font-family: Arial, Helvetica, sans-serif;">,name,age</span> VALUES (#{s_id} #{name}, #{age} ) </insert>
resultType="int" 返回的是一个int类型
keyProperty 把返回值,赋值给:parameterType中对象的对象的属性,也就是xxxxx类中的s_id属性
useGeneratedKeys="true" keyProperty="s_id"
返回序列id,如果不需要,可以不填
下面看下mybatis配置oracle的主键自增长
mysql、sqlserver等数据库本身带有主键自增长像auto_increment的功能可以直接使用
useGeneratedKeys=”true”来实现,比如下面的配置
insert into s_user_auth (id,user_id, user_name) values(#{id},#{userid},#{username})
而oracle则不行,oracle主键自增长是通过sequence实现的,所以这种方式就不可以了,需要使用:
1.先通过sequence查出来id,再insert
select yoursequence.nextval as id from dual insert into s_user_auth (id,user_id, user_name) values(#{id},#{userid},#{username})
2.直接insertsequence.nextval,如下
insert into s_user_auth (id,user_id, user_name) values(yoursequence.nextval,#{userid},#{username})
相关推荐
-
MyBatis批量插入数据到Oracle数据库中的两种方式(实例代码)
一.mybatis批量插入数据到Oracle中的两种方式: 第一种: <insert id="addList" parameterType="java.util.List" useGeneratedKeys="false"> INSERT ALL <foreach item="item" index="index" collection="list"> INTO
-
深入浅析mybatis oracle BLOB类型字段保存与读取
一.BLOB字段 BLOB是指二进制大对象也就是英文Binary Large Object的所写,而CLOB是指大字符对象也就是英文Character Large Object的所写.其中BLOB是用来存储大量二进制数据的:CLOB用来存储大量文本数据.BLOB通常用来保存图片.文件等二进制类型的数据. 二.使用mybatis操作blob 1.表结构如下: create table BLOB_FIELD ( ID VARCHAR2(64 BYTE) not null, TAB_NAME VARC
-
mybatis执行批量更新batch update 的方法(oracle,mysql两种)
Oracle和MySQL数据库的批量update在mybatis中配置不太一样: oracle数据库: <code class="hljs tcl" style=""><<span class="hljs-keyword" style="">update</span> id=<span class="hljs-string" style=""
-
Oracle+Mybatis的foreach insert批量插入报错的快速解决办法
最近做一个批量导入的需求,将多条记录批量插入数据库中. 解决思路:在程序中封装一个List集合对象,然后把该集合中的实体插入到数据库中,因为项目使用了MyBatis,所以打算使用MyBatis的foreach功能进行批量插入.期间遇到了"SQL 命令未正确结束 "的错误,最终解决,记录下来供以后查阅和学习. 首先,在网上参考了有关Mybatis的foreach insert的资料,具体如下: foreach的主要用在构建in条件中,它可以在SQL语句中进行迭代一个集合. foreach
-
Java实现mybatis批量插入数据到Oracle
最近项目中遇到一个问题:导入数据到后台并将数据插入到数据库中,导入的数据量有上万条数据,考虑采用批量插入数据的方式: 结合网上资料,写了个小demo,文章末尾附上demo下载地址 1.新建项目:项目目录结构如下图所示,添加相应的jar包 2.新建数据库表:ACCOUNT_INFO CREATE TABLE ACCOUNT_INFO ( "ID" NUMBER(12) NOT NULL , "USERNAME" VARCHAR2(64 BYTE) NULL , &q
-
oracle+mybatis 使用动态Sql当插入字段不确定的情况下实现批量insert
最近做项目遇到一个挺纠结的问题,由于业务的关系,DB的数据表无法确定,在使用过程中字段可能会增加,这样在insert时给我造成了很大的困扰. 先来看一下最终我是怎么实现的: <insert id="batchInsertLine" parameterType="HashMap"> <![CDATA[ INSERT INTO tg_fcst_lines(${lineColumn}) select result.*,sq_fcst_lines.next
-
MyBatis Oracle 自增序列的实现方法
mybatis oracle 自增序列的代码如下所示: <insert id=" insert " useGeneratedKeys="true" keyProperty="s_id" parameterType="xxxx" > <selectKey resultType="int" order="BEFORE" keyProperty="s_id"
-
mybatis使用oracle进行添加数据的方法
本次博主主要进行oralce数据库开发,好久不用oracle,有很多知识点也忘的差不多了,本次主要是复习一下工作中主要使用的一些sql语句编写: 查询 查询语句都是正常的,但是需要注意的是oracle数据库在查询的时候,表名使用别名的时候,请不要使用as关键字,只有mysql数据库才可以使用,oracle只支持字段名别名可以使用as关键字. 增加 添加数据的时候,我们后台很可能使用到添加后的主键id,此时也跟mysql不一样,mybatis只要配置一下insert属性就可以了,比如: <inse
-
Linux下修改Oracle监听地址的方法
lisenter.ora 目录在 /opt/oracle/11g/network/admin LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521)) (ADDRESS = (PROTOCOL = TCP)(HOST = 10.1.111.123)(PORT = 1521)) ) ) ADR_BASE_LISTENER = /opt/oracle tnsnames.o
-
Oracle实现行列转换的方法分析
本文实例讲述了Oracle实现行列转换的方法.分享给大家供大家参考,具体如下: 1.固定列数的行列转换 如: student subject grade --------- ---------- -------- student1 语文 80 student1 数学 70 student1 英语 60 student2 语文 90 student2 数学 80 student2 英语 100 -- 转换为: 语文 数学 英语 student1 80 70 60 student2 90 80 10
-
解析oracle对select加锁的方法以及锁的查询
解析oracle对select加锁的方法以及锁的查询一.oracle对select加锁方法 复制代码 代码如下: create table test(a number,b number);insert into test values(1,2);insert into test values(3,4);insert into test values(8,9);commit;---session 1 模拟选中一个号码SQL> select * from test where a =1 for up
-
Oracle存储过程、包、方法使用总结(推荐)
Oracle存储过程.包.方法使用总结,具体代码如示: /** *@author:zhengwei *@date:2017-04-28 *@desc:存储过程用法总结 */ CREATE OR REPLACE PROCEDURE MYPROCEDURE(P_ID IN VARCHAR, P_STATUS OUT VARCHAR) --P_ID为输入参数 ,P_STATUS为输出参数 AS ---变量声明 T_STATUS VARCHAR2(20); T_ID NUMBER; V_POSTYPE
-
oracle列合并的实现方法
很多场合我们都会用到oracle的列合并,oracle提供了如下一些方法用来实现列合并: 一.Oracle 10G以前使用WMSYS.WM_CONCAT: wmsys.wm_concat将字段的值用","来隔开. select id,wm_concat(name) from tab_name group by id; 二.使用sys_connect_by_path sys_connect_by_path(字段名, 2个字段之间的连接符号),这里的连接符号不要使用逗号,oracle会报错
-
oracle数据库导入TXT文件方法介绍
客户端连接数据库导入 1. 安装有oracle客户端,配好监听. 2. 以oracle数据库app用户的表user_svc_info为例 <span style="color:#3333ff;">CREATE TABLE USER_SVC_INFO( PHONE varchar2(20) NOT NULL, SVC_ID varchar2(32) NOT NULL, P_USERNAME varchar2(100) NULL, USER_STATUS number NOT
-
Mybatis调用视图和存储过程的方法
现在的项目是以Mybatis作为O/R映射框架,确实好用,也非常方便项目的开发.MyBatis支持普通sql的查询.视图的查询.存储过程调用,是一种非常优秀的持久层框架.它可利用简单的XML或注解用语配置和原始映射,将接口和java中的POJO映射成数据库中的纪录. 一.调用视图 如下就是调用视图来查询收益明细,sql部分如下: <!-- 获取明细 --> <select id ="getContactEarnsDetail" resultType= "ja
-
检测oracle数据库坏块的方法
检测oracle数据库坏块的办法: 1.使用DBV(DB File Verify)工具; 2.使用RMAN(Recovery Manager)工具; DBV(DB File Verify)工具: 外部命令,物理介质数据结构完整性检查: 只能用于数据文件(offline或online),不支持控制文件和重做日志文件的块检查: 也可以验证备份文件(rman的copy命令备份或操作系统CP命令备份): 进入盘符,然后执行以下脚本: D:\app\Administrator\oradata\orcl>d
随机推荐
- AngularJS中处理多个promise的方式
- 利用iframe实现ajax跨域通信的实现原理(图解)
- 完全卸载mysql(停止服务、卸载相关程序、删除注册表
- Python实现高效求解素数代码实例
- 惊云JS随机排序程序随机显示信息-每次新闻显示顺序都不一样
- 使用SNK密钥文件保护你的DLL和代码不被反编译教程
- 利用laravel搭建一个迷你博客实战教程
- Python实现把回车符\r\n转换成\n
- 琥珀无限级联动菜单-JavaScript版
- 用vbs分割与合并文本文件的代码
- Jquery练习之表单验证实现代码
- BootStrap无限级分类(无限极分类封装版)
- jQuery中prevUntil()方法用法实例
- 清除js缓存的多种方法总结
- 硬盘出现问题。以前客户的网站在D盘。如果换成其它好的盘上。如何处理?
- 详解次小生成树以及相关的C++求解方法
- 51files提供无限空间网络硬盘网络u盘
- PHP面向对象之里氏替换原则简单示例
- Angular6 发送手机验证码按钮倒计时效果实现方法
- Spring AOP如何整合redis(注解方式)实现缓存统一管理详解