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 序列插入主键的更多相关文章

  1. MyBatis 插入主键方式和返回主键

    这使用的mysql数据库,下面这种方式(没有给mysql设置自动增长)是插入主键方式: <insert id="insertBook" parameterType=" ...

  2. EntityFramework Core并发导致显示插入主键问题

    前言 之前讨论过EntityFramework Core中并发问题,按照官网所给并发冲突解决方案以为没有什么问题,但是在做单元测试时发现too young,too siimple,下面我们一起来看看. ...

  3. EntityFramework Core并发导致显式插入主键问题

    前言 之前讨论过EntityFramework Core中并发问题,按照官网所给并发冲突解决方案以为没有什么问题,但是在做单元测试时发现too young,too simple,下面我们一起来看看. ...

  4. 解决mybatisplus saveBatch 或者save 无法插入主键问题

    解决mybatisplus saveBatch 或者save 无法插入主键问题 通过跟踪源码后得出结论,由于插入的表的主键不是自增的,而是手动赋值的,所以在调用saveBatch 执行的sql语句是没 ...

  5. Oracle序列更新为主键最大值

    我们在使用 Oracle 数据库的时候,有时候会选择使用自增序列作为主键.但是在开发过程中往往会遇到一些不规范的操作,导致表的主键值不是使用序列插入的.这样在数据移植的时候就会出现各种各样的问题.当然 ...

  6. oracle插入主键数据、sequence和触发器

    一.创建表:   id number;并设为主键 name VARCHAR2(20 BYTE) 二. 插入数据 2.1 insert into addservice.test_table (id,na ...

  7. SQLServer 自增主键创建, 指定自增主键列值插入数据,插入主键

    http://blog.csdn.net/zh2qiang/article/details/5323981 SQLServer 中含自增主键的表,通常不能直接指定ID值插入,可以采用以下方法插入. 1 ...

  8. 触发器 'SA.U_USER_INFO_TRG' 无效且未通过重新验证--Oracle序列

    程序开发时报错:触发器 'SA.U_USER_INFO_TRG' 无效且未通过重新验证打开触发器的定义,执行其中的语句,发现序列 U_USER_INFO_SEQ 未定义.什么是序列呢?序列相当于sql ...

  9. Oracle序列使用:建立、删除

    转自:http://www.cnblogs.com/WangPB/archive/2010/07/13/1776766.html 在开始讲解Oracle序列使用方法之前,先加一点关于Oracle cl ...

随机推荐

  1. 【实验吧】编程循环&&求底运算

    要好好学写脚本!!! 循环: 题目介绍 给出一个循环公式,对于一个整数n,当n为奇数时,n=3n+1,当n为偶数时,n=n/2,如此循环下去直到n=1时停止. 现要求对两个整数i = 900.j = ...

  2. UVA1589——xiangqi

    开始碰到这个题时觉得太麻烦了直接跳过没做,现在放假了再次看这个题发现没有想象中那么麻烦,主要是题目理解要透彻,基本思路就是用结构体数组存下红方棋子,让黑将军每次移动一下,看移动后是否有一个红方棋子可以 ...

  3. Linux学习-分析登录档

    CentOS 预设提供的 logwatch 不过,要了解系统的状态,还是得要分析整个登录档才行~ 事实上, 目前已经有相当多的登录档分析工具,例如 CentOS 7.x 上面预设的 logwatch ...

  4. SQL_1_简介

    了解一门语言,还是应该从名字开始.SQL中的S即Structured(结构),L即Language(语言),Q即Query(查询),但不仅仅只是查询,还可以建立数据库,添加和删除数据,对数据作联合,当 ...

  5. java处理excel

    JAVA EXCEL API:是一开放源码项目,通过它Java开发人员可以读取Excel文件的内容.创建新的Excel文件.更新已经存在的Excel文件.使用该API非Windows操作系统也可以通过 ...

  6. C遇到的编译错误整理

    1: Permission denied collect2.exe: error: ld returned exit status c:/mingw/bin/../lib/gcc/mingw32/6. ...

  7. 【bzoj2729】[HNOI2012]排队 组合数学+高精度

    题目描述 某中学有 n 名男同学,m 名女同学和两名老师要排队参加体检.他们排成一条直线,并且任意两名女同学不能相邻,两名老师也不能相邻,那么一共有多少种排法呢?(注意:任意两个人都是不同的) 输入 ...

  8. kb-07线段树-03--区间修改查询--lazy思想

    /* 区间修改,区间查询和: 第一次使用lazy思想: poj3468 */ #include<iostream> #include<cstdio> #include<c ...

  9. UVa——540Team Queue(STL练习map、queue数组的综合使用)

    Team Queue Time Limit:                                                        3000MS                 ...

  10. Cannot open include file: 'initializer_list': No such file or directory

    Cannot open include file: 'initializer_list': No such file or directory今天使用VS2012编译一个项目的时候,遇到了这个问题,上 ...