Oracle使用随机函数newid()作为主键,插入后返回主键id

主要就是用

<selectKey resultType="java.lang.String" keyProperty="id" order="BEFORE">
            SELECT newid() from dual
        </selectKey>

再插入之前获取新的id,插入的时候插入本条获取的id ( #{id})
之后service层调用mapper插入成功之后,Dept对象里就会有对应的id,可直接获取。

<!-- 插入一条机构信息 -->
    <insert id="insertOne" parameterType="cn.wwkj.pms.basis.entity.po.Dept">
        <selectKey resultType="java.lang.String" keyProperty="id" order="BEFORE">
            SELECT newid() from dual
        </selectKey>
        insert into sys_dept
        <trim prefix="(" suffix=")" suffixOverrides=",">
            id,
            code,
            name,
            type_id,
            pid,
            year,
            idx,
            <if test="remark != null and remark != ''">
                remark
            </if>
        </trim>
        <trim prefix="values (" suffix=")" suffixOverrides=",">
            #{id},
            #{code},
            #{name},
            #{typeId},
            #{pid},
            #{year},
            #{idx},
            <if test="remark != null and remark != ''">
                #{remark},
            </if>
        </trim>
    </insert>

实际运用:
mapper接口:

Integer add(ProjectPreBill projectPreBill);

mapper.xml:

<!--添加-->
    <insert id="add" parameterType="cn.wwkj.pms.predict.entity.po.ProjectPreBill">
        <selectKey resultType="java.lang.String" keyProperty="id" order="BEFORE">
            SELECT newid() from dual
        </selectKey>
        insert into PROJ_PRE_BILL(ID,PROJ_ID,CODE,NAME,EN_ID,EN_PID,BS_ID,BSG_ID,BSI_ID,PCT_ID,PTT_ID,PGT_ID,MU_ID,B_DATE,E_DATE,MANAGER,CONTACT,TEL,ADDR,CU_ID,YEAR,BGOV,BCITY)
        values(#{id},#{projId},#{code},#{name},#{enId},#{enPid},#{bsId},#{bsgId},#{bsiId},#{pctId},#{pttId},#{pgtId},#{muId},#{bDate},#{eDate},#{manager},#{contact},#{tel},#{addr},#{cuId},#{year},#{bgov},#{bcity})
    </insert>

service调用:插入成功会输出id

 @Override
    public Integer add(ProjectPreBill projectPreBill) {
        int row = projectPreBillMapper.add(projectPreBill);
        System.out.print(projectPreBill);
        return row;
    }

版权声明:本文为weixin_43996168原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。