`

Spring+Ibatis完整配置文件

阅读更多
我提供一个实例:

数据库是MYSQL , 数据源是C3P0 , 

-----------
1) 建表语句 :

----------------
DROP TABLE IF EXISTS book ;

CREATE TABLE book(
 id int(11) NOT NULL auto_increment COMMENT 'primary key',
    name varchar(60) default NULL COMMENT 'book name',                             
    PRIMARY KEY  (`id`)                                                         
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='my book table';

----------------
注意了,在MYSql 中 表的引擎一定要用InnoDB ,如果用MyISAM 的话,是不支持事务的。

2) JAVA Bean
Book.java

-------------------
package com.spring.demo.bean;

import java.io.Serializable;

public class Book implements Serializable {
 
 public Book(){}
 
 public Book(String name){
  this.name = name;
 }
 
 /**
  * ID
  */
 private Integer id ;
 
 /**
  * 书名
  */
 private String name ;

// getter and setter 
 public Integer getId() {
  return id;
 }

 public void setId(Integer id) {
  this.id = id;
 }

 public String getName() {
  return name;
 }

 public void setName(String name) {
  this.name = name;
 }

}

-------------------

3)Book.xml 配置
---------------------
<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN"
   "http://ibatis.apache.org/dtd/sql-map-2.dtd">

<sqlMap namespace="Book" >

 <typeAlias alias="book" type="com.spring.demo.bean.Book"/>
 
 <resultMap id="result_map_book" class="book" >
  <result property="id"   column="id"  javaType="integer"/>
  <result property="name"  column="name"  javaType="string"/>
 </resultMap>

<insert id="insertBook" parameterClass="book">
  insert book(name) values(#name#)
 </insert>
 
 <update id="updateBook" parameterClass="book">
  update book set name=#name# where id=#id#
 </update>
 
 <delete id="deleteBook" parameterClass="int">
  delete from book where id=#value#
 </delete>

<select id="selectBookById" parameterClass="int" resultMap="result_map_book">
  select id , name from book where id=#value#
 </select>

<select id="selectBookByName" parameterClass="string" resultMap="result_map_book">
  select id , name from book where name like #value#
 </select>

</sqlMap>
---------------------

4)spring 的 applicationContext.xml 

---------------
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd">

<beans>
 <!-- 引入参数配置文件 -->
 <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
  <property name="locations">
   <list>
    <value>jdbc.properties</value>
   </list>
  </property>
 </bean>
 
 <!-- 配置数据源  -->
 <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
  <property name="driverClass"><value>${jdbc.driverClass}</value></property>
  <property name="jdbcUrl"><value>${jdbc.url}</value></property>
  <property name="user"><value>${jdbc.user}</value></property>
  <property name="password"><value>${jdbc.password}</value></property>
  <property name="initialPoolSize"><value>${jdbc.initialPoolSize}</value></property>
  <property name="minPoolSize"><value>${jdbc.minPoolSize}</value></property>
  <property name="maxPoolSize"><value>${jdbc.maxPoolSize}</value></property>
 </bean>

<!-- 事务管理器 -->
 <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> 
  <property name="dataSource"> 
   <ref local="dataSource"/> 
  </property> 
 </bean> 

<!-- 事务代理拦截器的配置 -->
 <bean id="baseTransactionProxy" abstract="true" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
  <property name="transactionManager">
   <ref bean="transactionManager" />
  </property>
  <property name="transactionAttributes">
   <props>
    <prop key="insert*">PROPAGATION_REQUIRED</prop>
    <prop key="update*">PROPAGATION_REQUIRED</prop>
    <prop key="delete*">PROPAGATION_REQUIRED</prop>
    <prop key="*">PROPAGATION_REQUIRED,readOnly</prop>
   </props>
  </property>
 </bean>

<!-- ibatis sqlMapClient 配置 -->
 <bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
        <property name="configLocation">
            <value>classpath:sqlMapConfig.xml</value>
        </property>
        <property name="dataSource">
            <ref bean="dataSource"/>
        </property>    
    </bean>

<!-- dao配置 -->
 <bean id="ibatis_BookDao" class="com.spring.demo.dao.Ibatis_BookDao">
  <property name="sqlMapClient" >
   <ref bean="sqlMapClient"/>
  </property>
 </bean>

<!-- 添加了事务的管理类 -->
 <bean id="ibatis_BookManager" parent="baseTransactionProxy">
  <property name="target">
   <bean class="com.spring.demo.manager.Ibatis_BookManager">
    <property name="dao">
     <ref bean="ibatis_BookDao"/>
    </property>
   </bean>
  </property>
 </bean>

</beans>

---------------

5) 数据源参数配置文件:jdbc.properties 
 【说明 :按照你的具体情况来配置】:
------------
jdbc.driverClass=com.mysql.jdbc.Driver

jdbc.url=jdbc:mysql://localhost:3306/springdemo?useUnicode=true&characterEncoding=utf-8

jdbc.user=root

jdbc.password=root

jdbc.initialPoolSize=1

jdbc.minPoolSize=1

jdbc.maxPoolSize=10
------------

6) IBATIS 的初始化配置 sqlMapConfig.xml
------------
<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE sqlMapConfig      
       PUBLIC "-//ibatis.apache.org//DTD SQL Map Config 2.0//EN"      
       "http://ibatis.apache.org/dtd/sql-map-config-2.dtd">

<sqlMapConfig>

     <settings  useStatementNamespaces="true" />
     
     <sqlMap resource="com/spring/demo/bean/Book.xml"/>

</sqlMapConfig>
------------

配置完毕,下面是DAO 和 测试方法:

Ibatis_BookDao.java
----------------
package com.spring.demo.dao;

import java.util.List;

import org.springframework.orm.ibatis.support.SqlMapClientDaoSupport;
import com.spring.demo.bean.Book;

public class Ibatis_BookDao extends SqlMapClientDaoSupport {

/**
  * 添加一本书
  * @param book
  */
 public void insertBook(Book book){
  this.getSqlMapClientTemplate().insert("Book.insertBook", book);
 }

/**
  * 修改一本书
  * @param book
  */
 public void updateBook(Book book){
  this.getSqlMapClientTemplate().update("Book.updateBook", book);
 }

/**
  * 根据ID来删除一本书
  * @param id
  */
 public void deleteBook(Integer id){
  this.getSqlMapClientTemplate().delete("Book.deleteBook", id);
 }

/**
  * 根据ID来查询书对象
  * @param id
  * @return
  */
 public Book selectBookById(Integer id){
  return (Book)this.getSqlMapClientTemplate().queryForObject("Book.selectBookById", id);
 }

/**
  * 根据书名来查询相关书记录列表
  * @param name
  * @return
  */
 public List selectBookByName(String name){
  return this.getSqlMapClientTemplate().queryForList("Book.selectBookByName", "%"+name+"%" );
 }

}

----------------

Ibatis_BookManager.java
-------------------
package com.spring.demo.manager;

import java.util.List;

import com.spring.demo.bean.Book;
import com.spring.demo.dao.Ibatis_BookDao;

public class Ibatis_BookManager {
 
 private Ibatis_BookDao dao = null ;

/**
  * 批量添加书本,如果列表长度超过3,就抛出异常
  * @param books
  */
 public void insertBooks(List books){
  
  for(int i=0 ; i<books.size() ;i++){ 
   if(i>2){
    System.out.println("列表太长,中断事务");
    throw new RuntimeException("中断事务异常,当列表长度大于3的时候故意抛出,看看事务是否回滚");
   }
   Book book = (Book)books.get(i);
   dao.insertBook(book);
  }
 }

/**
  * 添加一本书
  * @param book
  */
 public void insertBook(Book book){
  this.dao.insertBook(book);
 }

/**
  * 修改一本书
  * @param book
  */
 public void updateBook(Book book){
  this.dao.updateBook(book);
 }

/**
  * 根据ID来删除一本书
  * @param id
  */
 public void deleteBook(Integer id){
  this.dao.deleteBook(id);
 }

/**
  * 根据ID来查询书对象
  * @param id
  * @return
  */
 public Book selectBookById(Integer id){
  return this.dao.selectBookById(id);
 }

/**
  * 根据书名来查询相关书记录列表
  * @param name
  * @return
  */
 public List selectBookByName(String name){
  return this.dao.selectBookByName(name);
 }

// getter and setter //
 public Ibatis_BookDao getDao() {
  return dao;
 }

 public void setDao(Ibatis_BookDao dao) {
  this.dao = dao;
 }
-------------------

测试类:

IbatisDemo.java
------------------
package com.spring.demo;

import java.util.ArrayList;
import java.util.List;

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

import com.spring.demo.bean.Book;
import com.spring.demo.manager.Ibatis_BookManager;
import com.spring.demo.manager.Jdbc_BookManager;

public class IbatisDemo {

 /**
  * @param args
  */
 public static void main(String[] args) {
  
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml") ;
  
  Ibatis_BookManager manager = (Ibatis_BookManager)context.getBean("ibatis_BookManager");
  
  List books = new ArrayList();

books.add(new Book("book_10"));
  books.add(new Book("book_11"));
  books.add(new Book("book_12"));
  books.add(new Book("book_13"));
  manager.insertBooks(books);
  
  System.out.println("OK");

 }

}
------------------

说明:MYSQL 的事务完整性我是测试过的。
之前有个朋友吧数据库换成 SQL SERVER 的时候事务完整性就出现问题。
这个问题有待研究。

 

分享到:
评论

相关推荐

    Struts2+Spring+Hibernate和Struts2+Spring+Ibatis

    4. **Ibatis**:与Hibernate相比,Ibatis更轻量级,它将SQL语句直接写在配置文件或Java代码中,提供了更灵活的控制。Ibatis更适合那些需要对SQL有高度定制需求的项目。 在`stm-ssh`和`SSHdemo`中,可能包含的是...

    struts2+spring+Ibatis框架包

    总的来说,这个"struts2+spring+iBatis框架包"提供了从用户界面到数据库的完整解决方案,简化了开发流程,提高了代码的可维护性和可测试性。在实际开发中,开发者可以根据需求进一步定制和扩展这三个框架的功能,以...

    maven搭建SpringMVC+spring+ibatis

    首先,Maven是一个项目管理和综合工具,它通过一个配置文件(pom.xml)管理项目的依赖关系,构建流程,以及打包和部署等任务。使用Maven,你可以轻松地导入和管理所需的库,避免了手动下载和配置的繁琐过程。Maven的...

    spring+ibatis配置实例

    "spring+ibatis配置实例"这个项目提供了一个完整的开发环境,包含所需的依赖包和标准化的项目结构,对初学者或开发者来说极具价值。 Spring是一个全面的Java应用框架,它提供了依赖注入(Dependency Injection,DI...

    struts+spring+ibatis做的一个增删改查例子

    它提供了一套完整的请求处理机制,包括Action类、ActionForm、配置文件(struts-config.xml)等组件,使得开发者能够更方便地组织和管理应用程序的业务逻辑。 **Spring** 是一个全面的后端应用框架,它提供了依赖...

    struts+spring+ibatis的Demo

    1. **配置文件**:如struts.xml、spring配置文件(可能包含applicationContext.xml和struts-spring.xml)、ibatis的配置文件(sqlMapConfig.xml)。 2. **实体类(Entity)**:表示数据库中的表结构。 3. **Mapper...

    springmvc3+spring+ibatis完整项目可直接运行

    本项目是一个完整的Spring MVC 3、Spring 3 和 iBATIS 集成示例,可以直接运行,帮助开发者快速理解和实践这三者之间的协作。 Spring MVC 是 Spring 框架的一部分,它作为一个轻量级的MVC(Model-View-Controller)...

    spring+struts2+ibatis整合的jar包

    为了成功地使用这个jar包,开发者需要确保项目的类路径包含了这些库,并且正确配置了Spring、Struts2和iBatis的配置文件。 总的来说,Spring、Struts2和iBatis的整合为Java Web开发提供了一个强大、灵活的解决方案...

    webwork+spring+ibatis很适合初学者的实例

    4. **Spring配置**:创建Spring配置文件,配置Bean、DataSource、TransactionManager等。 5. **iBATIS配置**:设置SqlMapConfig.xml文件,配置数据源、SQL映射文件路径等。 6. **WebWork配置**:配置web.xml,设置...

    spring+ibatis+oracle分页缓存源码

    通过配置XML映射文件或注解,iBatis能够将Java对象与数据库表进行映射,方便数据的增删改查操作。 Oracle数据库是一个强大的关系型数据库管理系统,广泛用于企业级应用。在分页查询场景下,Oracle提供了一系列优化...

    Spring+Struts+ibatis讲解

    Spring框架的核心配置文件,如`DefaultContext.xml`,用于定义Bean的声明、依赖注入以及事务管理等。例如,这里可能会配置Service和DAO的Bean,以及相关的数据源、事务管理器等。 四、Ibatis配置: 1. `ibatis-...

    Struts+Spring+Ibatis示例

    - `spring` 目录:包含Spring的配置文件和bean定义。 - `ibatis` 目录:包含iBatis的映射文件和Mapper接口。 - `webapp` 目录:Web应用的根目录,含有JSP页面和其他静态资源。 通过分析这个示例,开发者可以学习到...

    Spring+ibatis 保留ibatis事务的配置

    ibatis配置文件中,可以看到关于ibatis事务管理器的配置。这里设置事务管理器类型为JDBC,表示ibatis将直接使用底层的JDBC连接进行事务控制,而不是使用Spring提供的事务管理器。 ```xml ``` ...

    struts+spring+ibatis框架

    iBatis将数据访问逻辑封装在XML配置文件或注解中,通过SQL映射文件来定义SQL语句,然后通过Java接口或Mapper来执行这些SQL。这种方式既避免了JDBC的繁琐,又比ORM框架如Hibernate更为轻便,适合对SQL有高度定制需求...

    Struts2+spring+ibatis三大框架整合实例

    6. **整合Spring和iBatis**:在Spring配置文件中配置SqlSessionFactory,使用SqlSessionTemplate或SqlSessionDaoSupport来实现DAO层。 7. **编写业务逻辑**:创建Action类,注入业务服务,调用服务方法完成业务逻辑...

    Struts+Spring+Ibatis整合框架搭建配置文档

    - **定义Spring的配置参数**:通过`&lt;context-param&gt;`元素来指定Spring的配置文件路径。在本例中,配置文件为`applicationContext.xml`,放置于`/WEB-INF/conf/`目录下。 - **注册Spring的`ContextLoaderServlet`**:...

    eclipse+spring+ibatis搭建项目基础代码

    自己亲自用eclipse+spring+ibatis搭建的基本框架,含有所需的JAR包,下载后只需更改sql2005的连接字符串,即WEB-INF/db-context.xml中的配置,并更改ibatis的xml文件中的sql语句即可运行。

    spring+velocity+ibatis

    文件名 "MyTestWebProject" 表明这是一个测试Web项目,可能包含了一系列的配置文件、源代码、资源文件等,用于演示或实践如何集成Spring、Velocity和iBATIS。在这样的项目中,我们通常会看到以下目录结构: - `src/...

    struts2+spring+ibatis的小demo

    通过XML配置文件或者注解,我们可以定义SQL映射,iBatis会根据这些配置动态生成SQL并执行,然后将结果转换为Java对象。 **整合流程**: 1. 用户在前端界面填写登录信息并提交,请求发送到Struts2的Action。 2. ...

    struts2+spring+ibatis项目实例

    然后在Spring配置文件中声明这些Action,以及它们所需的Service和DAO。接着,使用iBatis的Mapper接口和XML文件编写数据库操作,Spring会自动将这些接口与对应的SQL语句关联。 总的来说,"struts2+spring+ibatis...

Global site tag (gtag.js) - Google Analytics