ibatis中自增长主键插入更新要注意的问题

    由于对于不同的数据库,其自增长主键的生成方式不同,oracle是预生成,而sqlserver和mysql是后生成的,所以,使用ibatis对库表做这样的操作是,一定要注意这一天,ibatis中selectKey是支持预生成和后生成的,只要对select的属性type设定pre或者post即可,在sql语句中,如果是oracle数据库,那么就要将selectKey生成的sequence放到sql语句中,如果是mysql/sqlserver,就不需要将selectKey生成的sequence放到sql中了

 

例子:

1.oracle中:

        <insert id="abatorgenerated_insert" parameterClass="com.hydex.model.usermanager.User" >
            <selectKey resultClass="java.lang.Integer" type="pre" keyProperty="userID" >
            select seq_t_user.nextval val from dual
            </selectKey>
            insert into WORKFLOW.T_USER (USERID,USERNAME,TELEPHONE) values (#userID#,#userName#,#telephone#)

       </insert>

2.mysql:

       <insert id="abatorgenerated_insert" parameterClass="com.hydex.model.usermanager.User" >
            insert into WORKFLOW.T_USER (USERNAME,TELEPHONE) values (#userName#,#telephone#)

            <selectKey resultClass="java.lang.Integer" type="post" keyProperty="userID" >
            select seq_t_user.nextval val from dual
            </selectKey>

       </insert>

你可能感兴趣的:(oracle,sql,mysql,ibatis,workflow)