SpringMVC+Spring+Ibatis开发环境搭建

今天尝试搭建了一下SpringMVC+Spring+Ibatis的开发环境,各种百度,终于是功夫不负有心人,搭建过程比较简单(吐槽一下:百度上各种资料一样的太多了,各种误导,终于是搭出来了),先看看我的项目结构,这里我把所有的配置到放到了src/main/resources,项目发布的时候这个目录下的文件会被发布到classes目录下


1.从ibatis开始

我们使用ibatis就是要使用它的SqlMap进行数据的操作,它是一个半自动化框架(数据库查询结果可以直接映射到Pojo类,但是SQL还是要我们写,考验我们编写SQL的能力),先写一个简单的sqlMap文件,对一张用户表插入数据user-SqlMap.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMap PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN" 
"http://www.ibatis.com/dtd/sql-map-2.dtd">
<sqlMap namespace="User">
	<insert id="addUser" parameterClass="com.blog.domain.User">
		insert into blog_user(username,password) values(#username#,#password#)
	</insert>
</sqlMap>
配置文件有了,我们该让系统去对这个文件进行解析了,所以有了以下配置sqlMapConfig.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE sqlMapConfig 
    PUBLIC "-//iBATIS.com//DTD SQL Map Config 2.0//EN" 
    "http://www.ibatis.com/dtd/sql-map-config-2.dtd">
<sqlMapConfig>
	<sqlMap resource="sqlMap/user-SqlMap.xml" />
</sqlMapConfig>
下面我们将ibatis的配置与Spring整合

2.使用spring-dao.xml整合ibatis

这里我使用spring-dao.xml做为Dao层的配置文件,并且将ibatis整合进我们的架构

<?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:p="http://www.springframework.org/schema/p"
	xmlns:context="http://www.springframework.org/schema/context"
	xsi:schemaLocation="http://www.springframework.org/schema/beans 
	http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
	http://www.springframework.org/schema/context 
	http://www.springframework.org/schema/context/spring-context-3.1.xsd" >
     <!-- 扫描该包,使注解生效 -->
    <context:component-scan base-package="com.blog.dao"></context:component-scan>
    <!-- 数据库连接 -->
    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
		<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"></property>
		<property name="url" value="jdbc:oracle:thin:@localhost:1521:orcl"></property>
		<property name="username" value="blog_oracle"></property>
		<property name="password" value="blog_oracle"></property>
	</bean>
	<!-- 引入ibatis配置 -->
	<bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
		<property name="dataSource">
			<ref bean="dataSource" />
		</property>
		<property name="configLocation" value="classpath:sqlmap-config.xml"></property>
	</bean>
	<bean id="sqlMapClientTemplate" class="org.springframework.orm.ibatis.SqlMapClientTemplate">
		<property name="sqlMapClient">
			<ref bean="sqlMapClient" />
		</property>
	</bean>
</beans>
我在这里配置了一个数据库连接并且引入了ibatis的配置文件(这里不得不说Spring为我们的开发提供了极大的便利:譬如事务管理,整合Orm框架),整合spring和ibatis成功

3.事务配置spring-model.xml

我选择了把事务配置在业务层(一荣俱荣,一损俱损),如果事务配置在dao层,事务的控制过于细化了(在业务层同一方法中调用的n个dao方法最终还是会通过spring的事务传播机制合并为一个事务(PROPAGATION_REQUIRED))。下面看看配置

<?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:p="http://www.springframework.org/schema/p"
	xmlns:context="http://www.springframework.org/schema/context"
	xsi:schemaLocation="http://www.springframework.org/schema/beans 
	http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
	http://www.springframework.org/schema/context 
	http://www.springframework.org/schema/context/spring-context-3.1.xsd" >
     <!-- 扫描该包,使注解生效 -->
    <context:component-scan base-package="com.blog.model"></context:component-scan>
    <import resource="spring-dao.xml"/>
    <!-- 事物处理 -->
	<bean id="transactionManager"
		class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
		<property name="dataSource">
			<ref bean="dataSource" />
		</property>
	</bean>
	<bean id="transactionInterceptor"
		class="org.springframework.transaction.interceptor.TransactionInterceptor">
		<property name="transactionManager">
			<ref bean="transactionManager" />
		</property>
		<property name="transactionAttributes">
			<props>
				<!-- Spring事务传播级别 -->
				<prop key="*">PROPAGATION_REQUIRED</prop>
			</props>
		</property>
	</bean>
	<bean
		class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
		<property name="beanNames">
			<list>
				<value>*ServiceImpl</value>
			</list>
		</property>
		<property name="interceptorNames">
			<list>
				<value>transactionInterceptor</value>
			</list>
		</property>
	</bean>        
</beans>
4.xxxx-servlet.xml文件

在项目中经常使用{项目名}-servlet.xml的命名方式来定义springmvc的配置文件,这里照旧,这里要配置的是一些视图解析器,文件上传解析器等,如下

<?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:p="http://www.springframework.org/schema/p"
	xmlns:context="http://www.springframework.org/schema/context"
	xmlns:mvc="http://www.springframework.org/schema/mvc"
	xsi:schemaLocation="http://www.springframework.org/schema/beans 
	http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
	http://www.springframework.org/schema/context 
	http://www.springframework.org/schema/context/spring-context-3.1.xsd
	http://www.springframework.org/schema/mvc 
	http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd" >

	<!-- 扫描该包下的所有类,使注解生效 -->
	<context:component-scan base-package="com.blog.web" />
	<!-- 定义Spring MVC的视图解析器,将视图的逻辑名解析为/WEB-INF/views/XXXXX.jsp -->
	<bean id="viewResolver"
		class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<property name="prefix" value="/WEB-INF/views/" />
		<property name="suffix" value=".jsp" />
	</bean>
	
<!-- 	文件上传配置 -->
	<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
		<property name="defaultEncoding" value="UTF-8"/><!-- 编码格式 -->
		<property name="maxUploadSize" value="1024*1024*10"/> <!-- 上传文件最大值 -->
		<property name="maxInMemorySize" value="40960"/><!-- 缓存最大值 -->
	</bean>
</beans>
5.web.xml配置

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
  <display-name>Blog</display-name>
  <context-param>
    <!--业务层配置文件-->
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:spring-model.xml</param-value>
  </context-param>
  <context-param>  
        <param-name>log4jConfigLocation</param-name>  
        <param-value>classpath:log4j.properties</param-value>  
   </context-param>
   <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>
  <listener>
    <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
  </listener>
  <!-- 字符过滤转码(防止添加到数据库中的数据为乱码) -->
	<filter>
		<filter-name>characterEncodingFilter</filter-name>
		<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
		<init-param>
			<param-name>encoding</param-name>
			<param-value>UTF-8</param-value>
		</init-param>
		<init-param>
			<param-name>forceEncoding</param-name>
			<param-value>true</param-value>
		</init-param>
	</filter>
	<filter-mapping>
		<filter-name>characterEncodingFilter</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>
  <servlet>
    <servlet-name>blog</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
    	<param-name>contextConfigLocation</param-name>
    	<param-value>classpath:blog-servlet.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>blog</servlet-name>
    <url-pattern>*.php</url-pattern>
  </servlet-mapping>
  <welcome-file-list>
    <welcome-file>welcome.jsp</welcome-file>
  </welcome-file-list>
</web-app>
基于SpringMVC+Spring+Ibatis的开发环境就已经搭建起来了,又可以愉快的开发了

pom.xml

<dependencies>
  		<dependency>    
            <groupId>org.springframework</groupId>    
            <artifactId>spring-webmvc</artifactId>    
            <version>3.0.4.RELEASE</version>    
        </dependency>  
        <dependency>  
            <groupId>org.springframework</groupId>  
            <artifactId>spring-core</artifactId>  
            <version>3.0.4.RELEASE</version>  
        </dependency>      
        <dependency>    
            <groupId>log4j</groupId>    
            <artifactId>log4j</artifactId>    
            <version>1.2.14</version>    
        </dependency>  
        <dependency>
        	<groupId>com.ibatis</groupId>
        	<artifactId>ibatis2-common</artifactId>
        	<version>2.1.7.597</version>
        </dependency>
        <dependency>
        	<groupId>com.ibatis</groupId>
        	<artifactId>ibatis2-dao</artifactId>
        	<version>2.1.7.597</version>
        </dependency>
        <dependency>
        	<groupId>com.ibatis</groupId>
        	<artifactId>ibatis2-sqlmap</artifactId>
        	<version>2.1.7.597</version>
        </dependency>
        <dependency>
        	<groupId>ojdbc</groupId>
        	<artifactId>ojdbc</artifactId>
        	<version>1.0.0</version>
        </dependency>
        <dependency>
        	<groupId>org.springframework</groupId>
        	<artifactId>spring-ibatis</artifactId>
        	<version>2.0.8</version>
        </dependency>
        <dependency>
        	<groupId>commons</groupId>
        	<artifactId>dpcp</artifactId>
        	<version>1.0.0</version>
        </dependency>
  </dependencies> 








  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值