###Spring与MyBatis整合
1.Spring与MyBatis的整合主要就是配置文件的整合(applicationContext.xml)
<context:property-placeholder location="classpath:db.properties"/>
<!-- 连接池 -->
<bean name="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="${driver}"/>
<property name="user" value="${username}"/>
<property name="password" value="${password}"/>
<property name="jdbcUrl" value="${url}"/>
<property name="maxPoolSize" value="10"></property>
</bean>
<!-- 会话工厂 -->
<bean name="sessionFactoryBean" class="org.mybatis.spring.SqlSessionFactoryBean">
<!-- 注入连接池 -->
<property name="dataSource" ref="dataSource"></property>
<!-- 包别名 -->
<property name="typeAliasesPackage" value="com.xxx.bean"/>
<!-- 指定MyBatis配置文件的路径 -->
<!-- <property name="configLocation" value="classpath:SqlMapConfig.xml"></property> -->
<!-- 单独扫描mapper映射文件 注意:需要加上后缀 因为扫描的是文件路径不是包-->
<property name="mapperLocations" value="classpath:com/xxx/mappers/*.xml"></property>
<!-- 如果要使用MyBatis自带的事物 那就在这里注入相应属性(一般都交给Spring) -->
</bean>
<!-- 让MyBatis自动生成接口的代理实现类
该类用来扫描一堆映射文件 并生成代理类
注意:如果接口与映射文件在同一级目录并且名字一致 可以不用单独扫描映射文件只写下面这个就可以
如果不在同一级 或 名字不同 需要在sqlsessionFactory中使用mappersLocations来指定映射文件
-->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.xxx.dao"></property>
</bean>
<!-- 添加事物管理器 -->
<bean name="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<!-- 注入会话工厂 -->
<property name="dataSource" ref="dataSource"></property>
</bean>
<!-- 启动注解事物 -->
<tx:annotation-driven/>
<!-- 扫描注解 -->
<context:component-scan base-package="com.xxx"/>
###SpringMVC基础
1.SpringMVC核心控制器的配置(在web.xml配置文件中配置)
<servlet>
<servlet-name>Spring</servlet-name>
<servlet-class> org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!-- 指定SpringMVC配置文件的路径 注意:Spring配置文件写在最外层用<context-param>
这里必须写到Servlet标签中间 用<init-param>
-->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:SpringMVC-Servlet.xml</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>Spring</servlet-name>
<!-- 1. /* 拦截所有请求 包括静态资源
2. *.action或 *.do 拦截 .action结束的请求
3. / 拦截所有请求 jsp除外
-->
<url-pattern>*.action</url-pattern>
</servlet-mapping>
2.创建controller类方式一(不常用)
(1.配置文件的配置
<!-- SpringMVC三大组件
1.映射处理器 HandleMapping
负责根据请求对象找到一个可以处理请求的Controller
默认使用BeanNameUrlHandlerMapping
将接收到的请求地址作为name到容器中查找对应的bean
例如请求了 xxxx/getUser.action
把getUser.action作为name到容器中找对象
2.处理适配器
负责映射参数 调用Controller 并返回ModelAndView
3.视图解析器
负责解析ModelAndView中的 视图物理地址
以及将ModelAndView中的参数放入request中
-->
<!-- 如果不想使用默认的映射处理器 可以在容器中手动指定
目前SpringMVC要想实现一个Controller处理多个请求 只能使用注解
-->
<!-- 例如:使用BeanName -->
<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping">
</bean>
<bean name="/getUser.action" class="com.lanou.Controller.UserController"></bean>
<!-- 指定视图解析器 -->
<!-- <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
确定视图的具体路径
前缀
<property name="prefix" value="views/jsp/"/>
后缀
<property name="suffix" value=".jsp"/>
</bean> -->
<!-- 开启扫描注解 -->
<context:component-scan base-package="com.lanou"></context:component-scan>
(2.创建Controller类
public class UserController extends AbstractController{
@Override
protected ModelAndView handleRequestInternal(HttpServletRequest request, HttpServletResponse response)
throws Exception {
ModelAndView mv = new ModelAndView();
// 指定页面
mv.setViewName("list.jsp");
ArrayList<String> users = new ArrayList();
users.add("aaa");
users.add("bbb");
users.add("ccc");
// 默认把数据放到了request中
// 指定数据
mv.addObject("users", users );
return mv;
}
}
3.创建Controller类的方式二(常用)
(1.配置文件的配置(整合SpringMVC和MyBatis)
<!-- 数据库连接池 -->
<bean name="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="user" value="root"></property>
<property name="password" value="123456"></property>
<property name="jdbcUrl" value="jdbc:mysql:///MVCDB"></property>
<property name="driverClass" value="com.mysql.jdbc.Driver"></property>
</bean>
<!-- 会话工厂 -->
<bean name="sqlsessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"></property>
</bean>
<!-- 扫描接口与映射文件 同一目录 名字相同 -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.xxx.dao"></property>
</bean>
<!-- 事物管理器 -->
<bean class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"/>
</bean>
<!-- 事物注解 -->
<tx:annotation-driven/>
<!-- 开启扫描注解 -->
<context:component-scan base-package="com.xxx"></context:component-scan>
(2.创建Controller类
@Controller
public class UserController{
@Autowired
StudentService service;
@RequestMapping("/getUsers.action")
public ModelAndView getuser() {
// 该类表示 模型与视图
// 请求后要去哪个页面 要显示什么数据
ModelAndView mv = new ModelAndView();
// 指定页面
mv.setViewName("list.jsp");
ArrayList<String> users = new ArrayList();
users.add("aaa");
users.add("bbb");
users.add("ccc");
// 默认把数据放到了request中
// 指定数据
mv.addObject("users", users );
return mv;
}