Spring整合MyBatis

###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;	
	}
	
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值