• 课时14:事务提交与不同数据库的自增方式


    .1)事务的提交

      1.手动提交的方式

    SqlSession session=sessionFactory.openSession();//默认值为false  需要手动提交
    //使用commit()方法来提交
    session.commit();

      2.自动提交的方式

    SqlSession session=sessionFactory.openSession(true);

    .2)不同数据库的自增方式

      1.mysql支持自增长的方式

        1.1 所以在添加的时候不需要传入id值 数据库会自动处理

    <insert id="addStudent" parameterType="Student">
            insert into student(stuName,stuAge,graName,stuSex,homeaddress,schooladdress,cardid,classid)
            values(#{stuName},#{stuAge},#{graName},#{stuSex},#{homeaddress},#{schooladdress},
            #{cardid},#{classid}
            )
        </insert>

        1.2 .如何回写呢?(就是增加后返回增加后的id值) 增加完成以后 调用传入的对象.getId()即可拿到回写值

     

    <!--    mysql实现学生头增加-->
        <insert id="addStudent" parameterType="Student" databaseId="mysql" useGeneratedKeys="true" keyProperty="stuno">
            insert into student(stuName,stuAge,graName,stuSex,homeaddress,schooladdress,cardid,classid)
            values(#{stuName},#{stuAge},#{graName},#{stuSex},#{homeaddress},#{schooladdress},
            #{cardid},#{classid}
            )
        </insert>

          1.2.1 useGeneratedKeys:是否开启返回主键id keyProperty:使用什么来接收回写数据

      2.oracle不支持自增长的方式

        2.1 使用序列来模拟自增长

    create sequence myseq increment by 1 strat with 2;

          increment:每次增长数 strat:从什么数开始

        2.2 如何调用序列来完成添加数据自增长

          2.2.1 序列自带的两个属性:nextval:序列中下一个值 currval:当前序列值

          2.2.2 编写sql语句 方式一 并且回写id

    <!--    oracle实现学生增加-->
        <insert id="addStudent" parameterType="Student" databaseId="oracle" >
            <selectKey keyProperty="stuno" resultType="integer" order="BEFORE">
                select myseq.nextval from dual
            </selectKey>
            insert into student(stono,stuName,stuAge)
                values(#{stuno},#{stuName},#{stuAge})
        </insert>

          2.2.3 编写sql语句 方式二 并且回写id

      <insert id="addStudent" parameterType="Student" databaseId="oracle" >
            <selectKey keyProperty="stuno" resultType="integer" order="AFTER">
                select myseq.currval from dual
            </selectKey>
            insert into student(stono,stuName,stuAge)
                values(myseq.nextval,#{stuName},#{stuAge})
        </insert>
  • 相关阅读:
    close connection error java.sql.SQLRecoverableException: IO Error: Broken pipe
    Mysql 备份与恢复
    MACBOOK 破解wifi密码
    MAC 安装homebrew
    Linux(CentOS / RHEL 7) 防火墙
    ORA-01031: insufficient privileges
    Oracle登录认证
    ORA-12162: TNS:net service name is incorrectly specified
    lsnrctl: .... cannot restore segment prot after reloc: Permission denied
    CentOS / RHEL 配置yum源
  • 原文地址:https://www.cnblogs.com/thisHBZ/p/12458238.html
Copyright © 2020-2023  润新知