zoukankan      html  css  js  c++  java
  • Spring事务(买股票示例)

    结构图:

    entity:

    dao

    接口:

    public interface IAccountDAO {
    //改变账户余额
    public void UpdateAccount(int aid,int abalance,boolean isBuy);
    }


    public interface IStockDAO {
    //改变股票股数的方法
    public void updateStock(int sid,int scount,boolean isBuy);
    }




    实现类:
    public class AccountDAOImpl extends JdbcDaoSupport implements IAccountDAO {

    public void UpdateAccount(int aid, int abalance, boolean isBuy) {
    String sql="";
    if (isBuy){
    //购买股票
    sql="update account set balance=balance-? where aid=?";
    }else{
    //出售股票
    sql="update account set balance=balance+? where aid=?";
    }

    int update = this.getJdbcTemplate().update(sql, abalance, aid);
    }
    }







    public class StockDAOImpl extends JdbcDaoSupport implements IStockDAO {

    public void updateStock(int sid, int scount, boolean isBuy) {
    String sql="";
    if (isBuy){
    //购买股票
    sql="update Stock set count=count+? where sid=?";
    }else{
    //出售股票
    sql="update Stock set count=count-? where sid=?";
    }

    int update = this.getJdbcTemplate().update(sql,scount,sid);
    }
    }
     

    service:

    接口:

    public interface IStockService {
    public void buyStock(int aid,int abalance,int sid,int scount) throws StockException;
    }



    实现类:
    public class StockServiceImpl implements IStockService{
    //植入两个dao
    private IStockDAO stockDAO;
    private IAccountDAO accountDAO;

    public void buyStock(int aid, int abalance, int sid, int scount) throws StockException {
    //购买股票 买入和卖出
    Boolean isBuy=true;
    accountDAO.UpdateAccount(aid,abalance,isBuy);
    /* int result=4/0;//运行时出错*/
    if(1==1) {
    throw new StockException("出异常");
    }
    stockDAO.updateStock(sid,scount,isBuy);
    }
    public IStockDAO getStockDAO() {
    return stockDAO;
    }

    public void setStockDAO(IStockDAO stockDAO) {
    this.stockDAO = stockDAO;
    }

    public IAccountDAO getAccountDAO() {
    return accountDAO;
    }

    public void setAccountDAO(IAccountDAO accountDAO) {
    this.accountDAO = accountDAO;
    }
    }




    xml++++++++++++++++++++++===applocationContextday17Stock.xml:
     <!--druid-->
    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
    <property name="driverClassName" value="${jdbc.driverClassName}"></property>
    <property name="url" value="${jdbc.url}"></property>
    <property name="username" value="${jdbc.username}"></property>
    <property name="password" value="${jdbc.password}"></property>
    </bean>
    <!--2.识别到jdbc.properties文件-->
    <!--配置1:-->
    <context:property-placeholder location="classpath:jdbc.properties"></context:property-placeholder>
    <!--4.DAO-->
    <bean id="accountDAO" class="cn.happy.day17Account.dao.impl.AccountDAOImpl">
    <property name="dataSource" ref="dataSource"></property>
    </bean>
    <bean id="stockDAO" class="cn.happy.day17Account.dao.impl.StockDAOImpl">
    <property name="dataSource" ref="dataSource"></property>
    </bean>
    <!--5.service id-->
    <bean id="stockService" class="cn.happy.day17Account.service.impl.StockServiceImpl">
    <property name="AccountDAO" ref="accountDAO"></property>
    <property name="StockDAO" ref="stockDAO"></property>
    </bean>
    <!--事务:事务管理器-->
    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    <property name="dataSource" ref="dataSource"></property>
    </bean>
    <!--事务控制 事务代理工厂bean-->
    <bean id="stockDAOServiceProxy" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
    <property name="transactionManager" ref="transactionManager"></property>
    <property name="target" ref="stockService"></property>

    <!--事务属性-->
    <property name="transactionAttributes">
    <props>
    <prop key="buyStock">ISOLATION_DEFAULT,PROPAGATION_REQUIRED,-StockException</prop>
    </props> </property> </bean>

    测试类:
    public class Test01StockAccount {
    @Test
    /*买股票*/
    public void test01(){

    ApplicationContext context=new ClassPathXmlApplicationContext("applocationContextday17Stock.xml");
    IStockService service=(IStockService) context.getBean("stockDAOServiceProxy");
    try{
    service.buyStock(3,1000,35,10);
    }catch(Exception exception){
    exception.printStackTrace();
    }

    }

    }
    
    
  • 相关阅读:
    python爬虫实战(八)--------知乎
    python爬虫实战(七)--------伯乐在线文章(模版)
    python分布式爬虫打造搜索引擎--------scrapy实现
    VS2010与SVN
    ASP.net 自定义控件GridView
    Asp.net Ajax提供PageMethods调用
    JSON串行化
    JOSN反串行化
    WebRequestManager对象的使用
    WebRequest调用
  • 原文地址:https://www.cnblogs.com/yfyfyff/p/7716677.html
Copyright © 2011-2022 走看看