由于spring暂不支持ibatis3,但是mybatis3自己开发了一套针对spring的支持,所以整合中引入了mybatis_spring的jar包。
具体的项目结构图如下
在整合之前,参考了不少网上的资料,但是发现其中有过多的配置文件,我在配置中,依靠mybatis本身的映射机制以及spring的注解机制,把配置文件尽量的减少了。可以参考http://diqizhan.iteye.com/blog/582150的配置。
主要的配置文件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:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:jdbc="http://www.springframework.org/schema/jdbc"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-3.0.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd">
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="username" value="root" />
<property name="password" value="root" />
<property name="url" value="jdbc:mysql://127.0.0.1:3306/test1" />
</bean>
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean>
<!-- define the SqlSessionFactory -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="typeAliasesPackage" value="com.whatlookingfor.domain" />
</bean>
<context:component-scan base-package="com.whatlookingfor.service" />
<context:annotation-config />
<tx:annotation-driven />
<!-- 从base 包中搜索所有下面所有 interface,并将其注册到 Spring Bean容器中,其注册的class bean是MapperFactoryBean。 -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.whatlookingfor.mapper" />
</bean>
</beans>
使用一个MapperScannerConfigurer,它将会查找类路径下的映射器并自动将它们创建成MapperFactoryBeans。
basePackage属性是让你为映射器接口文件设置基本的包路径。你可以使用分号或逗号作为分隔符设置多于一个的包路径
没有必要去指定SqlSessionFactory 或SqlSessionTemplate,因为MapperScannerConfigurer将会创建MapperFactoryBean,之后自动装配。
@service是用于服务层的类文件。
@Autowired用来注入。
例如
@Autowired
private ConsumerMapper consumerMapper;
相当于new了一个ConsumerMapper的类。
需要在配置文件中进行以下配置
写道
<context:component-scan base-package="com.whatlookingfor.service" />
<context:annotation-config />
<tx:annotation-driven />
写道
<property name="typeAliasesPackage" value="com.whatlookingfor.domain" />
用来定义javabean的包位置,这样在mybatis的sql映射文件中,就可以该包下的类的简写(首字母小写)来定义,而不用定义该类的所在包的位置
web.xml 代码如下:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<welcome-file-list>
<welcome-file>login.jsp</welcome-file>
</welcome-file-list>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<filter>
<!-- 配置Struts2核心Filter的名字 -->
<filter-name>struts2</filter-name>
<!-- 配置Struts2核心Filter的实现类 -->
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
</filter>
<!-- 配置Filter拦截的URL -->
<filter-mapping>
<!-- 配置Struts2的核心FilterDispatcher拦截所有用户请求 -->
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
主要是配置了项目启动时,加载的配置文件contextConfigLocation的文件,以及struts的一些基本配置。
接下来以一个验证登陆的实例来说明
登陆页面主要代码如下:
$("#to_submit").click(function(){
$.post(
"checkConsumer.action",
{
account:$("#account").val(),
password:$("#password").val(),
validation_code:$("#validation_code").val()
},
function(data,textStats){
if(data.mess=="success"){
window.location.href="jsp/demo1.jsp";
}else{
$("#message").html("<font color='red'>"+data.mess+"</font>");
}
},"json"
);
我主要用的是jquery的ajax提交,点击id为 to_submit的登陆按钮后,所做的操作是执行 checkConsumer.action。
struts.xml的配置如下:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<!-- 在这里可以include多个struts的配置文件 -->
<!--
<include file="struts-default.xml" />
-->
<constant name="struts.i18n.encoding" value="utf-8"></constant>
<package name="main" extends="json-default">
<global-results>
<result name="login">login.jsp</result>
</global-results>
<action name="checkConsumer" class="com.whatlookingfor.action.ConsumerAction" method="checkConsumer">
<result type="json" name="mess"></result>
</action>
</package>
</struts>
由于是ajax的提交,我选择了json格式的返回值,所以在项目中,我还引入了json的jar包。因此在配置中多了几项内容。
<package name="main" extends="json-default">
<result type="json" name="mess"></result>
如果不需要格式的返回值,那么改为struts的默认格式
<package name="main" extends="struts-default">
<result name="success">login.jsp</result>
ConsumerAction.java的代码如下:
package com.whatlookingfor.action;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import com.opensymphony.xwork2.ModelDriven;
import com.whatlookingfor.domain.Consumer;
import com.whatlookingfor.service.ConsumerService;
public class ConsumerAction implements ModelDriven<Consumer>{
/**
*
*/
private static final long serialVersionUID = -3532748434595941668L;
@Autowired
private ConsumerService consumerService;
//通过实现ModelDriver接口,获取页面的consumer对象。必须定义个new model。
private Consumer consumer=new Consumer();
private String mess;
public String getMess() {
return mess;
}
public void setMess(String mess) {
this.mess = mess;
}
public String checkConsumer() {
Consumer consu=new Consumer();
consu=consumerService.getConsumer(consumer);
//根据consu对象(数据库查询的信息)与consumer对象(从页面获取的信息),进行登录信息的验证比较
this.mess="密码错误";
return "mess";
}
/**
* 实现ModelDriver的必须实现的方法
* */
public Consumer getModel() {
return consumer;
}
}
该action类 实现了ModelDriven的接口,具体机制,各位到网上去查阅。
在action类中,通过@Autowired 创建了一个ConsumerService的实例。
ConsumerService.java的代码如下
package com.whatlookingfor.service;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.whatlookingfor.domain.Consumer;
import com.whatlookingfor.mapper.ConsumerMapper;
@Service
public class ConsumerService {
@Autowired
private ConsumerMapper consumerMapper;
public Consumer getConsumer(Consumer consumer) {
return consumerMapper.getConsumer(consumer);
}
}
@service以及Autowired上面已经大概介绍过。
ConsumerMapper接口类的代码如下:
package com.whatlookingfor.mapper;
import java.util.List;
import com.whatlookingfor.domain.Consumer;
/**
* @author Administrator
*
*/
public interface ConsumerMapper {
/**
*
* */
public Consumer getConsumer(Consumer consumer);
}
ConsumerMapper.xml代码如下
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.whatlookingfor.mapper.ConsumerMapper">
<select id="getConsumer" resultType="Consumer" parameterType="Consumer">
SELECT * FROM TB_CONSUMER WHERE ACCOUNT=#{account}
</select>
</mapper>
Consumer.java的代码如下:
package com.whatlookingfor.domain;
import java.io.Serializable;
import com.whatlookingfor.base.PageInfo;
public class Consumer extends PageInfo<Consumer> implements Serializable{
/**
*
*/
private static final long serialVersionUID = -4075669481168367315L;
private String account;
private String password;
public String getAccount() {
return account;
}
public void setAccount(String account) {
this.account = account;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
OK,至此,所有的代码已经全部贴完。
数据库就一张表 TB_CONSUMER,有两个字段 account,和password。
主要引入的jar包有spring的核心包,struts2的核心包,mybatis3.0的jar包,mybatis_spring 1.0jar包,json的jar包(jsonplugin-0.32.jar),使用的时候注意0.32和0.34的区别。
分享到:
相关推荐
mybatis3.0+spring3.0+struts2整合开发的一个小权限管理系统,里面有搜索提示功能,导入导出excel文件,ajax异步刷新,拦截器控制,freemarker等,表关系很复杂,特附上表关系图
本话题主要关注的是"Spring 3.0"、"Struts 2" 和 "MyBatis 3.0" 这三大主流Java开源框架的集成,以实现增、删、查、改(CRUD)以及LIKE查询等基本功能。下面我们将详细探讨这些框架各自的功能以及它们如何协同工作。...
"Struts2+Spring3.0+MyBatis3.0平台搭建"涉及的是如何将这三个框架整合在一起,创建一个完整的Web应用程序。这通常包括以下步骤: 1. 配置Struts2:设置struts.xml,定义Action、结果类型和全局配置。 2. 集成...
这是自己整合的Spring 3.0+Struts2+Mybatis 3 + p6spy +ehcache的平台框架,内含一点示例代码,目前ehcache没有使用。直接编译后发布就能用 测试环境基于JDK1.6+Tomcat 6.0. 大家拿到后请根据实际情况修改 ...
Struts2、Spring3和MyBatis是Java Web开发中常用的三大开源框架,它们的整合应用可以构建出高效、灵活的后端系统。这个压缩包提供了这三个框架的整合源码和相关文档,对于学习和理解SSM(Struts2、Spring、MyBatis)...
本示例"spring3.0+struts2.0+mybatis3.2+jta+xapool配置文件"就是一个典型的Java企业级应用的集成框架,用于实现数据持久层、业务逻辑层以及控制层的整合。以下将详细介绍这些组件及其配置要点。 **Spring 3.0** 是...
本项目“spring3.0整合mybatis3.0、struts2”正是这样的一个尝试,旨在利用这三个主流的Java技术栈来搭建一个强大的后端架构。接下来,我们将详细探讨这三个框架各自的功能、整合的意义以及如何进行整合。 **Spring...
SSM框架整合,使用最新版MyBatis-Jar包(Struts2.1+Spring3.0+MyBatis3.06) 下载之后执行.sql文件创建表和sequence 记得改数据库访问地址以及数据库登录用户名密码 项目访问路径 localhost:8080/SSI_Demo2 一个...
在"struts2.0+spring3.0+mybatis3框架整合"中,我们首先关注的是这三者如何协同工作。Struts2处理HTTP请求,解析用户的动作,然后通过Action将请求传递给Spring。Spring作为服务层,利用其强大的依赖注入特性,可以...
在本篇文章中,我们将探讨如何将 Ibatis3.0(实际上是 MyBatis 的早期版本,这里可能是指 MyBatis 3.0)、Spring2.5 和 Struts2 这三个框架进行整合,以实现一个简单的应用案例。通过这个过程,我们可以更好地理解...
SSM(Struts2、Spring、MyBatis)框架整合是Java Web开发中常见的技术栈,主要用于构建高效、模块化的应用程序。以下是对这三个组件及其整合的详细解释: **Struts2** 是一个基于MVC(Model-View-Controller)设计...
**整合 Spring、Mybatis3 和 Struts2** 在 J2EE 工程中,Spring 与 Struts2 可以无缝集成,Spring 作为底层容器,管理 Struts2 中的 Action 对象。同时,Spring 与 Mybatis3 结合,可以通过 Spring 的 DataSource ...
附件有3个project,分三个步骤对SSMy进行了搭建,先是struts2,再进行spring整合struts,第三个整合mybatis,以及注释,到数据库mysql,给正在初学的和已经忘记怎么搭建框架的coder,共享
Struts2.1.8、Spring3.0和iBatis2.3是经典的Java Web开发框架组合,它们各自承担着不同的职责,协同工作以构建高效、可维护的Web应用程序。接下来,我们将深入探讨这三个框架的核心特性以及它们如何优雅地整合在一起...
在本文中,我们将探讨如何使用Struts2.1、Spring3.0和Hibernate3.3进行整合,实现一个用户管理系统。这个系统是基于SSH(Struts2、Spring、Hibernate)框架的经典组合,旨在提供一个简单而有效的用户管理功能。 ...
### Struts2+Mybatis+Spring 整合增删改查实例详解 #### 一、项目背景及目标 本篇文章将详细介绍如何通过整合Struts2、MyBatis以及Spring框架来实现一个完整的增删改查功能。对于Java Web开发者而言,这种组合非常...
通过SSH框架的整合,开发者可以实现模型层(Hibernate)、业务逻辑层(Spring)和视图层(Struts2)的有效分离,提高代码的可读性和可维护性。此外,SSH框架还提供了良好的扩展性,可以方便地与其他框架或库进行集成...
整合Struts2、Hibernate3.0和MySQL5.0的步骤通常包括以下部分: 1. **环境配置**:安装JDK、Eclipse、MySQL Server,并配置好相应的环境变量。 2. **创建数据库**:在MySQL中创建所需的数据库和表,根据业务需求...
### Spring+Hibernate+Struts2+MyBatis 整合笔记 #### 一、SSM框架简介及整合意义 SSM框架是指Spring、SpringMVC和MyBatis三个开源框架的整合,通常用于快速开发Java Web应用。本篇笔记主要介绍如何将Spring、...