Hello Mybatis 04 使用spring-mybatis

顺着上一篇,这里介绍下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,布布扣,bubuko.com

时间: 2024-10-03 13:46:53

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

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

https://pan.baidu.com/s/1bptYGAb#list/path=%2F&parentPath=%2Fsharelink389619878-229862621083040 第04项目:淘淘商城(SpringMVC+Spring+Mybatis) 的学习实践总结[第四天] 第04项目:淘淘商城(SpringMVC+Spring+Mybatis) 的学习实践总结[第五天] 开发环境: Eclipse IDE for Enterprise Java DevelopersOS: Wi

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

https://pan.baidu.com/s/1bptYGAb#list/path=%2F&parentPath=%2Fsharelink389619878-229862621083040 第04项目:淘淘商城(SpringMVC+Spring+Mybatis) 的学习实践总结[第五天] 第04项目:淘淘商城(SpringMVC+Spring+Mybatis) 的学习实践总结[第六天] 第04项目:淘淘商城(SpringMVC+Spring+Mybatis)[第七天](redis缓存) 第04

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

https://pan.baidu.com/s/1bptYGAb#list/path=%2F&parentPath=%2Fsharelink389619878-229862621083040 第04项目:淘淘商城(SpringMVC+Spring+Mybatis) 的学习实践总结[第五天] 第04项目:淘淘商城(SpringMVC+Spring+Mybatis) 的学习实践总结[第六天] 第04项目:淘淘商城(SpringMVC+Spring+Mybatis)[第七天](redis缓存) 第04

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

https://pan.baidu.com/s/1bptYGAb#list/path=%2F&parentPath=%2Fsharelink389619878-229862621083040 第04项目:淘淘商城(SpringMVC+Spring+Mybatis) 的学习实践总结[第六天] 第04项目:淘淘商城(SpringMVC+Spring+Mybatis)[第七天](redis缓存) 第04项目:淘淘商城(SpringMVC+Spring+Mybatis)[第八天](solr服务器搭建.搜

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

https://pan.baidu.com/s/1bptYGAb#list/path=%2F&parentPath=%2Fsharelink389619878-229862621083040 第04项目:淘淘商城(SpringMVC+Spring+Mybatis)[第七天](redis缓存) 第04项目:淘淘商城(SpringMVC+Spring+Mybatis)[第八天](solr服务器搭建.搜索功能实现) 第04项目:淘淘商城(SpringMVC+Spring+Mybatis)[第九天](商

SpringMVC+Spring+Mybatis+Mysql项目搭建

眼下俺在搭建一个自己的个人站点玩玩.一边练习.一边把用到的技术总结一下,日后好复习. 站点框架大致例如以下图所看到的: 眼下仅仅用到了SpringMVC+Spring+Mybatis+Mysql.把它弄到了自己的server上来玩耍. 后台结构图: 眼下主要分为: view–controller层与前台交互,登陆拦截器 utils–工具类.一些经常使用的工具类. interceptor–拦截器.页面请求地址拦截和预防XSS漏洞拦截. impl–接口类,Service层-进行业务处理. excep

基于Springmvc+Spring+Mybatis+Jqueryeasyui个人信息管理平台(日程管理、天气类型、资产管理、理财规划)

基于Springmvc+Spring+Mybatis+Jqueryeasyui个人信息管理平台(日程管理.天气类型.资产管理.理财规划) 课程讲师老牛 课程分类Java 适合人群中级 课时数量78课时 更新程度完毕 服务类型C类普通服务类课程 用到技术Springmvcspringmybatisjquery easyui 涉及项目个人信息管理好友管理报表实现 咨询QQ2050339477 课程链接http://www.dwz.cn/LO1X3 课程背景 本系统主要用于个人信息的管理通过软件工具对

Spring+MyBatis实现数据库读写分离方案

方案1通过MyBatis配置文件创建读写分离两个DataSource,每个SqlSessionFactoryBean对象的mapperLocations属性制定两个读写数据源的配置文件.将所有读的操作配置在读文件中,所有写的操作配置在写文件中. 优点:实现简单缺点:维护麻烦,需要对原有的xml文件进行重新修改,不支持多读,不易扩展实现方式 <bean id="abstractDataSource" abstract="true" class="com

Java Web开发中Spring+MyBatis框架的简单搭建

这里使用的eclipse,首先创建一个动态web项目. 1.导入Spring IOC.AOP.DAO.dbcp.dbdrive.mybatis.jar . mybatis-spring.jar  本人使用的jar包和版本如下: aopalliance.jaraspectjweaver.jarcommons-dbcp-1.4.jarcommons-logging.jarcommons-pool-1.5.6.jarmybatis-3.2.5.jarmybatis-spring-1.2.2.jarmy