【框架整合】三、整合mybatis

一、导入jar包


所需jar包为  
    mybatis-3.2.0.jar
    mybatis-spring-1.3.0.jar

    
下载地址
    https://repo1.maven.org/maven2/org/mybatis/mybatis/
    https://repo1.maven.org/maven2/org/mybatis/mybatis-spring/



二、 spring配置 引入mybatis


在刚刚的数据源配置文件applicationContext-datasource中,加上如下配置

<!-- mybatis 配置 开始-->
	
	<!-- mybatis的sqlSession工厂:sqlSessionFactory -->
	<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
		<property name="dataSource" ref="dataSource"></property>
		 <!-- mybatis不用配置  configLocation -->
		<!-- <property name="configLocation" value="classpath:ibatis-config.xml"></property> -->
		<property name="mapperLocations" value="classpath*:com/**/mappers/**/*.xml" />
	</bean> 
	
	
	<!-- mybatis自动扫描加载映射文件,接口 basePackage:需要扫描的包-->
	<!-- basePackage配置错 异常Injection of autowired dependencies failed  No qualifying bean of type [XXXMapper]-->
	<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
		<property name="basePackage" value="com.mvc.*.dao"></property>
		<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property>
	</bean>
	
	
	<!-- mybatis 配置 结束-->

上面的最终的正确配置
这边遇到很多坑
一开始使用的配置是sqlSessionFactory
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> ?
				<property name="basePackage" value="com.xxxx.dal.mapper" />?
				<property name="sqlSessionFactoryBeanName" value="ysSqlSessionFactory" />
				<!-- <property name="sqlSessionFactory" ref="sqlSessionFactory"></property> -->
			</bean>


结果报错 java.lang.ClassNotFoundException: ${jdbc.driver}

后来改用sqlSessionFactoryBeanName注入就没有问题(不要使用sqlSessionFactory属性注入,使用sqlSessionFactoryBeanName注入),因为这时不会立即初始化sqlSessionFactory,传入的只是名字,非bean,所以不会引发提前初始化问题
   
   特别注意 改由使用sqlSessionFactoryBeanName注入之后 把ref 换成value 否则报错
   org.springframework.beans.factory.BeanCreationException: Error creating bean with name  

   'org.mybatis.spring.mapper.MapperScannerConfigurer#0'   
   ......

   no matching editors or conversion strategy found

   这点粗心的话容易被忽略掉



三、测试

1.使用generatorConfig.xml自动生成 实力类、dao、及映射文件

详见: http://blog.csdn.net/xiaxiaozhang/article/details/72851075


并新建service类和controller类


最终结构如图



附带一下 controller的代码 简单书写,只为测试

package com.mvc.mybatis.controller;

import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

import com.mvc.mybatis.dao.model.MyInfo;
import com.mvc.mybatis.dao.model.MyInfoCriteria;
import com.mvc.mybatis.service.MyTestService;
/**
 * mybatis测试
 * 
 * @author xiazhang
 * @date   2017-6-15
 */
@Controller
public class MyBatisTestController {
	
	private static Logger logger = LoggerFactory.getLogger(MyBatisTestController.class);
	
	@Autowired
	private MyTestService myTestService;

	@RequestMapping(value="/myTest" , method = RequestMethod.POST)
	public void myTest(HttpServletRequest request , HttpServletResponse response) throws Exception{
		MyInfoCriteria myInfo = new MyInfoCriteria();
		List<MyInfo> myInfoList = myTestService.getMyInfoList(myInfo);
		if(myInfoList != null){
			for (MyInfo myInfo2 : myInfoList) {
				logger.info("name:{};sex:{}",myInfo2.getName(),myInfo2.getSex());
			}
		}
	 
	}
	
	
	
	
}




启动服务  发送post请求  http://localhost:8090/mySpringmvcWeb/myTest

结果

[INFO ] 2017-06-17 19:03:35 com.mvc.mybatis.controller.MyBatisTestController name:xiazhang;sex:男
[INFO ] 2017-06-17 19:03:35 com.mvc.mybatis.controller.MyBatisTestController name:nihao;sex:女



success






















  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值