1、这几天在网上查找spring和mybatis的整合的博客以及相关的资料,弄来弄去,程序还是跑不起来。今天早上突然意识到,什么事都是从零开始的,所以,我就改变了我的整合思路:首先,先在spring上整合数据源(请参考本人的上一篇博客),其次,整合sqlSessionFactoryBean。具体请看下面:

2、前期准备:(1)、对mybatis有一定的了解,能够使用其基本功能。(2)、理解spring的相关原理和概念

3、总体的包和类等等

所以,在我们开始之前,请自己下载好相关的jar包,包括
(spring:)
http://repo.spring.io
(mybatis:)
https://github.com/mybatis/mybatis-3/releases
(mybatis-spring:)
https://github.com/mybatis/spring/releases

百度云下载链接
4、配置applicationContext.xml文件:(配置文件里面的前16行是我随便在网上找的,宜多不宜少)

<?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:p="http://www.springframework.org/schema/p"      xmlns:context="http://www.springframework.org/schema/context"      xmlns:util="http://www.springframework.org/schema/util"     xmlns:mvc="http://www.springframework.org/schema/mvc"      xsi:schemaLocation="          http://www.springframework.org/schema/util          http://www.springframework.org/schema/util/spring-util-3.1.xsd          http://www.springframework.org/schema/beans           http://www.springframework.org/schema/beans/spring-beans-3.1.xsd          http://www.springframework.org/schema/context           http://www.springframework.org/schema/context/spring-context-3.1.xsd          http://www.springframework.org/schema/mvc         http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd">  

       <!-- 数据源 -->    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"      destroy-method="close">         <property name="driverClass" value="com.mysql.jdbc.Driver"/>      <property name="jdbcUrl" value="jdbc:mysql://localhost/test"/>        <property name="user" value="root"/>      <property name="password" value=""/>      </bean>

    <!-- 注意:这个class是jar包中的 -->    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">         <property name="dataSource" ref="dataSource" />   </bean>   

      <!-- 关联sqlSessionFacotry, 生成相关的sqlSession; 对mybatis的mapper接口,注入成beans -->        <!-- 注意:这个class是jar包中的 -->     <bean id="userMapper" class="org.mybatis.spring.mapper.MapperFactoryBean">                <!-- 注意:这个是value,不是class -->          <property name="mapperInterface" value="com.dao.UserMapper"/>         <property name="sqlSessionFactory" ref="sqlSessionFactory"/>      </bean>

        <!-- 这个和上面的bean是差不多的 -->        <bean id="managerMapper" class="org.mybatis.spring.mapper.MapperFactoryBean">       <property name="mapperInterface" value="com.dao.ManagerMapper"/>          <property name="sqlSessionFactory" ref="sqlSessionFactory"/>      </bean>

        <!-- 业务bean -->   <bean id="testService" class="com.impl.TestServiceImpl">          <property name="userMapper" ref="userMapper"/>        <property name="managerMapper" ref="managerMapper"/>      </bean> </beans>

5、models,包括user和manager

public class User {

  private int id;   private String name;  private String password;

  public User(){

  }

  public int getId() {      return id;    } public void setId(int id) {       this.id = id;    } public String getName() {     return name;  } public void setName(String name) {        this.name = name;    } public String getPassword() {     return password;  } public void setPassword(String password) {        this.password = password;    }

}
package com.models;

public class Manager {

    private int id;   private String name;  private String password;

  public Manager(){

  } public int getId() {      return id;    } public void setId(int id) {       this.id = id;    } public String getName() {     return name;  } public void setName(String name) {        this.name = name;    } public String getPassword() {     return password;  } public void setPassword(String password) {        this.password = password;    }}

6、mybatis的mapper接口:(没有,也不用实现类)

package com.dao;

import org.apache.ibatis.annotations.Param;import org.apache.ibatis.annotations.Select;

import com.models.User;

public interface UserMapper {    @Select("SELECT * FROM user WHERE id = #{id}")    public User getUser(@Param("id") String userId);}
import org.apache.ibatis.annotations.Select;

import com.models.Manager;public interface ManagerMapper {  @Select("SELECT * FROM manager WHERE id = #{id}") public Manager getManager(String managerID);}

7、写到这里,我们的工作已经基本上完成了大部分,让我们写一个main函数测试一下:

package com.test;

import org.springframework.context.ApplicationContext;import org.springframework.context.support.FileSystemXmlApplicationContext;

import com.dao.UserMapper;import com.models.Manager;import com.models.User;import com.service.TestService;

public class SpringTest { public static void main(String[] args) {      ApplicationContext aa = new FileSystemXmlApplicationContext("classpath:applicationContext.xml");                //在我数据库中的userId有1这一条     User user = (User)aa.getBean(UserMapper.class).getUser("1");       System.out.println(user.getId());     System.out.println(user.getName());       System.out.println(user.getPassword());   }}

8、接下来,我们写事物的业务接口和实现此接口的业务类:
先看业务接口:

package com.service;

import com.models.Manager;import com.models.User;

public interface TestService {

  public User doSomeBusinessStuff(String userID);

  public Manager getManagerBusiness(String managerID);}

再看看实现类:(注意,下面的两个setter方法不能省略,可以省略getter方法)

package com.impl;

import com.dao.ManagerMapper;import com.dao.UserMapper;import com.models.Manager;import com.models.User;import com.service.TestService;

public class TestServiceImpl implements TestService{

    private UserMapper userMapper;    private ManagerMapper managerMapper;

  public void setUserMapper(UserMapper userMapper){     this.userMapper = userMapper;    }

    public void setManagerMapper(ManagerMapper managerMapper) {       this.managerMapper = managerMapper;  }

   @Override    public User doSomeBusinessStuff(String userID) {      return this.userMapper.getUser(userID);   }

   @Override    public Manager getManagerBusiness(String managerID) {     return this.managerMapper.getManager(managerID);  }}

9、因为之前我们已经在applicationContext.xml文件中配置了上面这个业务实现类的bean,所以,我们的工作已经完成,let我们test一下:

package com.test;

import org.springframework.context.ApplicationContext;import org.springframework.context.support.FileSystemXmlApplicationContext;

import com.dao.UserMapper;import com.models.Manager;import com.models.User;import com.service.TestService;

public class SpringTest {  public static void main(String[] args) {      ApplicationContext aa = new FileSystemXmlApplicationContext("classpath:applicationContext.xml");       /*User user = (User)aa.getBean(UserMapper.class).getUser("1");     System.out.println(user.getId());     System.out.println(user.getName());       System.out.println(user.getPassword());*/

     TestService service = aa.getBean(TestService.class);

                //调用业务实现类的第一个方法

                User user = service.doSomeBusinessStuff("1");     System.out.println(user.getId());     System.out.println(user.getName());       System.out.println(user.getPassword());

                //调用业务实现类的第二个方法

        Manager manager = service.getManagerBusiness("1");     System.out.println("manager info = "+manager.getId()+"; "+manager.getName()+"; "+manager.getPassword());  }}10、跑起来了吗?come on!!!!!

参考文献:http://mybatis.github.io/spring/

##############################################################################

11、前面我们使用annotation配置mybatis的,但是在实际的项目开发中使用xml文件配置的方式比较多。
所以,下面我们在前面的基础之上使用xml文件配置:

(1)、新增加两个文件,也就是mybatis的xml配置文件,是在config.mappers包下面的:

<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<mapper namespace="com.dao.UserMapper">    <select id="getUser" parameterType="String" resultType="com.models.User">        select * from user where id = #{userID}    </select></mapper>
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<mapper namespace="com.dao.ManagerMapper">    <select id="getManager" resultType="com.models.Manager" parameterType="String">        Select * From manager where id = #{managerID}    </select></mapper>

(3)、修改spring的配置文件applicationContext.xml(只需增加下划线的配置文字即可,也别忘了删掉annotation的配置)

spring整合mybatis(入门级简单教程2)相关推荐

  1. 最新Spring整合MyBatis详解教程

    目录 1.导入相关jar包 1. junit 2. mybatis 3. mysql 4. spring相关 5. aop织入 6. mybatis-spring 7. lombok(选用) 2.回顾 ...

  2. spring整合mybatis(实现数据的增删改查)

    一.专业术语解释 1.spring:是分层的Java SE/EE应用full - stack轻量级开源框架,以IoC(控制反转)和AOP(面向切面编程)为内核,提供展现层spring MVC 和 sp ...

  3. spring整合mybatis(入门级简单教程1)--在spring中配置c3p0,并成功测试

    引子:spring整合mybatis.因为,我们看完(我就是这样的)spring和mybatis之后,本想自己写一个小小的项目,以便加深理解,但是我发现在spring中整合mybatis并不是一件容易 ...

  4. Spring学习笔记:Spring整合Mybatis(mybatis-spring.jar)(二:mybatis整合spring)

    http://blog.csdn.net/qq598535550/article/details/51703190 二.Spring整合mybatis其实是在mybatis的基础上实现Spring框架 ...

  5. springboot中整合mybatis及简单使用

    springboot中整合mybatis及简单使用 1.引入依赖 2.在applicaiton.yaml中配置数据源以及mybatis 3.创建sql测试表 4.编写mapper接口和mapper.x ...

  6. Spring 整合 Mybatis 原理

    目录 Mybatis的基本工作原理 分析需要解决的问题 Spring中Bean的产生过程 解决问题 解决方案 FactoryBean Import 总结 优化 Mybatis的基本工作原理 在 Myb ...

  7. Spring整合MyBatis:实现登录功能

    一.项目搭建 1.创建 web 项目:spring_mybatis 2.搭建项目的目录结构 3.导入 jar 包 注意: 导入 web/WEB-INF/lib 中,一下 jar 包都需要导入 4.创建 ...

  8. SSM之二(Spring整合Mybatis)

    项目与外界交互大概过程如下图: 一般过程是: 前端发送请求,查询数据.增加数据.修改数据.删除数据 中间件经过处理后,对数据发送请求 数据库返回数据,中间件再对数据处理 中间件响应前端请求 上一节关注 ...

  9. Spring整合Mybatis之注解方式,(注解整合Junit)

    Spring整合Mybatis之注解方式 我有一篇博客详细写了我自己使用xml的方法Spring整合MyBatis,现在我就把核心配置文件中的每个bean的配置使用注解的方式实现 注解整合MyBati ...

  10. spring整合mybatis基于注解

    数据库 /* Navicat MySQL Data Transfer Source Server         : mysql Source Server Version : 50549 Sourc ...

最新文章

  1. PMP考前复习题 系列三
  2. ipadpro+打开html文件,iPadPro日常基本功能的使用技巧汇总
  3. mysql注入语句解释,MYSQL注入语句实用精解
  4. Java线程池ThreadPoolExecutor的实例
  5. 组合框载入数据库的内容
  6. a6gpp php,内行人才知道的古董级玛莎拉蒂A6G 2000
  7. 惠普linux打印驱动怎么安装驱动程序,hp打印机驱动怎么安装 惠普打印机驱动程序安装方法【详解】...
  8. 一位平凡毕业生的大学四年
  9. Tomcat启动,提示 The JRE_HOME environment variable is not defined correctly 问题。
  10. CDN加速是什么?具体有什么用?
  11. 联想G50-70无线网开关,无线网显示红叉
  12. L1-1 寻找250(10 分)
  13. OraDump导出套件
  14. 用python画七巧板_用turtle画一个七巧板
  15. Android 应用签名
  16. @支付宝@微信支付,世界第一要来和你们抢生意了!
  17. Direct3D 12入门教程之 ---- Direct3D 12初始化流程
  18. Monkey框架(基础知识篇) - monkey事件介绍
  19. 获取微信小程序的昵称和手机号
  20. bootstrap 图标glyphicons图标符号不正常显示解决办法

热门文章

  1. jQuery Mobile开发1-UI components
  2. python的虚拟环境
  3. 亿级PV超大型网站集群架构图形深度揭秘讲解
  4. linux 网站架构的演变
  5. Logical Volume Manager in Linux ( Create, Displ...
  6. 浅谈死链接和错误链接,如何防范死链接发生
  7. wes 7 gost 下载_南京地铁实现移动5G全覆盖下载速度快到飞起_机房360
  8. 数字信息化是计算机处理信息的基础,计算机基础
  9. oracle 全局临时变量,如何解析Oracle PL / SQL中的简单XML片段并将其加载到全局临时表中?...
  10. 华中科技大学计算机科学卓越班,2016年华中科技大学光电信息科学与工程(卓越计划实验班)专业在江苏录取分数线...