文档章节

Mybatis和spring的整合

 小小小施爷
发布于 2017/09/12 08:45
字数 1286
阅读 4
收藏 0
点赞 0
评论 0

输入图片说明

1 使用原始dao开发:

1.1 导入jar包:

<dependencies>
  	<dependency>
  		<groupId>org.mybatis</groupId>
  		<artifactId>mybatis</artifactId>
  		<version>3.2.7</version>
  	</dependency>
  	<dependency>
  		<groupId>commons-logging</groupId>
  		<artifactId>commons-logging</artifactId>
  		<version>1.2</version>
  	</dependency>
  	<dependency>
  		<groupId>junit</groupId>
  		<artifactId>junit</artifactId>
  		<version>4.12</version>
  	</dependency>
  	<dependency>
  		<groupId>mysql</groupId>
  		<artifactId>mysql-connector-java</artifactId>
  		<version>5.1.43</version>
  	</dependency>
  	<dependency>  
            <groupId>log4j</groupId>  
            <artifactId>log4j</artifactId>  
            <version>1.2.17</version>  
      </dependency> 
      <!-- 引入dbcp连接池 -->
      <dependency>
	    <groupId>commons-dbcp</groupId>
	    <artifactId>commons-dbcp</artifactId>
		    
	    <version>1.2.2</version>
	  </dependency>
      <dependency>
      	<groupId>cglib</groupId>
      	<artifactId>cglib</artifactId>
      	<version>3.1</version>
      </dependency>
      <dependency>
      	<groupId>org.apache.logging.log4j</groupId>
      	<artifactId>log4j-api</artifactId>
      	<version>2.8</version>
      </dependency>
      <dependency>
      	<groupId>org.apache.logging.log4j</groupId>
      	<artifactId>log4j-core</artifactId>
      	<version>2.8</version>
      </dependency>
      <dependency>
      	<groupId>org.slf4j</groupId>
      	<artifactId>slf4j-log4j12</artifactId>
      	<version>1.7.7</version>
      </dependency>
      <dependency>
      	<groupId>asm</groupId>
      	<artifactId>asm</artifactId>
      	<version>3.3</version>
      </dependency>
      <dependency>
		    <groupId>org.mybatis</groupId>
		    <artifactId>mybatis-ehcache</artifactId>
		    <version>1.0.0</version>
		</dependency>
		
		<!-- 加入ehcache缓存包 -->
		<dependency>
		    <groupId>org.ehcache</groupId>
		    <artifactId>ehcache</artifactId>
		    <version>3.4.0</version>
		</dependency>
		<!-- mybatis与ehcache真核包 -->
		<dependency>
		    <groupId>org.mybatis</groupId>
		    <artifactId>mybatis-ehcache</artifactId>
		    <version>1.0.0</version>
		</dependency>
		<dependency>
			<groupId>org.mybatis</groupId>
			<artifactId>mybatis-spring</artifactId>
			<version>1.3.1</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-core</artifactId>
			<version>4.3.8.RELEASE</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-tx</artifactId>
			<version>4.3.8.RELEASE</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-context</artifactId>
			<version>4.3.8.RELEASE</version>
		</dependency>
		<dependency>
			<groupId>org.aspectj</groupId>
			<artifactId>aspectjweaver</artifactId>
			<version>1.8.9</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-jdbc</artifactId>
			<version>4.3.8.RELEASE</version>
		</dependency>
  </dependencies>

1.2 加入必要的配置文件如下(和工程目录结构)

输入图片说明

1.3 创建pojo类 ,dao接口(如上图),

1.4 创建UserMapper.xml文件 (在sqlMap文件夹中)

<?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">

<!-- 用原始dao开发  namespace可以随意配置 -->
<mapper namespace="test">

	<select id="selectUserById" parameterType="Integer" resultType="User">
		select * from User WHERE id=#{id}
	</select>
	
</mapper>

1.5 配置mybatis的配置文件(sqlMapConfig.xml)

<?xml version="1.0" encoding="UTF-8" ?>  
<!DOCTYPE configuration  
  PUBLIC "-//mybatis.org//DTD Config 3.0//EN"  
  "http://mybatis.org/dtd/mybatis-3-config.dtd">  
<configuration> 
	<typeAliases>
		<package name="com.shi.pojo"/>
	</typeAliases>
	
	<mappers>
		<mapper resource="sqlMap/UserMapper.xml"/>
	</mappers>
</configuration>

1.6 配置spring的配置文件 (applicationContext.xml)

<?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:mvc="http://www.springframework.org/schema/mvc" 
	xmlns:jdbc="http://www.springframework.org/schema/jdbc"
	xmlns:jee="http://www.springframework.org/schema/jee" 
	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.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop.xsd">
	<!-- 1  加载资源文件 -->
	<context:property-placeholder location="classpath:db.properties"/>
	
	<!-- 2  配置数据源 -->
	<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>
	
	
	<!-- 3 配置sqlSessionFactory会话工厂(在整合包中) -->
	<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
		<!-- 3.1 加载mybatis的配置文件 -->
		<property name="configLocation" value="mybatis/sqlMapConfig.xml"></property>
		<!-- 3.2 加载数据源 -->
		<property name="dataSource" ref="dataSource"></property>
	</bean>
	
	<!-- 4 用原始dao开发时需要配置 dao bean -->
	<bean id="userDao" class="com.shi.dao.UserDaoImp">
		<!-- 因为继承了sqlSessionDaoSupport类 所以要把sqlSessionFactory注入进去 -->
		<property name="sqlSessionFactory" ref="sqlSessionFactory"></property>
	</bean>
</beans>

1.7 配置 UserDaoImp的实现类

package com.shi.dao;

import org.apache.ibatis.session.SqlSession;
import org.mybatis.spring.support.SqlSessionDaoSupport;

import com.shi.pojo.User;

/**
 * 这里继承SqlSessionDaoSupport 可以为我们自动生成sqlSession
 * @author SHF
 *
 */
public class UserDaoImp extends SqlSessionDaoSupport implements UserDao {

	public User selectUserById(Integer id) throws Exception {
		SqlSession sqlSession=this.getSqlSession();//从继承中获取会话 
		User user=sqlSession.selectOne("test.selectUserById", id);
		return user;
	}
}

1.8 编写测试类


import org.junit.Before;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.shi.dao.UserDao;
import com.shi.pojo.User;

public class UserDaoTest {
	
	private ApplicationContext applicationContext;
	@Before
	public void setUp() throws Exception {
		applicationContext=new ClassPathXmlApplicationContext("classpath:spring/applicationContext-dao.xml");
	}

	@Test
	public void test() throws Exception {
		UserDao userDao=(UserDao) applicationContext.getBean("userDao");
		User user=userDao.selectUserById(1);
		System.out.println(user);
	}

}

2 使用mapper代理的开发方式(重点,完全代理)

2.1.mapper.xml文件

<?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">

<!--namespace:必须是和mapper.java的相对路径  -->
<mapper namespace="com.shi.mapper.UserMapper">
	<!-- 开启本namespace的二级缓存 -->
	<cache type="org.mybatis.caches.ehcache.EhcacheCache"></cache>

	<select id="selectUserById" parameterType="Integer" resultType="User">
		select * from User WHERE id=#{id}
	</select>
</mapper>

2.2.mapper.java 接口

package com.shi.mapper;

import java.util.List;

import com.shi.pojo.User;

public interface UserMapper {
	
	/**
	 * 操作user的mapper的接口
	 * @param id
	 * @return
	 * @throws Exception
	 */
	public User selectUserById(Integer id)throws Exception;
}

2.3 applicationContext-dao.xml文件

<?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:mvc="http://www.springframework.org/schema/mvc" 
	xmlns:jdbc="http://www.springframework.org/schema/jdbc"
	xmlns:jee="http://www.springframework.org/schema/jee" 
	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.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop.xsd">
	<!-- 1  加载资源文件 -->
	<context:property-placeholder location="classpath:db.properties"/>
	
	<!-- 2  配置数据源 -->
	<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>
	
	
	<!-- 3 配置sqlSessionFactory会话工厂(在整合包中) -->
	<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
		<!-- 3.1 加载mybatis的配置文件 -->
		<property name="configLocation" value="mybatis/sqlMapConfig.xml"></property>
		<!-- 3.2 加载数据源 -->
		<property name="dataSource" ref="dataSource"></property>
		
		**<!-- 如果要想mapper.java和mapper.xml文件所在位置不一样 要加上这个配置 -->
		<!-- <property name="mapperLocations" value="classpath:mybatis/mappings/**/*.xml" /> -->**
	</bean>
	
	
	<!-- 5  使用mapper代理的开发方法 (自动扫描该包下的所有接口自动生成其实现类)
		**要求**:mapper.java和mapper.xml文件必须在同一个包下面,并且名字一致
		扫描出来的mapper的bean的名字 是 mapper类名的首字符小写
	 -->
	<bean  class="org.mybatis.spring.mapper.MapperScannerConfigurer">
		<!-- basePackage:指定扫描的包名。 -->
		<property name="basePackage" value="com.shi.mapper"></property>
		<!-- **sqlSessionFactoryBeanName **一定要配置成这个   
			如果配置成sqlSessionFactory 那么上面的加载资源文件将 不执行(或后执行) -->
		<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property>
	</bean>
	
</beans>

2.4测试方法同上

3 问题:

输入图片说明

© 著作权归作者所有

共有 人打赏支持
粉丝 4
博文 106
码字总数 83353
作品 0
合肥
ZHENFENGSHISAN/perfect-ssm

Quick Start 项目简介 ssm系列 ssm-demo:Spring+SpringMVC+Mybatis+easyUI整合 perfect-ssm:RESTful API+redis缓存 ssm-cluster:前后端分离+集群部署 ssm-dubbo:dubbo服务化 ssm-micro-se......

ZHENFENGSHISAN ⋅ 2017/09/18 ⋅ 0

springmvc学习笔记(6)-springmvc整合mybatis(IDEA中通过maven构建

springmvc学习笔记(6)-springmvc整合mybatis(IDEA中通过maven构建) 标签: springmvc mybatis [TOC] 本文主要展示如何在intellij IDEA中通过maven构建springmvc+mybatis框架的开发环境。 需求...

brianway ⋅ 2016/03/10 ⋅ 0

MyBatis系列目录--7. Mybatis与Spring最佳整合

转载请注明出处哈:http://carlosfu.iteye.com/blog/2238662 1. 整合思路 (1) SqlSessionFactory由Spring作为单例管理 (2) spring和mybatis整合生成代理对象,使用SqlSessionFactory创建SqlSe...

付磊-起扬 ⋅ 2015/09/03 ⋅ 0

搭建Spring + SpringMVC + Mybatis框架之三(整合Spring、Mybatis和Spring MVC)

目录 整合Spring和SpringMVC 整合Spring和SpringMVC 之前已经整合了spring和mybatis,现在在此基础上整合SSM。 项目目录: 思路:SpringMVC的配置文件独立,然后在web.xml中配置整合。 (1)...

张辉原 ⋅ 2017/06/15 ⋅ 0

SpringMVC,mybatis,spring整合

需求:使用SpringMVC和mybatis完成商品列表查询 一 整合思路 1 相关jar包(maven) 2 整合dao层 mybatis和springmvc整合,通过spring管理mapper接口 使用mapper的扫描器自动扫描mapper接口在...

Bbigbug ⋅ 04/25 ⋅ 0

Mybatis-Generator插件的使用与Spring集成Mybatis的配置

Mybatis-Generator插件 Mybatis-Generator是一个用于自动生成dao层接口、pojo以及mapper xml的一个Mybatis插件,该插件有三种用法:命令行运行、Eclipse插件、maven插件。个人觉得maven插件最...

ZeroOne01 ⋅ 04/15 ⋅ 0

整合Spring SpringMVC MyBatis

1.介绍 Spring就没什么好介绍的了。 SpringMVC:http://my.oschina.net/ChiLin/blog/693486 MyBatis: MyBatis is a first class persistence framework with support for custom SQL, stor......

蜡笔小小小新 ⋅ 2016/06/08 ⋅ 3

springmvc和mybatis整合—商品查询

1. 需求 使用springmvc和mybatis完成商品列表查询。 2. 整合思路 springmvc+mybaits的系统架构: 系统架构 3. 准备环境 数据库环境:mysql5.5 数据库表 java环境: jdk1.8 IDEA 所需要的jar...

小小蒜头 ⋅ 2017/12/11 ⋅ 0

SSM三大框架整合详细教程(Spring+SpringMVC+MyBatis)【转】

使用SSM(Spring、SpringMVC和Mybatis)已经有三个多月了,项目在技术上已经没有什么难点了,基于现有的技术就可以实现想要的功能,当然肯定有很多可以改进的地方。之前没有记录SSM整合的过程...

如何让他和 ⋅ 2016/10/11 ⋅ 1

SSM三大框架整合详细教程(Spring+SpringMVC+MyBatis)【转】

使用SSM(Spring、SpringMVC和Mybatis)已经有三个多月了,项目在技术上已经没有什么难点了,基于现有的技术就可以实现想要的功能,当然肯定有很多可以改进的地方。之前没有记录SSM整合的过程...

梵蒂冈考虑过 ⋅ 2016/09/26 ⋅ 1

没有更多内容

加载失败,请刷新页面

加载更多

下一页

istio 文档

https://istio.io/docs/concepts/ https://istio.io/docs/concepts/traffic-management/handling-failures/ https://istio.io/docs/concepts/traffic-management/rules-configuration/......

xiaomin0322 ⋅ 17分钟前 ⋅ 0

编程语言的作用及与操作系统和硬件的关系

一、编程语言的作用及与操作系统和硬件的关系 作用:编程语言是计算机语言,是一种程序员与计算机之间沟通的介质,通过编程语言可以使得计算机能够根据人的指令一步一步去工作,完成某种特定...

slagga ⋅ 28分钟前 ⋅ 0

runtime实现按钮点击事件

也不能说是实现吧,,,就是有点类似于RAC里边的写法,不用给btn添加另外的点击事件,就那个add...select...这样子很不友好,来看下代码: [self.btn handleControlEvent:UIControlEventTou...

RainOrz ⋅ 28分钟前 ⋅ 0

Windows系统运维转linux系统运维的经历

开篇之前,首先介绍一下我的背景把:我是一个三线城市的甲方运维。最近,在《Linux就该这么学》书籍的影响下和朋友小A(Linux运维已经三年了,工资也比我的高很多)的影响下,决定转行。最近...

linux-tao ⋅ 29分钟前 ⋅ 0

zip压缩工具,tar打包工具

zip压缩工具 zip打包工具跟前面说到的gzip,bz2,xz 工具最大的不一样是zip可以压缩目录。如果没有安装,需要使用yum install -y zip 来安装。安装完之后就可以直接使用了,跟之前提到的压缩...

李超小牛子 ⋅ 37分钟前 ⋅ 0

使用npm发布自己的npm组件包

一、注册npm账号 官网:https://www.npmjs.com/signup 注册之后需要进行邮箱验证,否则后面进行组件包发布时候会提示403错误,让进行邮箱核准。 二、本地新建一个文件夹,cd进入后使用npm i...

灰白发 ⋅ 39分钟前 ⋅ 0

010. 深入JVM学习—垃圾收集策略概览

1. 新生代可用GC策略 1. 串行GC(Serial Copying) 算法:复制(Copying)清理算法; 操作步骤: 扫描年轻代中所有存活的对象; 使用Minor GC进行垃圾回收,同时将存活对象保存到“S0”或“S...

影狼 ⋅ 39分钟前 ⋅ 0

JVM性能调优实践——JVM篇

在遇到实际性能问题时,除了关注系统性能指标。还要结合应用程序的系统的日志、堆栈信息、GClog、threaddump等数据进行问题分析和定位。关于性能指标分析可以参考前一篇JVM性能调优实践——性...

Java小铺 ⋅ 40分钟前 ⋅ 0

误关了gitlab sign-in 功能的恢复记录

本想关sign-up的,误点了sign-in 退出后登录界面提示: No authentication methods configured 一脸懵逼.. 百度后众多方案说修改application_settings 的 signin_enabled字段; 实际上新版本字段...

铂金蛋蛋 ⋅ 41分钟前 ⋅ 0

登录后,后续请求接口没有带登录cookie可能原因

1.XMLHttpRequest.withCredentials没设置好,参考https://developer.mozilla.org/zh-CN/docs/Web/API/XMLHttpRequest/withCredentials...

LM_Mike ⋅ 41分钟前 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部