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. Python9-进程-day36

    import osfrom multiprocessing import Processimport timedef func(args,args2): print(args,args2) time. ...

  2. MIP启发式算法:遗传算法 (Genetic algorithm)

    *本文主要记录和分享学习到的知识,算不上原创 *参考文献见链接 本文主要讲述启发式算法中的遗传算法.遗传算法也是以local search为核心框架,但在表现形式上和hill climbing, ta ...

  3. Python虚拟机之if控制流(一)

    Python虚拟机中的if控制流 在所有的编程语言中,if控制流是最简单也是最常用的控制流语句.下面,我们来分析一下在Python虚拟机中对if控制流的实现 # cat demo.py a = 1 i ...

  4. Django Form two

    Django_Form: 1.class TeacherNewForm(Form): username = fields.CharField( required=True, error_message ...

  5. Policy-Based Reinforcement Learning

    Policy-based Approach policy-based 强化学习通常是要学习一个actor, actor可以用\(\pi_\theta (S)\) 来确定.如果我们用actor来玩游戏, ...

  6. java作业 4

    public class dog { /**  * @param args  */ public static void main(String[] args) {  // TODO Auto-gen ...

  7. Kafka单机配置部署

    摘要:上节 学习了Kafka的理论知识,这里安装单机版以便后续的测试. 首先安装jdk 一.单机部署zk 1.1安装: tar -zxf zookeeper-3.4.10.tar.gz -C /opt ...

  8. kb-07线段树--10--dfs序建树

    /* hdu3974 dfs序建树,然后区间修改查询: */ #include<iostream> #include<cstdio> #include<cstring&g ...

  9. Eclipse + Apache Axis2 发布RESTful WebService(二)配置开发环境

    1. 下载axis2相关软件地址:http://axis.apache.org/axis2/java/core/download.html 2. 安装插件:将axis2-eclipse-codegen ...

  10. Static相关

    [理解] 说到static,脑中浮现的几个Key Words是什么? main 类 唯一空间 所有对象共享 static只能处理static 很好,解释一下上面的意思: main static fie ...