SSM框架(一)--Spring和MyBatis整合(详细教程)

一定要下载源码自己去琢磨,自己配置一遍

GitHub下载这个工程

谈到SSM,我在网上看了很多整合教程,我也跟着一起整合过,都有大大小小的问题,所以今天元旦假期,我就抽一上午写出我自己的教程,一是spring和MyBatis的整合,二是加上SpringMVC,即SSM大功告成。

首先我得说一下我的版本(我觉得版本是次要的,只要你弄清楚配置文件的关系,即怎么配置配置文件,什么版本都一样,只是版本最大的问题我觉得是与jdk和tomcat这些有关)
MyBatis 3.2.7 Spring 3.2.0
再给大家数据库吧,我是MySQL,我把sql文件给你们,直接放数据库运行就可以。

SSM框架测试SQL

废话不多说,先谈谈mybatis和spring整合的思路
1、让spring管理SqlSessionFactory2、让spring管理mapper对象和dao。 使用spring和mybatis整合开发mapper代理及原始dao接口。 自动开启事务,自动关闭 sqlsession.3、让spring管理数据源( 数据库连接池)

在eclipse创建Java工程就行(还没到SpringMVC呢)
先看看目录结构图,因为我装了Spring的插件,所以项目会有个S。dao层是为了实现dao和Mapper两种不同的开发,也可以先忽略,config是资源文件夹。

这里写图片描述

加入jar包
在这里就把所有jar包都一次给你,包括SpringMVC的。

mybatis与spring整合全部jar包(包括springmvc)
1、mybatis3.2.7本身的jar包
2、数据库驱动包
3、spring3.2.0
4、spring和mybatis整合包 从mybatis的官方下载spring和mybatis整合包

log4j.properties这个也是Spring依赖的日志文件,大家如果需要自行下载工程查看哈。

重点(配置文件),别急着复制配置文件,因为具体的要看开发情况,先了解一下

SqlMapconfig.xml mybatis配置文件:别名、settings,数据源不在这里配置(因为有了Spring来管理)

<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>

    <!-- 定义 别名 -->
    <typeAliases>
        <!--
        单个别名的定义
        alias:别名,type:别名映射的类型  -->
        <!-- <typeAlias type="com.hust.mybatis.po.User" alias="user"/> -->
        <!-- 批量别名定义
        指定包路径,自动扫描包下边的pojo,定义别名,别名默认为类名(首字母小写或大写)
         -->
        <package name="com.hust.springmybatis.po"/>

    </typeAliases>

    <mappers>
        <!-- 通过resource引用mapper的映射文件 -->
        <mapper resource="sqlmap/User.xml" />
        <mapper resource="mapper/UserMapper.xml" />
    </mappers>

</configuration>

applicationContext.xml
1、数据源(dbcp连接池)(db.properties自行下载工程查看哈,再说这个一般人都会)
2、SqlSessionFactory
3、mapper或dao

<?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"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd
        http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.2.xsd">

    <!-- 配置数据源 -->
    <context:property-placeholder location="classpath:db.properties"/>

    <!-- 如果是用额外的配置文件 -->
    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
        destroy-method="close">
        <property name="driverClassName" value="${jdbc.driver}"></property>
        <property name="url" value="${jdbc.url}"></property>
        <property name="username" value="${jdbc.username}"></property>
        <property name="password" value="${jdbc.password}"></property>
        <property name="maxActive" value="10"></property>
        <property name="maxIdle" value="5"></property>
    </bean>

    <!-- SqlSessionFactory -->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <!-- 数据源 -->
        <property name="dataSource" ref="dataSource"></property>
        <!-- mybatis配置文件 -->
        <property name="configLocation" value="classpath:mybatis/SqlMapConfig.xml"></property>
    </bean>

    <bean id="userDao" class="com.hust.springmybatis.dao.UserDaoImpl">
        <property name="sqlSessionFactory" ref="sqlSessionFactory"></property>
    </bean>

    <!-- 配置Mapper 
         MapperFactoryBean:用于生成mapper代理对象
    -->
    <!-- <bean id="userMapper" class="org.mybatis.spring.mapper.MapperFactoryBean">
        <property name="mapperInterface" value="com.hust.springmybatis.mapper.UserMapper"></property>
        <property name="sqlSessionFactory" ref="sqlSessionFactory"></property>
    </bean> -->

    <!-- MapperScannerConfigurer:mapper的扫描器,将包下边的mapper接口自动创建代理对象
        自动创建到spring容器中,bean的id是mapper的类名(首字母小写)
     -->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <!-- 配置扫描包路径
             如果要扫描多个包,中间使用半角逗好隔开
         -->
        <property name="basePackage" value="com.hust.springmybatis.mapper"></property>
        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property>
    </bean>
</beans>

整合开发原始dao接口
配置SqlSessionFactory
在 applicationContext.xml配置SqlSessionFactory

这里写图片描述

开发dao,这里就举findUserById这个例子
dao接口
这里写图片描述

dao的实现类,在这儿调用配置文件配置的东西(test是配置文件的namespace)
这里写图片描述

user.xml配置文件,这个id必须和dao里面的方法名一致
这里写图片描述

最有别忘了去Spring的配置文件applicationContext.xml里面配置dao
这里写图片描述

以上完成之后,就可以开始测试dao接口
这里写图片描述

这样Dao的开发就大功告成,不过不要惊喜,我们还要实现Mapper的代理方法。
开发mapper.xml和mapper.java
一种是使用MapperFactoryBean,使用此方法对于每个mapper都需要配置,比较繁琐。所以我们使用第二种,MapperScannerConfigurer(扫描mapper)
在spring的配置文件配置扫描mapper
这里写图片描述

开发mapper,还是以findUserById为例
UserMapper.java
这里写图片描述

UserMapper.xml
这里写图片描述

这个xml可以放在和UserMapper.java一个包里面,就会被Spring扫描到,这个工程,我是单独放在资源文件的mapper里面,所以得在在SqlMapConfig.xml里面配置
这里写图片描述

测试mapper接口
这里写图片描述

至此,Spring与MyBaits的整合与开发都可以了。
一定要下载源码自己去琢磨,自己配置一遍
GitHub下载这个工程

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,425评论 4 361
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,058评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,186评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,848评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,249评论 3 286
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,554评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,830评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,536评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,239评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,505评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,004评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,346评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,999评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,060评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,821评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,574评论 2 271
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,480评论 2 267

推荐阅读更多精彩内容