整合Spring+MyBaties框架

前面几篇文章已经把spring、spring mvc、MyBaties的配置以及使用做了较为详细的阐述。现在我们来整合一个集成框架SSM(Spring、SpringMVC和Mybatis,怎么读觉得这个简写怪怪的^_^)。

基本概念就不重复了,作为实际开发平台使用的话肯定有很多不足的地方。本教程主要讲解实现过程,能够快速打搭建SSM环境,方便扩展其他功能。

教程里面只给出配置文件的部分解释,具体内容可以下载后面的源码查看。

##整体目录结构

目录结构

框架版本
Spring 3.2.5 RELEASE
Spring MVC 3.2.5 RELEASE
MyBatis 3.1.1
log4j

##Spring配置文件applicationContext.xml

这里把mybaties的配置都交由spring来管理。里面的配置基本上都是自动扫描注解,链接数据库,文件上传,视图解析器等基本配置,都写了注释也比较好理解。要加入其它功能,可以在这里面进行扩充。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
<?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:mvc="http://www.springframework.org/schema/mvc" xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx" xmlns:jdbc="http://www.springframework.org/schema/jdbc"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.2.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.2.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.2.xsd
http://www.springframework.org/schema/jdbc
http://www.springframework.org/schema/jdbc/spring-jdbc-3.2.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd
">
<!-- 引入jdbc配置文件 -->
<context:property-placeholder location="WEB-INF/config/jdbc.properties" />
<!-- 用注解方式注入bean -->
<context:annotation-config />
<!-- 扫描包 -->
<context:component-scan base-package="com.xhay1122.dao;com.xhay1122.service.*;" />
<!-- 启动Spring MVC的注解功能,完成请求和注解POJO的映射,解决@ResponseBody乱码问题, 需要在annotation-driven之前,否则乱码问题同样无法解决 -->
<bean
class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
<property name="messageConverters">
<list>
<bean
class="org.springframework.http.converter.StringHttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>text/html;charset=UTF-8</value>
</list>
</property>
</bean>
</list>
</property>
</bean>
<!-- 向 spring 容器中注册 DefaultAnnotationHandlerMapping。 向 spring 容器中注册 AnnotationMethodHandlerAdapter。
配置一些 messageconverter。 解决了 @Controller 注解的使用前提配置,即 HandlerMapping 能够知道谁来处理请求。 -->
<mvc:annotation-driven />
<context:component-scan base-package="com.xhay1122.controller.*" />
<!--创建jdbc数据源 -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName" value="${jdbc.driverClassName}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
<property name="initialSize" value="${jdbc.initialSize}" />
<property name="maxActive" value="${jdbc.maxActive}" />
<property name="maxIdle" value="${jdbc.maxIdle}" />
<property name="minIdle" value="${jdbc.minIdle}" />
</bean>
<!-- 创建SqlSessionFactory,同时指定数据源 -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="mapperLocations" value="classpath:com/xhay1122/mapper/*/*.xml" />
<!-- <property name="configLocation" value="WEB-INF/config/mybatis-configuration.xml" /> -->
</bean>
<!-- Mapper接口所在包名,Spring会自动查找其下的Mapper -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.xhay1122.dao.*" />
</bean>
<!-- 可通过注解控制事务 -->
<tx:annotation-driven />
<!-- (事务管理)transaction manager, use JtaTransactionManager for global tx -->
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean>
<!-- 支持上传文件 -->
<bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver" />
<bean id="viewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass"
value="org.springframework.web.servlet.view.JstlView" />
<property name="prefix" value="/"></property>
<property name="suffix" value=".jsp"></property>
</bean>
</beans>

##JDBC连接信息jdbc.properties

把jdbc的连接信息独立出来了,主要是方便本地开发的时候对数据库信息的修改

1
2
3
4
5
6
7
8
9
10
#created by xhay
#Mon Jul 04 13:02:40 CST 2011
jdbc.maxActive=100
jdbc.password=root
jdbc.url=jdbc\:mysql\://localhost\:3307/syprodb?Unicode\=true&characterEncoding\=UTF-8
jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.minIdle=1
jdbc.initialSize=1
jdbc.maxIdle=8
jdbc.username=root

##日志配置文件log4j.properties

配置系统的输出日志,以及mybaties的输出日志。更多信息可以参考:配置Log4j(很详细)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
### set log levels ###
log4j.rootLogger = INFO , stdout
### export Console ###
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target = System.err
log4j.appender.stdout.layout=org.apache.log4j.SimpleLayout
log4j.logger.com.ibatis=DEBUG
log4j.logger.com.ibatis.common.jdbc.SimpleDataSource=DEBUG
log4j.logger.com.ibatis.common.jdbc.ScriptRunner=DEBUG
log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate=DEBUG
log4j.logger.java.sql.Connection=DEBUG
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG

具体设计到示例程序的部分这里就不贴出来了,可以下载下面的源码自行查看

源码下载

##参考资料

1、 http://www.cnblogs.com/hoojo/archive/2011/04/15/2016324.html#top
2、 http://blog.csdn.net/azheng270/article/details/2173430/
3、 http://blog.csdn.net/zhshulin/article/details/37956105