顺着上一篇,这里介绍下spring-mybatis的配置。

我们使用mybatis去操作数据库的时候,每次都要不停地openSession,closeSession好烦躁哇~~这样工作哪里有效率可言!!!看看别人家框架的孩子从来都没有这些破事儿。

  mybatis社区的人终于看不下去了,所以他们借助spring开发了犀利的mybatis-spring。我们都知道spring是一个非常著名的java框架,它可以轻松地管理类实例对象和整合多个框架,但是Spring 3.0 的开发在 MyBatis 3.0 官方发布前就结束了,所以mybatis社区只好自己开发了mybatis-spring(实际上spring发布4的时候,spring社区依然没有支持mybatis的包,大概是觉得mybatis-spring已经足够优秀了,所以就没有选择再开发一个包了)。

准备工作

我们需要从网站上下载下面两个包

spring-mybatis下载地址:

https://github.com/mybatis/spring/releases/download/mybatis-spring-1.2.2/mybatis-spring-1.2.2.zip

spring下载地址(现在spring更加提倡使用maven来管理项目。找jar包真是太麻烦了~):

http://repo.spring.io/libs-release-local/org/springframework/spring/4.0.5.RELEASE/spring-framework-4.0.5.RELEASE-dist.zip

将下载过来的jar包放入lib目录

配置文件

上配置文件applicationContext.xml(放在src下)

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd">
<!-- 数据库配置文件位置 -->
<context:property-placeholder location="classpath:jdbc.properties" /> <!-- 配置dbcp数据源 -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="${jdbc.driverClassName}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
<!-- 队列中的最小等待数 -->
<property name="minIdle" value="${jdbc.minIdle}"></property>
<!-- 队列中的最大等待数 -->
<property name="maxIdle" value="${jdbc.maxIdle}"></property>
<!-- 最长等待时间,单位毫秒 -->
<property name="maxWait" value="${jdbc.maxWait}"></property>
<!-- 最大活跃数 -->
<property name="maxActive" value="${jdbc.maxActive}"></property>
<property name="initialSize" value="${jdbc.initialSize}"></property>
</bean> <!-- 配置mybitasSqlSessionFactoryBean,这里会读取Mybatis的配置文件Configuration.xml和数据库连接池 -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="configLocation" value="classpath:Configuration.xml"></property>
</bean> <!-- 配置SqlSessionTemplate -->
<bean id="sqlSessionTemplate" class="org.mybatis.spring.SqlSessionTemplate">
<constructor-arg name="sqlSessionFactory" ref="sqlSessionFactory" />
</bean> <!-- 事务配置 -->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean> <!-- 通过mybatis来扫描对应的接口,并实施注入 -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="pro.app.inter" />
<property name="sqlSessionTemplateBeanName" value="sqlSessionTemplate" />
</bean>
</beans>

上面这个配置文件中有几个类非常重要~

  首先隆重介绍了下 sqlSessionTemplate ,这个类是MyBatis-Spring的核心,从配置中可以看出它引用了一个SessionFactory类,我们可以将它理解为一个高级的SessionFactory,它负责管理MyBatis的SqlSession,通过spring优秀的资源管理,SqlSessionTemplate保证了SqlSession是和当前的事务是相关的。SqlSessionTemplate同时还管理着session的生命周期,也就是说它会自动的打开和关闭session。

之前的代码中,我们需要通过类似下面的代码获得Mapper的实例对象

UserDAO users = session.getMapper(UserDAO.class);

来获得接口的实例对象,现在把一切交给spring吧,懒人总是有这么多偷懒的办法 -_-!

<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
  <property name="basePackage" value="pro.app.inter" />
<property name="sqlSessionTemplateBeanName" value="sqlSessionTemplate" />
</bean>

通过 org.mybatis.spring.mapper.MapperScannerConfigurer类,spring为我们准备好了所有需要使用的接口类。

在同级目录下还要放入jdbc.properties配置文件

jdbc.driverClassName=org.gjt.mm.mysql.Driver
jdbc.url=jdbc:mysql://localhost:3306/blog?useUnicode=true&amp;characterEncoding=utf-8
jdbc.username=mybatis
jdbc.password=mybatis
jdbc.maxActive =10
jdbc.maxIdle =10
jdbc.minIdle=10
jdbc.initialSize=10
jdbc.maxWait =3000

测试结果

Now,让我们试试这个神奇的配置。

新建一个测试类

public class Test {
public static void main(String args[]){
//暂时通过这个类获得spring配置文件
ApplicationContext ac=new ClassPathXmlApplicationContext("applicationContext.xml");
UserMapper userDao= (UserMapper)ac.getBean("userMapper");
System.out.println(userDao);
User user = userDao.selectOne(1);
System.out.println(user.getName());
}
}

接着,它很顺利地打印出了

mybatis

相比之前各种打开关闭和异常处理,这里的代码是不是少了很多,mybatis从此赶上了别人家的孩子~

总结

使用mybatis-spring来管理SessionFactory

Mybatis-spring官网 http://mybatis.github.io/spring/zh/

Hello Mybatis 04 使用spring-mybatis的更多相关文章

  1. SpringMVC+Spring+mybatis项目从零开始--Spring mybatis mysql配置实现

    上一章我们把SSM项目结构已搭建(SSM框架web项目从零开始--分布式项目结构搭建)完毕,本章将实现Spring,mybatis,mysql等相关配置. 1.    外部架包依赖引入 外部依赖包引入 ...

  2. 第04项目:淘淘商城(SpringMVC+Spring+Mybatis) 的学习实践总结【第二天】

    淘淘商城(SpringMVC+Spring+Mybatis)  是传智播客在2015年9月份录制的,几年过去了.由于视频里课上老师敲的代码和项目笔记有些细节上存在出入,只有根据日志报错信息作出适当的调 ...

  3. 第04项目:淘淘商城(SpringMVC+Spring+Mybatis) 的学习实践总结【第一天】

    本人做过一年的MATLAB编程和简单维护过VB和C++的项目.是跟着网上获得的黑马的Java双元视频课来自学入门Java知识和常用框架的使用. 淘淘商城(SpringMVC+Spring+Mybati ...

  4. 第04项目:淘淘商城(SpringMVC+Spring+Mybatis)【第十二天】(系统架构讲解、nginx)

    https://pan.baidu.com/s/1bptYGAb#list/path=%2F&parentPath=%2Fsharelink389619878-229862621083040 ...

  5. 第04项目:淘淘商城(SpringMVC+Spring+Mybatis)【第十一天】(购物车+订单)

    https://pan.baidu.com/s/1bptYGAb#list/path=%2F&parentPath=%2Fsharelink389619878-229862621083040 ...

  6. 第04项目:淘淘商城(SpringMVC+Spring+Mybatis)【第十天】(单点登录系统实现)

    https://pan.baidu.com/s/1bptYGAb#list/path=%2F&parentPath=%2Fsharelink389619878-229862621083040 ...

  7. 第04项目:淘淘商城(SpringMVC+Spring+Mybatis)【第九天】(商品详情页面实现)

    https://pan.baidu.com/s/1bptYGAb#list/path=%2F&parentPath=%2Fsharelink389619878-229862621083040 ...

  8. 第04项目:淘淘商城(SpringMVC+Spring+Mybatis)【第八天】(solr服务器搭建、搜索功能实现)

    https://pan.baidu.com/s/1bptYGAb#list/path=%2F&parentPath=%2Fsharelink389619878-229862621083040 ...

  9. 第04项目:淘淘商城(SpringMVC+Spring+Mybatis)【第七天】(redis缓存)

    https://pan.baidu.com/s/1bptYGAb#list/path=%2F&parentPath=%2Fsharelink389619878-229862621083040 ...

  10. 第04项目:淘淘商城(SpringMVC+Spring+Mybatis) 的学习实践总结【第六天】

    https://pan.baidu.com/s/1bptYGAb#list/path=%2F&parentPath=%2Fsharelink389619878-229862621083040 ...

随机推荐

  1. error C2065: “CDatabase”: 未声明的标识符

    使用vc++与access的接口时出现错误“error C2065: “CDatabase”: 未声明的标识符” 解决方法: 添加 #include "afxdb.h"

  2. ES6详解

    1.ES6新增了let命令,用来声明变量.它的用法类似于var,但是所声明的变量,只在let命令所在的代码块内有效. const声明常亮,不可改变 2.变量的解构赋值 (1)数组的解构赋值: 以前,为 ...

  3. Linux网关配置(centos6)

    1.找寻本地机器网关的位置,点击红圈位置 打开后样式 2.双击点开打开网络和共享中心,找到查看活动网络---->点击右边的本地连接 3.点击详细信息 4.查看如下 5.对照配置,进入linux命 ...

  4. C++中未初始化的bool值的问题

    原创文件,欢迎阅读,禁止转载. 问题描述 你见过一个这样的bool值吗,判断 var 和 !var 都是成立的,今天被我遇到了,是在一个坑里遇到的.今天调试了一个程序,发送一个网络消息,结果总是得不到 ...

  5. HDU 4405 Aeroplane chess (概率DP)

    题意:你从0开始,要跳到 n 这个位置,如果当前位置是一个飞行点,那么可以跳过去,要不然就只能掷骰子,问你要掷的次数数学期望,到达或者超过n. 析:概率DP,dp[i] 表示从 i  这个位置到达 n ...

  6. Spring学习笔记 6. 尚硅谷_佟刚_Spring_Bean 之间的关系

    1,继承关系 首先从简单的代码来看,有一个Address类,配置文件有两个bean (1)Address类 package com.zsq; public class Address { privat ...

  7. !important

    当你需要确保某元素具有指定的 CSS 时,你可以使用!important. 举例如下: color: pink !important;

  8. xilium CefGlue集成包

    最近很苦B的要做一个C#的HTM5项目,build了一下xilium CefGlue包,提供下载地址,供那些无法下载的同学们使用. http://yun.baidu.com/s/1slEdNEt

  9. jquery设置元素的readonly和disabled

    jquery设置元素的readonly和disabled Jquery的api中提供了对元素应用disabled和readonly属性的方法,在这里记录下.如下: $( '#line2Tr' ).cs ...

  10. Cassandra对读写请求的处理机制

    1 写请求: 单数据中心: 向所有副本发写请求, 所有副本都写数据, 只要有一致性水平指定数目的节点返回正确响应, 就认为写成功. 多数据中心: 客户端发起写数据请求后, 本地代理节点会把请求发给每个 ...