事務(wù)(Transaction)

2018-12-24 22:19 更新

基于YMPv2.0的新特性,JDBC模塊對數(shù)據(jù)庫事務(wù)的處理更加靈活,任何被類對象管理器管理的對象都可以通過@Transaction注解支持事務(wù);

  • @Transaction注解:

    • 參數(shù)說明:

      value:事務(wù)類型(參考JDBC事務(wù)類型),默認為JDBC.TRANSACTION.READ_COMMITTED;

    • 使用方式:

      首先,需要數(shù)據(jù)庫事務(wù)支持的類對象必須聲明@Transaction注解;

      然后,在具體需要開啟事務(wù)處理的類方法上添加@Transaction注解;

  • 事務(wù)示例代碼:

    public interface IUserService {
    
        User doGetUser(String username, String pwd);
    
        boolean doLogin(String username, String pwd);
    }
    
    @Bean
    @Transaction
    public class UserService implements IUserService {
    
        public User doGetUser(final String username, final String pwd) {
            return JDBC.get().openSession(new ISessionExecutor<User>() {
                public User execute(ISession session) throws Exception {
                    Cond _cond = Cond.create().eq("username").param(username).eq("pwd").param(pwd);
                    return session.findFirst(EntitySQL.create(User.class), Where.create(_cond));
                }
            });
        }
    
        @Transaction
        public boolean doLogin(String username, String pwd) {
            User _user = doGetUser(username, pwd);
            if (_user != null) {
                _user.setLastLoginTime(System.currentTimeMillis());
                _user.update();
                //
                return true;
            }
            return false;
        }
    }
    
    @Bean
    public class TransDemo {
    
        @Inject
        private IUserService __userService;
    
        public boolean testTrans() {
            return __userService.doLogin("suninformation", "123456");
        }
    
        public static void main(String[] args) throws Exception {
            YMP.get().init();
            try {
                TransDemo _demo = YMP.get().getBean(TransDemo.class);
                _demo.testTrans();
            } finally {
                YMP.get().destroy();
            }
        }
    }
以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號