课时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>