/** JDBC事务代理工厂

本文介绍了一个使用JDBC实现的事务代理工厂类,该类通过Spring管理的数据源进行数据库操作,并利用TransactionTemplate来管理事务。文章展示了如何在一个事务中执行多个数据库更新操作,并确保这些操作的原子性。


/**
 JDBC事务代理工厂
 */
@SuppressWarnings({"rawtypes", "unchecked"})
public class WalletTransactionFactory {
@Resource(name = "jdbcTemplateC3p0MySQLAgent")
public JdbcTemplate jdbcTemplateC3p0MySQLAgent;


public static final ThreadLocal threadLocal = new ThreadLocal();   
      
    private DataSourceTransactionManager txManager;  
private TransactionTemplate transactionTemplate;  
    private JdbcTemplate jdbcTemplate;
    private String userId;
    private Map<String, String> map;  
    
    public WalletTransactionFactory(String userId) {
    this.userId=userId;
    jdbcTemplate= SpringBeanFactory.getBean("jdbcTemplateC3p0MySQLIwl", JdbcTemplate.class);
    DataSource dataSource = jdbcTemplate.getDataSource();  
        txManager = new DataSourceTransactionManager(dataSource);     
        transactionTemplate = new TransactionTemplate(txManager );    
        threadLocal.set(dataSource);  
    }  
    public WalletTransactionFactory(Map<String, String> map){
    this.map=map;
    jdbcTemplate= SpringBeanFactory.getBean("jdbcTemplateC3p0MySQLIwl", JdbcTemplate.class);
    DataSource dataSource = jdbcTemplate.getDataSource();  
        txManager = new DataSourceTransactionManager(dataSource);     
        transactionTemplate = new TransactionTemplate(txManager );    
        threadLocal.set(dataSource);
    }
      
    //删除普通会员
    public boolean service() {
    Object object=
        transactionTemplate.execute(new TransactionCallback(){
            public Object doInTransaction(TransactionStatus transactionStatus) {
            //调用具体业务操作服务方法  
            System.out.println("批量操作,如果出错会全部自动回滚....");
            int consumptionStatus=0;
            int walletStatus=0;int drivingStatus=0;int carStatus=0;int enterpriseStatus=0;
            int basicStatus=0;int userStatus=0;
            try{
            consumptionStatus=jdbcTemplate.update("delete from iwl_consumption_detail where user_id="+userId);
            walletStatus=jdbcTemplate.update("delete from iwl_my_wallet where user_id="+userId);
            walletStatus=jdbcTemplate.update("delete from iwl_my_wallet where user_id="+userId);
            drivingStatus=jdbcTemplate.update("delete from iwl_driving_in_formation where user_id="+userId);
            carStatus=jdbcTemplate.update("delete from iwl_car_source where user_id="+userId);
            enterpriseStatus=jdbcTemplate.update("delete from iwl_enterprise_information where user_id="+userId);
            basicStatus=jdbcTemplate.update("delete from iwl_user_basic_in_formation where user_id="+userId);
            userStatus=jdbcTemplate.update("delete from iwl_user where id="+userId);
                return true;
            }
            catch(Exception e){
            transactionStatus.setRollbackOnly();
                System.out.println("walletStatus"+walletStatus+"drivingStatus"+drivingStatus+"carStatus"+carStatus+"enterpriseStatus"+enterpriseStatus+"basicStatus"+basicStatus+"userStatus"+userStatus);
            System.out.println("更新failure");
            return false; 
            }
           
            }     
        });    
    boolean b=(Boolean)object;
    System.out.println("service"+b);
    return b;
    }  
    
    
    
      
}  
提供了一个基于51单片机的RFID门禁系统的完整资源文件,包括PCB图、原理图、论文以及源程序。该系统设计由单片机、RFID-RC522频射卡模块、LCD显示、灯控电路、蜂鸣器报警电路、存储模块和按键组成。系统支持通过密码和刷卡两种方式进行门禁控制,灯亮表示开门成功,蜂鸣器响表示开门失败。 资源内容 PCB图:包含系统的PCB设计图,方便用户进行硬件电路的制作和调试。 原理图:详细展示了系统的电路连接和模块布局,帮助用户理解系统的工作原理。 论文:提供了系统的详细设计思路、实现方法以及测试结果,适合学习和研究使用。 源程序:包含系统的全部源代码,用户可以根据需要进行修改和优化。 系统功能 刷卡开门:用户可以通过刷RFID卡进行门禁控制,系统会自动识别卡片并判断是否允许开门。 密码开门:用户可以通过输入预设密码进行门禁控制,系统会验证密码的正确性。 状态显示:系统通过LCD显示屏显示当前状态,如刷卡成功、密码错误等。 灯光提示:灯亮表示开门成功,灯灭表示开门失败或未操作。 蜂鸣器报警:当刷卡或密码输入错误时,蜂鸣器会发出报警声,提示用户操作失败。 适用人群 电子工程、自动化等相关专业的学生和研究人员。 对单片机和RFID技术感兴趣的爱好者。 需要开发类似门禁系统的工程师和开发者。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值