`
shoppingbill
  • 浏览: 59672 次
  • 性别: 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();
      }
	}

}
分享到:
评论

相关推荐

    iBATIS&Spring合奏(一)--DAO

    标题中的“iBATIS&Spring合奏(一)--DAO”指的是在Java开发中,将iBATIS和Spring框架结合使用来实现数据访问层(DAO)的一种技术整合。iBATIS是一个优秀的持久层框架,它允许开发者将SQL语句直接写在配置文件中,提供...

    iBATIS&Spring合奏(二)--Flex前端融合

    在“iBATIS&Spring合奏(二)--Flex前端融合”中,博主Yunshen0909分享了关于如何在Java Web应用中结合使用这两种技术,特别是如何与Flex前端进行集成,以提升用户体验。 首先,iBATIS是一个持久层框架,它简化了...

    ibatis 与spring3整合

    "Ibatis 与 Spring3 整合"这一主题,涉及到的是两个知名Java框架——Ibatis(一个轻量级的持久层框架)和Spring(一个全面的企业级应用框架)的协同工作。下面我们将深入探讨这一整合过程中的关键知识点。 Ibatis ...

    ibatis与spring整合

    ### ibatis与Spring框架整合详解 #### 一、ibatis简介 ibatis是一个开源的、基于Java的持久层框架,它提供了SQL映射的方式来进行数据库访问。与Hibernate等其他ORM框架相比,ibatis更加轻量级,对于那些只需要简单...

    struts2+spring3+ibatis项目整合案例

    Struts2、Spring3和iBATIS是Java Web开发中常用的三大框架,它们各自负责不同的职责,协同工作可以构建出高效、松耦合的Web应用。在这个“struts2+spring3+ibatis项目整合案例”中,我们将深入探讨这三个框架如何...

    iBatis和Spring整合

    iBatis和Spring整合 iBatis和Spring整合

    ibatis+Spring demo

    内容包里面是源代码,运行该例子的方式就是,使用里面的sql...使用cmd进入该解压包,运行 java -jar *.jar ibatis2spring.jar 就可以了。欲了解代码的详细,请访问作者博客,搜索《ibatis + Spring 多表查询》文章。

    Struts2+iBATIS+Spring整合

    Struts2+iBATIS+Spring整合是Java Web开发中一种常见的技术栈组合,这三种框架协同工作,可以构建出高效、灵活的企业级应用。Struts2作为MVC(Model-View-Controller)架构的一部分,主要负责处理HTTP请求,管理前端...

    struts2+ibatis+spring 安例

    3. **配置iBatis**:创建MyBatis的全局配置文件(mybatis-config.xml),以及各数据表对应的Mapper XML文件,编写SQL语句。 4. **整合Struts2与Spring**:通过Struts2的Spring插件,将Action类声明为Spring的Bean,...

    ibatis_spring源代码

    3. **Mapper配置**:`iBatis`的Mapper接口和XML配置文件定义了数据库操作。在`Spring`中,这些Mapper可以作为`@Repository`注解的bean进行管理,通过`@Autowired`注入到需要使用的地方。这样,我们就可以在业务逻辑...

    Spring高版本对ibatis的支持

    最近想在最新的Spring5.0中集成ibatis(不是mybatis),发现已经不在支持SqlmapClientTemplate和SqlmapClientFactoryBean,于是搞了这个工具jar来进行支持如下配置 &lt;bean id="sqlMapClient" class="org.spring...

    ibatis与spring的整合

    在整合iBATIS和Spring的过程中,主要目标是利用Spring的IOC(Inversion of Control)容器来管理和协调数据访问层(DAO)以及事务处理,同时利用iBATIS作为SQL映射框架,提供灵活的数据库操作。以下将详细阐述整合的...

    ibatis & struts 2.0详细介绍

    3. **配置ibatis**:创建SqlMapConfig.xml,定义数据源、事务管理器和映射文件的位置。 4. **创建Mapper接口和XML映射文件**:定义Mapper接口,其中的方法对应SQL操作,XML文件中编写具体的SQL语句。 5. **Action中...

    Ibatis+Spring+struts1框架搭建

    【标题】:Ibatis+Spring+Struts1框架搭建 在Web开发中,Ibatis、Spring和Struts1是三个非常重要的组件,它们分别负责不同的职责。Ibatis是一个优秀的持久层框架,Spring是一个全面的后端应用框架,而Struts1则是一...

    struts1+ibatis+Spring demo

    3. 配置Spring:在applicationContext.xml中声明Bean,包括Action、DAO、Service等,配置数据源、事务管理器,以及Struts1和iBatis的插件。 4. 将Struts1和Spring结合:使用Spring的StrutsPlugIn,让Spring管理...

    backbone+bootstrap+ibatis+spring例子

    `Backbone.js`、`Bootstrap`、`iBatis` 和 `Spring` 是四个非常关键的技术组件,它们分别在前端架构、用户界面、数据库操作和后端服务方面发挥着重要作用。下面将详细介绍这些技术及其在"backbone+bootstrap+ibatis+...

    iBATIS_Spring_struts_demo.rar_DEMO_Struct spring ibatis_ibatis j

    标题中的“iBATIS_Spring_struts_demo.rar_DEMO_Struct spring ibatis_ibatis j”表明这是一个关于集成iBATIS、Spring和Struts的演示项目。这个DEMO旨在展示如何在Java应用中有效地整合这三个框架,从而实现数据持久...

    ibatis-spring学习

    【ibatis-spring学习】 在Java Web开发领域,iBatis和Spring是两个非常重要的框架。iBatis是一个优秀的持久层框架,它简化了数据库操作,而Spring则是一个全面的后端开发框架,提供了依赖注入、事务管理等功能。将...

    ibatis+spring整合

    在Java开发领域,Ibatis和Spring是两个非常重要的框架,它们各自在数据访问和应用上下文管理方面发挥着重要作用。Ibatis是一个轻量级的SQL映射框架,它允许开发者将SQL语句直接写在配置文件中,避免了传统的DAO层...

Global site tag (gtag.js) - Google Analytics