`
shoppingbill
  • 浏览: 58309 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Ibatis & spring 3 M3

阅读更多
这个例子是我在
http://www.developersbook.com/ibatis/iBatis-tutorials/iBatis-tutorials-2.php看的一个很好例子。
DROP TABLE IF EXISTS `test`.`trade`;
CREATE TABLE `trade` (
  `trade_id` decimal(5,0) NOT NULL,
  `side` varchar(10) NOT NULL,
  `symbol` varchar(6) NOT NULL,
  `shares` decimal(4,0) NOT NULL,
  `price` decimal(4,0) NOT NULL,
  `state` varchar(20) NOT NULL,
  PRIMARY KEY  (`trade_id`)
) ENGINE=InnoDB DEFAULT CHARSET=gb2312;

Trade.java
   package com.developerbook.iBatis.domain;

public class Trade {
    private long tradeId;
    private String action;
    private String symbol;
    private long shares;
    private double price;
    private String state;
    
	public long getTradeId() {
		return tradeId;
	}
	public void setTradeId(long tradeId) {
		this.tradeId = tradeId;
	}
	public String getAction() {
		return action;
	}
	public void setAction(String action) {
		this.action = action;
	}
	public String getSymbol() {
		return symbol;
	}
	public void setSymbol(String symbol) {
		this.symbol = symbol;
	}
	public long getShares() {
		return shares;
	}
	public void setShares(long shares) {
		this.shares = shares;
	}
	public double getPrice() {
		return price;
	}
	public void setPrice(double price) {
		this.price = price;
	}
	public String getState() {
		return state;
	}
	public void setState(String state) {
		this.state = state;
	}
    
	public String toString() {
		return ("TRADE " + tradeId + ": " + action + ", " + symbol + ", "
				+ shares + " shares, $" + price + "/share (" + state + ")");
	}

}


applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
   <bean id="dataSource"
         class="org.apache.commons.dbcp.BasicDataSource"
         destroy-method="close">
         <property name="driverClassName" 
                   value="com.mysql.jdbc.Driver"/>
         <property name="url"
                   value="jdbc:mysql://localhost:3306/test"/>
         <property name="username"
                   value="root"/>
         <property name="password"
                   value="billsxm"/>
   </bean>
   
   <bean id="sqlMap"
         class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
         <property name="configLocation">
            <value>classpath:config/SqlMapConfig.xml</value>
         </property>
         <property name="dataSource" ref="dataSource"/>
   </bean>
   <bean id="tradingService"  
         class="com.developerbook.iBatis.service.TradeServiceImpl">
         <property name="sqlMapClient" ref="sqlMap"/>
   </bean>
</beans>

SqlMapConfig.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMapConfig PUBLIC "-//iBATIS.com//DTD SQL MAP Config 2.0//EN" "http://www.ibatis.com/dtd/sql-map-config-2.dtd">
<sqlMapConfig>
  	<settings useStatementNamespaces="true"/>
	<sqlMap resource="config/TradingSQLMap.xml"/>
</sqlMapConfig>

TradingSQLMap.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMap PUBLIC "-//iBATIS.com//DTD SQL MAP 2.0//EN" "http://www.ibatis.com/dtd/sql-map-2.dtd">
<sqlMap namespace="trading">
  <typeAlias alias="trade" type="com.developerbook.iBatis.domain.Trade"/>
	<cacheModel id="tradeCache" type="LRU" readOnly="true">
		<flushInterval hours="24"/>
		<flushOnExecute statement="trading.executeTrade"/>
		<property name="cache-size" value="1000"/>
	</cacheModel>
  
  <resultMap id="tradeResult" class="trade">
     <result property="tradeId" column="TRADE_ID"/>
     <result property="action" column="SIDE"/>
     <result property="symbol" column="SYMBOL"/>
     <result property="shares" column="SHARES"/>
     <result property="price" column="PRICE"/>
     <result property="state" column="STATE"/>
  </resultMap>
  
  <select id="getTrade" parameterClass="long" resultMap="tradeResult" cacheModel="tradeCache">
     SELECT 
           TRADE_ID,
           SIDE,
           SYMBOL,
           SHARES,
           PRICE,
           STATE
      FROM
           TRADE
      WHERE 
           TRADE_ID = #id#
  </select>
  
  <update id="executeTrade" parameterClass="long">
     UPDATE
           TRADE
     SET
           STATE = 'EXECUTED'
     WHERE 
           TRADE_ID = #id#     
  </update>
  
  <insert id="insertTrade" parameterClass="trade">
     INSERT INTO
           TRADE
                (TRADE_ID,
                 SIDE,
                 SYMBOL,
                 SHARES,
                 PRICE,
                 STATE)
           VALUES
                 (#tradeId#,
                  #action#,
                  #symbol#,
                  #shares#,
                  #price#,
                  #state#)
  </insert>
</sqlMap>

ITrade.java
package com.developerbook.iBatis.service;

import java.sql.SQLException;

import com.developerbook.iBatis.domain.Trade;

public interface ITradeService {
	public Trade getTrade(long tradeId)throws SQLException;
	public void executeTrade(long tradeId)throws SQLException;
	public void insertTrade(Trade trade)throws SQLException;

}

TradeServiceImpl.java
package com.developerbook.iBatis.service;

import java.sql.SQLException;

import com.developerbook.iBatis.domain.Trade;
import com.ibatis.sqlmap.client.SqlMapClient;

public class TradeServiceImpl implements ITradeService {

	protected SqlMapClient sqlMap = null;
	public void setSqlMapClient(SqlMapClient sqlMap){
		this.sqlMap = sqlMap;
	}
	public void executeTrade(long tradeId) throws SQLException {
		sqlMap.update("trading.executeTrade", tradeId);
	}

	public Trade getTrade(long tradeId) throws SQLException {
		return (Trade)sqlMap.queryForObject("trading.getTrade", tradeId);
	}

	public void insertTrade(Trade trade) throws SQLException {
		sqlMap.insert("trading.insertTrade", trade);
	}
 

}

IBatisClient.java
package com.developerbook.iBatis.client;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.developerbook.iBatis.service.ITradeService;

public class IBatisClient {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
      try{
    	  System.out.println("Start IBatisClient...");
    	  System.out.println("=====================");
    	  //load spring beans
    		ApplicationContext ctx = new ClassPathXmlApplicationContext(
			"config/applicationContext.xml");
          System.out.println("Classpath loaded...");
          System.out.println("===================="); 
          ITradeService service = (ITradeService) ctx.getBean("tradingService");
          //get Trade
          int tradeId=1;
          System.out.println("BEFORE: "+service.getTrade(tradeId));
          //update Trade
          service.executeTrade(tradeId);
          System.out.println("AFTER: "+service.getTrade(tradeId));
          System.out.println("=====================");
          System.out.println("Hurry , It is done.!");
      }catch(Exception ex){
    	  ex.printStackTrace();
      }
	}

}
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics