码迷,mamicode.com
首页 > 其他好文 > 详细

MyBatis - 事务

时间:2015-12-07 14:00:45      阅读:125      评论:0      收藏:0      [点我收藏+]

标签:

应用场景:

  实际的业务场景为:设置用户默认地址操作,一个用户有只能有一个默认地址,用户在多个地址中只能选择一个,表中的字段是is_default,所以当用户设置默认地址的时候,实际的执行的sql为:

update user_address set is_default=0,update_at=now() where user_id=#{user_id} and is_default=1
update user_address set is_default=1,update_at=now() where user_id=#{user_id} and address_id=#{address_id}

 

我使用user表来模拟此操作:我们假定用户表中的age字段值只有一个能为1,其他都为0,当设置某个用户的age=1是,要将其他为1的重置为0。

@Test
public void test_tranc() {
    int id = 2;
    SqlSession session = MybatisUtil.instance.getSqlSessionFactoryW().openSession();
    Map<Object, Object> map = new HashMap<>();
    map.put("id", id);
    try {
        session.update("user!update_user_default_reset", map);
        session.update("user!update_user_default_set", map);
        session.commit();
    } catch (Exception e) {
        System.out.println(" 事务回滚.....");
        session.rollback();// 事务回滚
        e.printStackTrace();
    } finally {
        session.close();
    }
    System.out.println(">> 更新完成。");
}

配置文件:

<?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="bean.domain.UserEntity">

    <resultMap id="BaseResultMap" type="bean.domain.UserEntity">
        <id column="id" property="id" jdbcType="INTEGER" />
        <result column="name" property="name" jdbcType="VARCHAR" />
        <result column="age" property="age" jdbcType="INTEGER" />
    </resultMap>

    <sql id="Base_Column_List">
        id, name, age
    </sql>
    <!-- ===============================事务====================================== -->
    <update id="user!update_user_default_reset" parameterType="map">
        update user set age = 0 where age = 1;
    </update>
    <update id="user!update_user_default_set" parameterType="map">
        update user set age = 1 where id = #{id}
    </update>
</mapper>

 

 

MyBatis - 事务

标签:

原文地址:http://www.cnblogs.com/zhoulf/p/5025787.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!