MyBatis_SelectKey使用oracle 序列插入主键
mapper 如下:
使用<selectkey>实现 也可以使用oracle的row 级触发器trigger实现;
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.hxb.wide.demo.mapper.CCustInfoMapper">
<resultMap id="BaseResultMap" type="com.hxb.wide.demo.entity.CCustInfo">
<result column="CUST_NO" property="custNo" jdbcType="VARCHAR" />
<result column="CUST_NAME" property="custName" jdbcType="VARCHAR" />
<result column="GENDER" property="gender" jdbcType="VARCHAR" />
<result column="ID_TYPE" property="idType" jdbcType="VARCHAR" />
<result column="ID_NO" property="idNo" jdbcType="VARCHAR" />
<result column="MAIL_ADDR" property="mailAddr" jdbcType="VARCHAR" />
<result column="MOBILE" property="mobile" jdbcType="VARCHAR" />
<result column="LOGIN_PWD" property="loginPwd" jdbcType="VARCHAR" />
<result column="ADDRESS" property="address" jdbcType="VARCHAR" />
<result column="STATUS" property="status" jdbcType="VARCHAR" />
<result column="LAST_UP_DATE" property="lastUpDate" jdbcType="VARCHAR" />
<result column="LAST_LOGIN_DATE" property="lastLoginDate" jdbcType="VARCHAR" />
</resultMap>
<sql id="Example_Where_Clause">
<where>
<foreach collection="oredCriteria" item="criteria" separator="or">
<if test="criteria.valid">
<trim prefix="(" suffix=")" prefixOverrides="and">
<foreach collection="criteria.criteria" item="criterion">
<choose>
<when test="criterion.noValue">and ${criterion.condition}</when>
<when test="criterion.singleValue">and ${criterion.condition} #{criterion.value}</when>
<when test="criterion.betweenValue">and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}</when>
<when test="criterion.listValue">
and ${criterion.condition}
<foreach collection="criterion.value" item="listItem" open="(" close=")" separator=",">#{listItem}</foreach>
</when>
</choose>
</foreach>
</trim>
</if>
</foreach>
</where>
</sql>
<sql id="Update_By_Example_Where_Clause">
<where>
<foreach collection="example.oredCriteria" item="criteria" separator="or">
<if test="criteria.valid">
<trim prefix="(" suffix=")" prefixOverrides="and">
<foreach collection="criteria.criteria" item="criterion">
<choose>
<when test="criterion.noValue">and ${criterion.condition}</when>
<when test="criterion.singleValue">and ${criterion.condition} #{criterion.value}</when>
<when test="criterion.betweenValue">and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}</when>
<when test="criterion.listValue">
and ${criterion.condition}
<foreach collection="criterion.value" item="listItem" open="(" close=")" separator=",">#{listItem}</foreach>
</when>
</choose>
</foreach>
</trim>
</if>
</foreach>
</where>
</sql>
<sql id="Base_Column_List">CUST_NO, CUST_NAME, GENDER, ID_TYPE, ID_NO, MAIL_ADDR, MOBILE, LOGIN_PWD, ADDRESS,
STATUS, LAST_UP_DATE, LAST_LOGIN_DATE</sql>
<select id="selectByExample" resultMap="BaseResultMap" parameterType="com.hxb.wide.demo.mapper.example.CCustInfoExample">
select
<if test="distinct">distinct</if>
<include refid="Base_Column_List" />
from C_CUST_INFO
<if test="_parameter != null">
<include refid="Example_Where_Clause" />
</if>
<if test="orderByClause != null">order by ${orderByClause}</if>
</select>
<delete id="deleteByExample" parameterType="com.hxb.wide.demo.mapper.example.CCustInfoExample">
delete from C_CUST_INFO
<if test="_parameter != null">
<include refid="Example_Where_Clause" />
</if>
</delete>
<insert id="insert" parameterType="com.hxb.wide.demo.entity.CCustInfo">insert into C_CUST_INFO (CUST_NO, CUST_NAME, GENDER,
ID_TYPE, ID_NO, MAIL_ADDR,
MOBILE, LOGIN_PWD, ADDRESS,
STATUS, LAST_UP_DATE, LAST_LOGIN_DATE
)
values (#{custNo,jdbcType=VARCHAR}, #{custName,jdbcType=VARCHAR}, #{gender,jdbcType=VARCHAR},
#{idType,jdbcType=VARCHAR}, #{idNo,jdbcType=VARCHAR}, #{mailAddr,jdbcType=VARCHAR},
#{mobile,jdbcType=VARCHAR}, #{loginPwd,jdbcType=VARCHAR}, #{address,jdbcType=VARCHAR},
#{status,jdbcType=VARCHAR}, #{lastUpDate,jdbcType=VARCHAR}, #{lastLoginDate,jdbcType=VARCHAR}
)</insert>
<insert id="insertSelective" parameterType="com.hxb.wide.demo.entity.CCustInfo">
<selectKey resultType="java.lang.String" order="BEFORE" keyProperty="custNo">SELECT seq_cust_id.nextval AS custNo FROM dual</selectKey>
insert into C_CUST_INFO
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="custNo!=null ">CUST_NO,</if>
<if test="custName != null">CUST_NAME,</if>
<if test="gender != null">GENDER,</if>
<if test="idType != null">ID_TYPE,</if>
<if test="idNo != null">ID_NO,</if>
<if test="mailAddr != null">MAIL_ADDR,</if>
<if test="mobile != null">MOBILE,</if>
<if test="loginPwd != null">LOGIN_PWD,</if>
<if test="address != null">ADDRESS,</if>
<if test="status != null">STATUS,</if>
<if test="lastUpDate != null">LAST_UP_DATE,</if>
<if test="lastLoginDate != null">LAST_LOGIN_DATE,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="custNo!=null">#{custNo,jdbcType=VARCHAR},</if>
<if test="custName != null">#{custName,jdbcType=VARCHAR},</if>
<if test="gender != null">#{gender,jdbcType=VARCHAR},</if>
<if test="idType != null">#{idType,jdbcType=VARCHAR},</if>
<if test="idNo != null">#{idNo,jdbcType=VARCHAR},</if>
<if test="mailAddr != null">#{mailAddr,jdbcType=VARCHAR},</if>
<if test="mobile != null">#{mobile,jdbcType=VARCHAR},</if>
<if test="loginPwd != null">#{loginPwd,jdbcType=VARCHAR},</if>
<if test="address != null">#{address,jdbcType=VARCHAR},</if>
<if test="status != null">#{status,jdbcType=VARCHAR},</if>
<if test="lastUpDate != null">#{lastUpDate,jdbcType=VARCHAR},</if>
<if test="lastLoginDate != null">#{lastLoginDate,jdbcType=VARCHAR},</if>
</trim>
</insert>
<select id="countByExample" parameterType="com.hxb.wide.demo.mapper.example.CCustInfoExample" resultType="java.lang.Integer">
select count(*) from C_CUST_INFO
<if test="_parameter != null">
<include refid="Example_Where_Clause" />
</if>
</select>
<update id="updateByExampleSelective" parameterType="map">
update C_CUST_INFO
<set>
<if test="record.custNo != null">CUST_NO = #{record.custNo,jdbcType=VARCHAR},</if>
<if test="record.custName != null">CUST_NAME = #{record.custName,jdbcType=VARCHAR},</if>
<if test="record.gender != null">GENDER = #{record.gender,jdbcType=VARCHAR},</if>
<if test="record.idType != null">ID_TYPE = #{record.idType,jdbcType=VARCHAR},</if>
<if test="record.idNo != null">ID_NO = #{record.idNo,jdbcType=VARCHAR},</if>
<if test="record.mailAddr != null">MAIL_ADDR = #{record.mailAddr,jdbcType=VARCHAR},</if>
<if test="record.mobile != null">MOBILE = #{record.mobile,jdbcType=VARCHAR},</if>
<if test="record.loginPwd != null">LOGIN_PWD = #{record.loginPwd,jdbcType=VARCHAR},</if>
<if test="record.address != null">ADDRESS = #{record.address,jdbcType=VARCHAR},</if>
<if test="record.status != null">STATUS = #{record.status,jdbcType=VARCHAR},</if>
<if test="record.lastUpDate != null">LAST_UP_DATE = #{record.lastUpDate,jdbcType=VARCHAR},</if>
<if test="record.lastLoginDate != null">LAST_LOGIN_DATE = #{record.lastLoginDate,jdbcType=VARCHAR},</if>
</set>
<if test="_parameter != null">
<include refid="Update_By_Example_Where_Clause" />
</if>
</update>
<update id="updateByExample" parameterType="map">
update C_CUST_INFO
set CUST_NO = #{record.custNo,jdbcType=VARCHAR},
CUST_NAME = #{record.custName,jdbcType=VARCHAR},
GENDER = #{record.gender,jdbcType=VARCHAR},
ID_TYPE = #{record.idType,jdbcType=VARCHAR},
ID_NO = #{record.idNo,jdbcType=VARCHAR},
MAIL_ADDR = #{record.mailAddr,jdbcType=VARCHAR},
MOBILE = #{record.mobile,jdbcType=VARCHAR},
LOGIN_PWD = #{record.loginPwd,jdbcType=VARCHAR},
ADDRESS = #{record.address,jdbcType=VARCHAR},
STATUS = #{record.status,jdbcType=VARCHAR},
LAST_UP_DATE = #{record.lastUpDate,jdbcType=VARCHAR},
LAST_LOGIN_DATE = #{record.lastLoginDate,jdbcType=VARCHAR}
<if test="_parameter != null">
<include refid="Update_By_Example_Where_Clause" />
</if>
</update>
<select id="selectByExampleWithRowbounds" resultMap="BaseResultMap" parameterType="com.hxb.wide.demo.mapper.example.CCustInfoExample" resultType="com.hxb.wide.demo.entity.CCustInfo">
select
<if test="distinct">distinct</if>
<include refid="Base_Column_List" />
from C_CUST_INFO
<if test="_parameter != null">
<include refid="Example_Where_Clause" />
</if>
<if test="orderByClause != null">order by ${orderByClause}</if>
</select>
<select id="selectByPrimaryKey" />
<delete id="deleteByPrimaryKey" />
<update id="updateByPrimaryKeySelective" />
<update id="updateByPrimaryKey" />
<delete id="deleteByCustName" parameterType="com.hxb.wide.demo.entity.CCustInfo">delete from C_CUST_INFO where CUST_NAME = #{custName,jdbcType=VARCHAR}</delete>
<delete id="deleteByCustNo">delete from C_CUST_INFO where CUST_NO = #{custNo,jdbcType=VARCHAR}</delete>
<select id="queryByCustNo" parameterType="java.lang.String" resultMap="BaseResultMap" >select * from C_CUST_INFO where CUST_NO = #{custNo,jdbcType=VARCHAR}</select>
</mapper>
MyBatis_SelectKey使用oracle 序列插入主键的更多相关文章
- MyBatis 插入主键方式和返回主键
这使用的mysql数据库,下面这种方式(没有给mysql设置自动增长)是插入主键方式: <insert id="insertBook" parameterType=" ...
- EntityFramework Core并发导致显示插入主键问题
前言 之前讨论过EntityFramework Core中并发问题,按照官网所给并发冲突解决方案以为没有什么问题,但是在做单元测试时发现too young,too siimple,下面我们一起来看看. ...
- EntityFramework Core并发导致显式插入主键问题
前言 之前讨论过EntityFramework Core中并发问题,按照官网所给并发冲突解决方案以为没有什么问题,但是在做单元测试时发现too young,too simple,下面我们一起来看看. ...
- 解决mybatisplus saveBatch 或者save 无法插入主键问题
解决mybatisplus saveBatch 或者save 无法插入主键问题 通过跟踪源码后得出结论,由于插入的表的主键不是自增的,而是手动赋值的,所以在调用saveBatch 执行的sql语句是没 ...
- Oracle序列更新为主键最大值
我们在使用 Oracle 数据库的时候,有时候会选择使用自增序列作为主键.但是在开发过程中往往会遇到一些不规范的操作,导致表的主键值不是使用序列插入的.这样在数据移植的时候就会出现各种各样的问题.当然 ...
- oracle插入主键数据、sequence和触发器
一.创建表: id number;并设为主键 name VARCHAR2(20 BYTE) 二. 插入数据 2.1 insert into addservice.test_table (id,na ...
- SQLServer 自增主键创建, 指定自增主键列值插入数据,插入主键
http://blog.csdn.net/zh2qiang/article/details/5323981 SQLServer 中含自增主键的表,通常不能直接指定ID值插入,可以采用以下方法插入. 1 ...
- 触发器 'SA.U_USER_INFO_TRG' 无效且未通过重新验证--Oracle序列
程序开发时报错:触发器 'SA.U_USER_INFO_TRG' 无效且未通过重新验证打开触发器的定义,执行其中的语句,发现序列 U_USER_INFO_SEQ 未定义.什么是序列呢?序列相当于sql ...
- Oracle序列使用:建立、删除
转自:http://www.cnblogs.com/WangPB/archive/2010/07/13/1776766.html 在开始讲解Oracle序列使用方法之前,先加一点关于Oracle cl ...
随机推荐
- 数学基础:HDU2802-F(N)(寻找循环节)
F(N) Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submissi ...
- PAT Basic 1077
1077 互评成绩计算 在浙大的计算机专业课中,经常有互评分组报告这个环节.一个组上台介绍自己的工作,其他组在台下为其表现评分.最后这个组的互评成绩是这样计算的:所有其他组的评分中,去掉一个最高分和一 ...
- 大家好,我是一个JAVA初学者,想在这里记下自己学习过程中的点点滴滴,请多多关照
大家好,我是一个JAVA初学者,想在这里记下自己学习JAVA的点点滴滴,请多多关照. 以前一直在QQ空间里记录的,但感觉有些麻烦,而且有些东西自己理解的并不完善甚至都不正确,现在开始在这里重新记录,从 ...
- 针对NM_CUSTOMDRAW消息的学习
消息的形式:1 窗口消息,2 命令消息,3 WM_NOTIFY消息,4 自定义消息 我们的NM_CUSTOMDRAW消息就是就属于第三种WM_NOTIFY消息,而添加消息映射的方法分为两种: BEGI ...
- Mysql新建数据库、删除数据库
新建数据库 create database db_name; //db_name为新建数据库的名字 mysql> create database db_name; Query OK, row a ...
- Java程序的结构和执行
目录 Java程序的结构 Java程序的执行 source code -- compiler -- class file -- JVM compiler JVM Java语法 数据类型 数据的存储 堆 ...
- 大数据学习——akka自定义RPC
实现 package cn.itcast.akka import akka.actor.{Actor, ActorSystem, Props} import akka.actor.Actor.Rece ...
- js中的事件委托和事件代理详解
起因: 1.这是前端面试的经典题型,要去找工作的小伙伴看看还是有帮助的: 2.其实我一直都没弄明白,写这个一是为了备忘,二是给其他的知其然不知其所以然的小伙伴们以参考: 概述: 那什么叫事件委托呢?它 ...
- [python工具][2]sublime的快捷键
十.Sublime Text 快捷键列表 快捷键按类型分列如下: 1.通用 ↑↓← → 上下左右移动光标 Alt 调出菜单 Ctrl + Shift + P 调出命令板(Comma ...
- Mutual Training for Wannafly Union #8 D - Mr.BG Hates Palindrome 取余
Mr.BG is very busy person. So you have been given enough time (1000 milliseconds) to help him. Mr. B ...