- 浏览: 100440 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
iswiitfk:
真是个好算法
分页算法中总页数的求法 -
chaodilei:
请问楼主从哪里抄过来的?
Eclipse下SSH集成(JPA) -
xiaowugegzh:
写的不错,QQ 418416015,聊聊技术啊,呵呵
计算出给定日期所在周的周一和周日 -
linhao315:
linhao315 写道在oracle 10g下注释没任何变动 ...
ibator改进,生成中文注释 -
linhao315:
在oracle 10g下注释没任何变动,而且1.2.1中去掉d ...
ibator改进,生成中文注释
Spring2.5(全注解)+Ibatis2.3的集成
网址:http://www-hello.iteye.com/blog/646944
本文档所用文件:
iBATIS : ibatis-2.3.4.726.zip
Spring : spring-framework-2.5.6.SEC01-with-dependencies.zip
DBCP : spring-framework-2.5.6.SEC01-with-dependencies.zip
MySQL驱动:mysql-connector-java-5.1.12.zip
Spring2.5与Ibatis2.3的集成
1. 新建Web工程(如SSI)。(与Struts的集成请参考:http://www-hello.iteye.com/blog/643937)
2. 添加所需Jar包到WEB-INF/lib目录下:
2.1 iBatis包:ibatis-2.3.4.726.jar
2.2 DBCP包:commons-pool.jar,commons-dbcp.jar
2.3 Spring包:spring.jar,commons-logging.jar,log4j-1.2.15.jar,antlr-2.7.6.jar,aspectjrt.jar,aspectjweaver.jar,commons-collections.jar
2.4 MySQL驱动包:mysql-connector-java-5.1.12-bin.jar
3. 配置文件
3.1 日志配置文件(log4j.properties)
log4j.rootLogger=DEBUG, stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%c{1} - %m%n
log4j.logger.java.sql.PreparedStatement=DEBUT
3.2 Jdbc连接属性文件(jdbc.properties)
driverClassName=org.gjt.mm.mysql.Driver
url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8
username=root
password=root
initialSize=1
maxActive=100
maxIdle=8
minIdle=1
3.3 Spring配置文件(applicationContext.xml)
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-2.5.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">
<!-- 启用注解 -->
<context:annotation-config />
<context:component-scan base-package="cn.*" />
<context:property-placeholder location="classpath:jdbc.properties" />
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName" value="${driverClassName}" />
<property name="url" value="${url}" />
<property name="username" value="${username}" />
<property name="password" value="${password}" />
<!--连接池启动时的初始值 -->
<property name="initialSize" value="${initialSize}" />
<!--连接池的最大值 -->
<property name="maxActive" value="${maxActive}" />
<!--最大空闲值.当经过一个高峰时间后,连接池可以慢慢将已经用不到的连接慢慢释放一部分,一直减少到maxIdle为止 -->
<property name="maxIdle" value="${maxIdle}" />
<!--最小空闲值.当空闲的连接数少于阀值时,连接池就会预申请去一些连接,以免洪峰来时来不及申请 -->
<property name="minIdle" value="${minIdle}" />
</bean>
<!--spring整合ibatis -->
<bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
<property name="configLocation" value="classpath:SqlMapConfig.xml" />
<property name="dataSource" ref="dataSource" />
</bean>
<bean id="sqlMapClientTemplate" class="org.springframework.orm.ibatis.SqlMapClientTemplate">
<property name="sqlMapClient" ref="sqlMapClient" />
</bean>
<!--事务 -->
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean>
<tx:annotation-driven transaction-manager="transactionManager" />
</beans>
3.4 总配置文件(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>
<!--映射文件-->
<sqlMap resource="cn/ssi/config/book.xml"/>
</sqlMapConfig>
3.5 实体映射文件(cn/ssi/config/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>
<typeAlias alias="Book" type="cn.ssi.entity.Book" />
<!-- 添加图书 -->
<insert id="saveBook">
<selectKey keyProperty="id" resultClass="int">
SELECT
LAST_INSERT_ID() AS VALUE
</selectKey>
INSERT INTO
book(title,author,total,price,isbn,publisher)
VALUES
(#title#,#author#,#total#,#price#,#isbn#,#publisher#)
</insert>
<!-- 删除图书 -->
<delete id="deleteBook" parameterClass="int">
DELETE FROM book WHERE
id=#id#
</delete>
<!-- 通过出版社查找此出版社出版的所有图书 -->
<select id="findBooksByPublisher" parameterClass="String"
resultClass="Book">
SELECT
id,title,author,total,price,isbn,publisher
FROM
book
WHERE
publisher = #publisher#
</select>
<!-- 通过isbn查找图书 -->
<select id="findBookByISBN" parameterClass="String" resultClass="Book">
SELECT
id,title,author,total,price,isbn,publisher
FROM
book
WHERE
isbn =
#isbn#
</select>
<!-- 通过ID查找图书 -->
<select id="findBookById" parameterClass="int" resultClass="Book">
SELECT
id,title,author,total,price,isbn,publisher
FROM
book
WHERE
id = #id#
</select>
<select id="findBooks" parameterClass="Book" resultClass="Book">
SELECT
id,title,author,total,price,isbn,publisher
FROM
book
<dynamic prepend="WHERE">
<isNotEmpty prepend="AND" property="title">
(title like #title#)
</isNotEmpty>
<isNotEmpty prepend="AND" property="autor">
(author like #author#)
</isNotEmpty>
</dynamic>
</select>
<!-- 更新图书 -->
<update id="updateBook" parameterClass="Book">
UPDATE
book
SET
title=#title#,author=#author#,total=#total#,price=#price#,isbn=#isbn#,publisher=#publisher#
WHERE
id=#id#
</update>
</sqlMap>
4. 编写Java代码
4.1 Entity类(Book.java)
package cn.ssi.entity;
public class Book {
private int id;
private String title;
private String author;
private int total;
private float price;
private String isbn;
private String publisher;
public Book() {
}
public Book(String title) {
this.title = title;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
public int getTotal() {
return total;
}
public void setTotal(int total) {
this.total = total;
}
public float getPrice() {
return price;
}
public void setPrice(float price) {
this.price = price;
}
public String getIsbn() {
return isbn;
}
public void setIsbn(String isbn) {
this.isbn = isbn;
}
public String getPublisher() {
return publisher;
}
public void setPublisher(String publisher) {
this.publisher = publisher;
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append("ID:").append(id).append(" ");
sb.append("title:").append(title).append(" ");
sb.append("author:").append(author).append(" ");
sb.append("total:").append(total).append(" ");
sb.append("price:").append(price).append(" ");
sb.append("isbn:").append(isbn).append(" ");
sb.append("publisher:").append(publisher).append(" ");
return sb.toString();
}
}
4.2 业务类接口(BookService.java)
package cn.ssi.service;
import java.util.List;
import cn.ssi.entity.Book;
public interface BookService {
/**
* 增加图书
*
* @param book
* 图书
*/
public void save(Book book);
/**
* 删除指定图书
*
* @param id
* 图书ID号
*/
public void deleteBook(int id);
/**
* 通过出版社查找此出版社出版的所有书籍
*
* @param publisher
* 出版社
* @return 所有书籍
*/
public List<Book> findBookByPublisher(String publisher);
/**
* 根据Id查找图书
*
* @param id
* @return
*/
public Book findBookById(int id);
/**
* 更新图书
* @param book 图书
*/
public void updateBook(Book book);
}
4.3 业务类实现类(BookServiceBeanjava)
package cn.ssi.service.impl;
import java.util.List;
import javax.annotation.Resource;
import org.springframework.orm.ibatis.SqlMapClientTemplate;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import cn.ssi.entity.Book;
import cn.ssi.service.BookService;
@Service
@Transactional
public class BookServiceBean implements BookService {
private @Resource(name = "sqlMapClientTemplate")
SqlMapClientTemplate sqlMapClientTemplate;
@Override
public void deleteBook(int id) {
sqlMapClientTemplate.delete("deleteBook", id);
}
@Override
public Book findBookById(int id) {
return (Book) sqlMapClientTemplate.queryForObject("findBookById", id);
}
@SuppressWarnings("unchecked")
@Override
public List<Book> findBookByPublisher(String publisher) {
return (List<Book>) sqlMapClientTemplate.queryForList(
"findBooksByPublisher", publisher);
}
@Override
public void save(Book book) {
sqlMapClientTemplate.insert("saveBook", book);
}
@Override
public void updateBook(Book book) {
sqlMapClientTemplate.update("updateBook", book);
}
}
5. 测试集成
5.1 Junit测试类(BookServiceTest.java)
package cn.ssi.book.test;
import java.util.List;
import org.junit.BeforeClass;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import cn.ssi.entity.Book;
import cn.ssi.service.BookService;
public class BookServiceTest {
@BeforeClass
public static void setUpBeforeClass() throws Exception {
}
@Test
public void testBookService() {
ApplicationContext ctx = new ClassPathXmlApplicationContext(
"applicationContext.xml");
BookService bookService = (BookService) ctx.getBean("bookServiceBean");
Book book = new Book();
book.setTitle("bookTest");
book.setAuthor("author");
book.setIsbn("ISBN:123456");
book.setPublisher("publisher1");
book.setPrice(45.0f);
book.setTotal(100);
bookService.save(book);
List<Book> books = bookService.findBookByPublisher("publisher1");
System.out.println("---------------BOOKS-------------------");
System.out.println("图书:" + books.size());
for (Book b : books) {
System.out.println(b);
}
}
}
5.2 运行Junit测试
---------------BOOKS-------------------
图书:1
ID:10 title:bookTest author:author total:100 price:45.0 isbn:ISBN:123456 publisher:publisher1
5.3 MySQL数据库
mysql> select * from book;
+----+----------+--------+-------+-------+-------------+------------+
| id | title | author | total | price | isbn | publisher |
+----+----------+--------+-------+-------+-------------+------------+
| 10 | bookTest | author | 100 | 45 | ISBN:123456 | publisher1 |
+----+----------+--------+-------+-------+-------------+------------+
1 row in set (0.00 sec)
集成成功。
附:
数据库角本:
DROP TABLE IF EXISTS `book`;
CREATE TABLE `book` (
`id` int(11) NOT NULL auto_increment,
`title` varchar(50) default NULL,
`author` varchar(20) default NULL,
`total` int(11) default NULL,
`price` float default NULL,
`isbn` varchar(20) default NULL,
`publisher` varchar(50) default NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
- SSI工程文件_文档.doc.rar (6.3 MB)
- 描述: Eclipse工程文件,本文档的word版
- 下载次数: 216
发表评论
-
struts2中set一个常量
2012-03-31 10:46 1266struts2中的set标签,value是个变量的名字,相当于 ... -
JCaptcha 开源的验证码组件
2011-05-05 01:50 11848官方getting start指导:5 minutes app ... -
(转) Don't Use System.out.println! Use Log4j
2011-03-24 10:36 1226原文地址: Don't Use System.out.prin ... -
EL表达式
2010-07-25 00:45 951EL 全名为Expression L ... -
分页算法中总页数的求法
2010-06-02 22:56 4594... -
数字金额转换成中文金额
2010-04-14 18:35 1217public class Convertor{ ... -
求一年中星期一的日期
2010-04-14 18:05 1605import java.text.SimpleDateFo ... -
Eclipse下SSH集成(JPA)
2010-04-14 17:46 5858SSH-JPA环境搭建 JPA环境的搭建: 1. 新建 ...
相关推荐
**SSI(Struts2+Spring2.5+Ibatis2.3)项目实例详解** **一、Struts2框架** Struts2是一个基于MVC设计模式的Java Web开发框架,它继承了Struts1和WebWork的优点,提供了一种更灵活、更强大的控制层解决方案。在SSI...
在这个项目中,开发者利用了Spring 2.5、Struts 2.1和iBatis 2.3这三个组件来实现数据的增删改查功能,并且结合了存储过程来增强数据库操作的灵活性。同时,通过Junit进行单元测试,确保代码的正确性和稳定性。 ...
Struts1.1+Spring2.5+Ibatis2.3+Ajax整合是一个经典的Java Web开发框架组合,常用于构建企业级应用。这个源代码集合提供了如何将这四个技术有效地结合在一起的实例,以实现一个功能强大的、具有无刷新特性的用户界面...
本项目以"Spring2.5+ibatis2.3+Extjs2.0+Struts2实现用户管理"为主题,旨在为初学者提供一个全面理解这些技术集成使用的实例。下面将详细阐述这四个关键组件及其在用户管理系统中的作用。 首先,Spring框架是Java...
在Spring和Struts的集成中,iBatis作为数据访问对象(DAO)层,负责与数据库的交互,通过XML配置文件或注解定义SQL映射,实现了动态SQL和数据访问的定制化。 **Junit测试框架**: Junit是Java开发中最常用的单元...
在整合中,iBatis负责数据库操作,通过MyBatis-Spring插件与Spring进行集成,使得DAO层的bean可以在Spring容器中被管理,同时实现SQL执行和结果映射的自动化。 **框架整合步骤:** 1. **添加依赖库**:确保项目中...
本篇将详细介绍如何在Spring 2.5版本中整合iBATIS 2.3,并利用Spring的声明式事务管理,以提升应用程序的稳定性和可维护性。 首先,我们需要了解Spring 2.5和iBATIS 2.3的基本概念。Spring 2.5是Spring框架的一个...
这个"struts2 + spring2.5 + ibatis2.3.4整合包文件"包含了这三个框架的集成,用于搭建一个完整的Java Web应用程序。以下是对这些框架及其整合的详细说明: 1. Struts2:Struts2是基于Apache Struts 1的升级版,它...
综上所述,"spring2.5 ibatis2.3 struts2.1 dwr3 annotation集成配置"涉及到的不仅仅是单一技术的使用,更是Java Web开发中多框架协同工作的典范,展示了如何利用注解简化配置,提高开发效率,并为大型企业级应用...
在"Struts2+ibatis-2.3+spring2.5整合实例"中,我们首先需要设置项目的环境,包括JDK、Maven或Gradle等构建工具,以及Tomcat服务器。然后,创建一个新的Maven或Gradle项目,并在`pom.xml`或`build.gradle`文件中添加...
本示例代码涉及的是一个经典的技术栈:Ibatis2.3、Struts1.3和Spring2.5的整合。这三个框架各自都有其独特的功能和优点,组合在一起能够提供灵活的数据访问、高效的MVC架构以及全面的应用管理。 Ibatis,作为一款轻...
3. **iBatis2.3**:iBatis是一个SQL映射框架,它将SQL语句与Java代码分离,使得开发者可以更灵活地编写和维护SQL。在SSI项目中,iBatis用于与数据库交互,通过XML配置文件定义SQL查询,然后在Java代码中执行这些查询...
Struts2.1.8、Spring2.5.6 和 iBatis2.3 的集成是Web开发中一种常见的技术组合,主要用于构建企业级的Java应用程序。这些框架各自都有其独特的优势,当它们协同工作时,可以提供强大的功能,如模型-视图-控制器(MVC...
项目中的文件"struts2spring2.5ibatis2.3"很可能包含了该项目所需的全部源码和配置文件,包括Struts2的配置文件(struts.xml),Spring的配置文件(spring-context.xml),以及Ibatis的映射文件(mybatis-config.xml和各...
Spring Framework 开发参考手册 Rod Johnson Juergen Hoeller Alef Arendsen Colin Sampaleanu Rob Harrop Thomas Risberg Darren Davison Dmitriy Kopylenko Mark Pollack Thierry Templier Erwin ...
- **作为JCA适配器部署Spring应用上下文**:支持将Spring应用上下文作为JCA适配器进行部署,便于与其他企业级中间件进行集成。 - **任务调度**:引入了任务调度功能,支持定时任务的执行。 - **Java 5 (Tiger) 支持*...
2. Spring 2.0 的新特性 2.1. 简介 2.2. 控制反转(IoC)容器 2.2.1. 更简单的XML配置 2.2.2. 新的bean作用域 2.2.3. 可扩展的XML编写 2.3. 面向切面编程(AOP) 2.3.1. 更加简单的AOP XML配置 2.3.2. 对@AspectJ 切面的...
15.4 集成Spring Web Flow与其他框架 15.4.1 Jakarts Struts 15.4.2 JavaServer Face 15.5 小结 第16章 集成其他Web框架 16.1 协同使用Spring和Struts 16.1.1 向Struts注册Spring插件 16.1.2 编写知晓Spring...
2.7. 移植到Spring 2.5 2.7.1. 改变 2.8. 更新的样例应用 2.9. 改进的文档 I. 核心技术 3. IoC(控制反转)容器 3.1. 简介 3.2. 基本原理 - 容器和bean 3.2.1. 容器 3.2.2. 实例化容器 3.2.3. 多种bean ...
2. Spring 2.0和 2.5的新特性 2.1. 简介 2.2. 控制反转(IoC)容器 2.2.1. 新的bean作用域 2.2.2. 更简单的XML配置 2.2.3. 可扩展的XML编写 2.2.4. Annotation(注解)驱动配置 2.2.5. 在classpath中自动搜索组件...