mybatis3.0+spring3.0+struts2整合
由于spring暂不支持ibatis3,但是mybatis3自己开发了一套针对spring的支持,所以整合中引入了mybatis_spring的jar包。
具体的项目结构图如下
?
?
在整合之前,参考了不少网上的资料,但是发现其中有过多的配置文件,我在配置中,依靠mybatis本身的映射机制以及spring的注解机制,把配置文件尽量的减少了。可以参考http://diqizhan.iteye.com/blog/582150的配置。
?
?
主要的配置文件applicationContext.xml代码如下:
?
?
使用一个MapperScannerConfigurer,它将会查找类路径下的映射器并自动将它们创建成MapperFactoryBeans。
?
basePackage属性是让你为映射器接口文件设置基本的包路径。你可以使用分号或逗号作为分隔符设置多于一个的包路径
?
?
?
没有必要去指定SqlSessionFactory 或SqlSessionTemplate,因为MapperScannerConfigurer将会创建MapperFactoryBean,之后自动装配。
?
?
@service是用于服务层的类文件。
@Autowired用来注入。
例如
@Autowired
private ConsumerMapper consumerMapper;
相当于new了一个ConsumerMapper的类。
需要在配置文件中进行以下配置
?
<context:annotation-config />
<tx:annotation-driven />??
?
?
?用来定义javabean的包位置,这样在mybatis的sql映射文件中,就可以该包下的类的简写(首字母小写)来定义,而不用定义该类的所在包的位置
?
?
?
?
web.xml 代码如下:
?
?主要是配置了项目启动时,加载的配置文件contextConfigLocation的文件,以及struts的一些基本配置。
?
?
接下来以一个验证登陆的实例来说明
?
登陆页面主要代码如下:
?
?
??
由于是ajax的提交,我选择了json格式的返回值,所以在项目中,我还引入了json的jar包。因此在配置中多了几项内容。
?
?
?
?
?
如果不需要格式的返回值,那么改为struts的默认格式
?
?
?
?
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的区别。