Springmvc与mybatis的整合
springmvc的三大组件:
- 处理器映射器
- 处理器适配器
- 视图解析器
三层架构:
Dao层:
一、SqlMapConfig.xml,空文件即可。需要文件头。(xml的文件名可以自取)
二、applicationContext-dao.xml。
1、数据库连接池
2、SqlSessionFactory对象,需要spring和mybatis整合包下的。
3、配置mapper文件扫描器。
- 加载jdbc的配置文件,这里的JDBC文件为db.properties,它存放在src的路径下
<!-- 加载db.properties文件中的内容,db.properties文件中key命名要有一定的特殊规则-->
<context:property-placeholder location="classpath:db.properties"/>
db.properties文件的内容:
jdbc.driver=oracle.jdbc.driver.OracleDriver
jdbc.url=jdbc:oracle:thin:@localhost:1521:orcl
jdbc.username=
jdbc.password=
这里面的value值根据你自己的数据库而定
<!-- 配置数据源,<u>dbcp</u>-->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName" value="${jdbc.driver}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
<property name="maxActive" value="30" />
<property name="maxIdle" value="5" />
</bean>
注意:
* maxActive:最大连接数据库连接数,设 0 为没有限制
* maxIdle:最大等待连接中的数量,设 0 为没有限制
连接池中还有一些其他的参数,比如:maxWait : 最大等待毫秒数,超过时间就会出现错误信息
- 配置SqlSessionFactory对象
<!-- 配置sqlSessionFactory-->
<bean id="sqlSessionFactory"
class="org.mybatis.spring.SqlSessionFactoryBean">
<!--数据库连接池-->
<property name="dataSource" ref="dataSource"/>
<!--加载mybatis的全局配置文件-->
<property name="configLocation"
value="classpath:mybatis/SqlMapConfig.xml"/>
<property name="mapperLocations">
<list>
<value>classpath*:com/lpn/ssm/mapper/*.xml</value>
</list>
</property>
</bean>
- 配置mapper文件扫描器
<!-- 配置mapper扫描器-->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<!--扫描包路劲,如果要扫描多个包,中间使用半角逗号隔开-->
<property name="basePackage" value="com.lpn.ssm.Dao"></property>
<property name="sqlSessionFactoryBeanName"
value="sqlSessionFactory"/>
</bean
Service层:
applicationContext-service.xml包扫描器,扫描@service注解的类。
<!-- 组件自动扫描 -->
<context:component-scan
base-package="com.lpn.ssm.Service"></context:component-scan>
applicationContext-trans.xml配置事务。
<!-- 配置事务 -->
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<!-- 数据源applicationContext-dao.xml中配置啦 -->
<property name="dataSource" ref="dataSource"></property>
</bean>
<!-- 开启注解事务 -->
<tx:annotation-driven transaction-manager="transactionManager"/>
<!-- 通知 -->
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<!-- 传播行为 -->
<tx:method name="save*" propagation="REQUIRED"/>
<tx:method name="delete*" propagation="REQUIRED"/>
<tx:method name="insert*" propagation="REQUIRED"/>
<tx:method name="update*" propagation="REQUIRED"/>
<tx:method name="find*" propagation="SUPPORTS" read-only="true"/>
<tx:method name="get*" propagation="SUPPORTS" read-only="true"/>
<tx:method name="select*" propagation="SUPPORTS" read-only="true"/>
</tx:attributes>
</tx:advice>
Controller层:
Springmvc.xml 配置文件
<!-- 配置扫描器 -->
<context:component-scan
base-package="com.lpn.ssm"></context:component-scan>
<!-- 会自动注册DefaultAnnotationHandlerMapping与AnnotationMethodHandlerAdapter 两个bean,是spring MVC为@Controllers分发请求所必须的,即解决了@Controller注解使用的前提配置。 -->
<mvc:annotation-driven></mvc:annotation-driven>
<bean
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!-- 配置jsp路劲的前缀 -->
<property name="prefix" value="/view/"></property>
<!-- 配置<u>jsp</u>路劲的后缀 -->
<property name="suffix" value=".jsp"></property>
</bean>
<!-- 注释配置 -->
<context:annotation-config></context:annotation-config>
Web.xml
配置spring容量监听器
<!-- 配置context。<u>xml</u>文件 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring/applicationContext.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
配置前端控制器
<servlet>
<servlet-name>springMVC</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring/springMVC.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<!-- 拦截url中有.action的地址,可以改成你自己的,在访问的时候记得加上就行-->
<servlet-mapping>
<servlet-name>springMVC</servlet-name>
<url-pattern>*.action</url-pattern>
</servlet-mapping>
src 分层:
-
com.springmvc.po——实体层
-
com.springmvc.dao——接口层(dao层)
-
com.springmvc.mappers——接口实现层(这里是mybatis通过映射实现的)
-
com.springmvc.service——事务层
-
com.springmvc.service.impl——service实现层
-
com.springmvc.controller——控制层
所需的jar包: