初学者写:SpringMVC与Mybatis整合(SSM)

SpringMVC与Mybatis整合(SSM)

初学springMVC框架,也是第一次写博客,记录ssm框架整合的知识,望看过的大佬多多指点,在下感激不尽!

1,SSM的优点:

    项目分层实现,各个层交给不同的框架实现,利于开发和维护,相比SSH编码更自由,性能更优越
2,准备工作:
    1,引入相关Jar包(包括:spring、springmvc、mybatis、mybatis-spring整合包、数据库驱动、第三方连接池。)
        (其中:mybatis-spring整合包由mybatis官方提供:https://github.com/mybatis/mybatis-3/releases)
       
3,创建属性文件

    1,数据库配置文件

    jdbc.driverClass=oracle.jdbc.OracleDriver
    jdbc.url=jdbc:oracle:thin:@localhost:1521:orcl
    jdbc.username=xxxxx
    jdbc.password=xxxxx
   2,日志配置文件
    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=DEBUG

4,创建Mybatis配置文件(sqlMapConfig.xml)

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
	<!-- 配置别名 -->
	<typeAliases>
		<package name="com.dk1.xaz.bean"/>
	</typeAliases>
	<!-- 引入映射文件(如果用mapper扫描器开发DAO,则不需要在此引入映射文件) -->
	<!-- 在这里我用的是mapper扫描器进行配置 -->
</configuration>

5,创建applicationContext.xml(spring配置文件),定义数据源,SqlSessionFactory,事务,DAO,Service

    1,创建数据源配置文件

<!-- 加载属性文件 -->
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
	<property name="locations">
		<list>
		    <value>classpath:db.properties</value>
		</list>
	</property>
</bean>
<!-- 配置数据源 -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
	<property name="driverClass" value="${jdbc.driverClass}"/>
	<property name="jdbcUrl" value="${jdbc.url}"/>
	<property name="user" value="${jdbc.username}"/>
	<property name="password" value="${jdbc.password}"/>
</bean>

    2,定义SqlSessionFactory

<!-- 配置session工厂 -->
<bean id="sessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
	<property name="dataSource" ref="dataSource"></property>
	<property name="configLocation" value="classpath:sqlMapConfig.xml"></property>
</bean>

    3,配置事务

<!-- 配置事务 -->
	<!-- 配置事务管理器 -->
	<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
		<property name="dataSource" ref="dataSource"/>
	</bean>
	<!-- 下面使用aop切面的方式来实现 -->
	<tx:advice id="TestAdvice" transaction-manager="transactionManager">
		<!-- 配置事务传播性,隔离级别以及超时回滚问题 -->
		<tx:attributes>
			<tx:method name="save*" propagation="REQUIRED"/>
			<tx:method name="del*" propagation="REQUIRED"/>
			<tx:method name="update*" propagation="REQUIRED"/>
			<tx:method name="add*" propagation="REQUIRED"/>
			<tx:method name="*" rollback-for="Exception"/>
		</tx:attributes>
	</tx:advice>
	<aop:config>
		<!-- 配置事务切点 -->
		<aop:pointcut expression="execution(* com.dk1.xaz.service.*.*(..))" 
					id="services"/>
		<aop:advisor advice-ref="TestAdvice" pointcut-ref="services"/>
	</aop:config>

    4,配置DAO

<!-- 配置DAO -->
       <!-- 多个mapper配置,推荐使用扫描器配置,mybatis配置文件不需要引入映射文件,多个包以,分隔 -->
       <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
           <property name="basePackage" value="com.dk1.xaz.dao"/>
           <property name="sqlSessionFactoryBeanName" value="sessionFactory"/>
       </bean>

    5,配置Service

<!-- 配置Service -->	
	<bean id="studentService" class="com.dk1.xaz.service.StudentService">
		<property name="studentMapper" ref="studentMapper"/>
	</bean>	
6,基本配置完成,开始进行测试(test)
    1,编写bean
       
    2,编写Mapper接口
      
    3,编写Mapper接口映射文件(配置SQL语句)
<mapper namespace="com.dk1.xaz.dao.StudentMapper">
	<select id="selStudent" resultType="Student">
		select * from t_student
	</select>
	<insert id="addStudent" parameterType="student">
		insert into t_student(sid,sname,tclass) values(seq_id.nextval,#{sname},#{tclass})
	</insert>
</mapper>

    4,编写service接口及实现类

        1,service接口


        2,实现类


    5,编写controller(action)文件
       

    6,编写springmvc.xml

      

<!-- 配置处理器映射器BeanNameUrlHandlerMapping:表示将定义的Bean名字作为请求的url,
	需要将编写的controller在spring容器中进行配置
	且指定bean的name为请求的url,且必须以.action结尾
 -->
 <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
     <!-- 配置处理器适配器 -->
     <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>
     <!-- 配置处理器 -->
     <bean id="studentSelController" name="/studentSelController.action" class="com.dk1.xaz.controller.StudentSelController">
	 <property name="studentService" ref="studentService"></property>
     </bean>
     <bean id="studentAddController" name="/studentAddController.action" class="com.dk1.xaz.controller.StudentAddController">
	 <property name="studentService" ref="studentService"></property>
     </bean>
     <!-- 配置视图解析器 -->
     <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
	 <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"></property>
	 <property name="prefix" value="/"></property>
	 <property name="suffix" value=".jsp"></property>
     </bean>

7,配置web.xml文件

<!-- 配置springMVC前端控制器 -->	 
<servlet>
    <servlet-name>springMVC</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <!-- 配置springMVC初始化参数(指定springMVC配置的文件的位置) -->
    <init-param>
	<param-name>contextConfigLocation</param-name>
	<param-value>classpath:springmvc.xml</param-value>
    </init-param>
	<!-- 随web服务 该servlet会创建 -->
	<load-on-startup>1</load-on-startup>
 </servlet>
    <servlet-mapping>
	<servlet-name>springMVC</servlet-name>
	<!-- 以action为后缀 -->
	<url-pattern>*.action</url-pattern>
    </servlet-mapping>
 <!-- spring配置 -->
 <context-param>
	<param-name>contextConfigLocation</param-name>
	<param-value>classpath:applicationContext.xml</param-value>
 </context-param>
    <listener>
	<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
8,编写index.jsp页面
    
9,测试运行结果
    







阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页