一、SSM整合
1.1、引入依赖
1.2、整体步骤
-
建表
-
编写实体类
-
Dao接口
-
Mapper.xml配置文件
-
Service接口
-
Service实现类
-
编写spring.xml配置文件进行spring整合mybatis
-
开启注解扫描
<context:component-scan base-package="com.linstudy" />
-
创建数据源对象:DruidDataSource,注入四要素。
-
创建SqlSessionFactory、SqlSessionFactoryBean对象,注入mapper配置文件位置,注入别名。
-
创建Dao对象,配置
MapperScannerConfigurer
,注入SqlSessionFactoryBeanName
,注入Dao接口所在的包。 -
创建事务管理器:
DataSourceTransactionManager
,注入dataSource
。 -
开启注解式事务驱动
<tx:annotation-driven transaction-manager="事务工厂的id" />
-
1.3、spring.xml
1.3.1、注解声明事务
<!-- 加载数据源的配置文件-->
<context:property-placeholder location="classpath:db.properties"/>
<!--开启注解扫描-->
<context:component-scan base-package="cn.linstudy"/>
<!-- 配置数据库连接池-->
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" >
<!-- 数据库四要素-->
<property name="driverClassName" value="${jdbc.driverClassName}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</bean>
<!-- 创建SqlSessionFactory、创建SqlSessionFactoryBean-->
<bean id="sqlSessionFactoryBean" class="org.mybatis.spring.SqlSessionFactoryBean">
<!-- 配置数据源-->
<property name="dataSource" ref="dataSource"/>
<!-- 配置别名-->
<property name="typeAliasesPackage" value="cn.linstudy.domain"/>
<!-- 配置mapper.xml的位置-->
<property name="mapperLocations" value="classpath:cn/linstudy/mapper/*.xml"/>
</bean>
<!-- mapper接口的位置-->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="cn.linstudy.dao"/>
</bean>
<!-- 配置事务管理器 WHAT-->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"/>
</bean>
<!-- 开启注解式事务生效 -->
<tx:annotation-driven transaction-manager="transactionManager" />
1.3.2、不使用注解
<!-- 加载数据源的配置文件-->
<context:property-placeholder location="classpath:db.properties"/>
<!--开启注解扫描-->
<context:component-scan base-package="cn.linstudy"/>
<!-- 配置数据库连接池-->
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" >
<!-- 数据库四要素-->
<property name="driverClassName" value="${jdbc.driverClassName}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</bean>
<!-- 创建SqlSessionFactory、创建SqlSessionFactoryBean-->
<bean id="sqlSessionFactoryBean" class="org.mybatis.spring.SqlSessionFactoryBean">
<!-- 配置数据源-->
<property name="dataSource" ref="dataSource"/>
<!-- 配置别名-->
<property name="typeAliasesPackage" value="cn.linstudy.domain"/>
<!-- 配置mapper.xml的位置-->
<property name="mapperLocations" value="classpath:cn/linstudy/mapper/*.xml"/>
</bean>
<!-- mapper接口的位置-->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="cn.linstudy.dao"/>
</bean>
<!-- 配置事务管理器 WHAT-->
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"/>
</bean>
<!-- 配置增强,包含 WHEN,并关联上面 WHAT-->
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="get*" read-only="true"/>
<tx:method name="select*" read-only="true"/>
<tx:method name="query*" read-only="true"/>
<tx:method name="count*" read-only="true"/>
<tx:method name="list*" read-only="true"/>
<tx:method name="*"/>
</tx:attributes>
</tx:advice>
<!-- 配置 AOP -->
<aop:config>
<!-- WHERE -->
<aop:pointcut id="txPointcut" expression="execution(*cn.linstudy.service.impl.*ServiceImpl.*(..))"/>
<!-- 关联 WHERE WHEN-->
<aop:advisor advice-ref="txAdvice" pointcut-ref="txPointcut"/>
</aop:config>
二、SS整合
SS整合是Spring+SpringMVC的无缝整合。
2.1、整合步骤
-
配置web.xml
-
启动工厂监听器ContextLoaderListener
-
配置工厂配置文件,告知spring.xml配置文件的所在地
<context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring.xml</param-value> </context-param>
-
配置springmvc的核心Servlet
<servlet> <servlet-name>dispatcherServlet</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:springmvc.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>dispatcherServlet</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping>
-
配置字符过滤器,解决springmvc接收post请求的乱码
<!-- 配置字符过滤器--> <filter> <filter-name>characterEncodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>utf8</param-value> </init-param> </filter> <filter-mapping> <filter-name>characterEncodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
-
-
springmvc.xml配置
-
开启注解扫描
<context:component-scan base-package="cn.linstudy.controller"/>
-
配置处理器映射器和处理器适配器
<mvc:annotation-driven/>
-
配置视图解析器
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/views/" /> <property name="suffix" value=".jsp"/> </bean>
-
配置处理静态资源
<mvc:default-servlet-handler/>
-
2.2、springmvc.xml
<!-- 配置控制器对象-->
<context:component-scan base-package="cn.linstudy.controller"/>
<!-- 配置注解解析器-->
<mvc:annotation-driven/>
<!-- 配置处理静态资源-->
<mvc:default-servlet-handler/>
<!-- 配置视图解析器-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/views/" />
<property name="suffix" value=".jsp"/>
</bean>
<!-- 关联spring.xml-->
<import resource="classpath:spring.xml"/>
2.3、web.xml
<!-- 配置字符过滤器-->
<filter>
<filter-name>characterEncodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>utf8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>characterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- 配置dispatcherServlet-->
<servlet>
<servlet-name>dispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<!--配置工厂监听器-->
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcherServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>