Spring和mybatis整合

Spring框架和mybatis的整合

mybatis是半自动化的一个持久层框架,而spring是一个整合型框架

如何将mybatis整合到spring中去呢?

1、创建项目,引入各自的相关JAR包
2、设计项目的包结构,以及类结构 (项目设计阶段) —垂直分块 水平分层
3、编写applicationContext.xml完成框架的整合
配置步骤:
第1步:开启spring容器的自动扫描功能
第2步:引入外部的数据库配置描述文件
第3步:配置数据源连接池:C3P0,DBCP2,DRUID
第4步,配置SessionFactory
第5步,配置MapperScanner
第6步,配置事务管理器
第7步,配置spring管理事务的2种方式:编程式事务管理,声明式事务管理
第8步,开启切面动态代理支持

配置文件

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:p="http://www.springframework.org/schema/p"
	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
						/**spring容器上下文/
						http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd
        /*切面*/
        http://www.springframework.org/schema/aop 
        http://www.springframework.org/schema/aop/spring-aop.xsd
        /*事务管理*/
         http://www.springframework.org/schema/tx
        http://www.springframework.org/schema/tx/spring-tx.xsd">

	<!-- 第1步开启spring的自动扫描 -->
	<context:component-scan base-package="com.gezhi.smspring"></context:component-scan>
	<!-- 第2步导入外部数据库配置文件 -->
	<context:property-placeholder location="classpath:mysql.properties" />
	<!-- 第3步配置数据库连接池:C3P0,DBCP2,DRUID,这里使用的是DBCP2 -->
	<bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource"
		destroy-method="close">
		<!--配置数据库的驱动,url,用户名和密码-->
		<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="defaultAutoCommit" value="false"></property>
		<!--  只读-->
		<property name="defaultReadOnly" value="false"></property>
		<!-- 隔离级别:8 可串行化 4可重复读 2读已提交 1 读未提交 -->
		<property name="defaultTransactionIsolation" value="4"></property>
		<!-- 连接池初始化连接数 -->
		<property name="initialSize" value="20"></property>
		<!-- 最大连接数 -->
		<property name="maxTotal" value="50"></property>
		<!-- 空闲区最大连接数和最小连接数 -->
		<property name="maxIdle" value="20"></property>
		<property name="minIdle" value="0"></property>
		<!-- 默认的查询超时时间5s -->
		<property name="defaultQueryTimeout" value="5"></property>
		<!-- 设置数据库校验查询语句 -->
		<property name="validationQuery" value="select now() from dual"></property>
		<!--连接创建或借出时,确保连接是否可用 -->
		<property name="testOnCreate" value="true"></property>
		<property name="testOnBorrow" value="true"></property>
		<!-- 校验查询语句超时时间5s -->
		<property name="validationQueryTimeout" value="5"></property>
		<!--连接池允许存放SQL预编译对象 -->
		<property name="poolPreparedStatements" value="true"></property>
		<!-- 最多可存放的SQL预编译对象 -->
		<property name="maxOpenPreparedStatements" value="120"></property>
	</bean>
		<!-- 第4步,配置SqlSession -->
	<bean id="sessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
		<property name="dataSource" ref="dataSource"></property>
		<!-- typeAliasesPackage 以包为单位,批量给包中的类取类别名 如果存在多个包同时需要取类别名,包和包之间,采用;或者,间隔 -->
		<property name="typeAliasesPackage" value="com.gezhi.smspring.bean"></property>
	</bean>
	<!-- 第5步,配置MapperScanner -->
	<bean id="mapperScanner" class="org.mybatis.spring.mapper.MapperScannerConfigurer">
		<property name="basePackage"
			value="com.gezhi.smspring.usermag.mapper;com.gezhi.smspring.logmag.mapper"></property>
		<property name="sqlSessionFactoryBeanName" value="sessionFactory"></property>
	</bean>
	<!-- 第6步,配置事务管理器 -->
	<bean id="transactionManager"
		class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
		<property name="dataSource" ref="dataSource"></property>
	</bean>

	<!-- 第7步,配置spring管理事务的2中方式:编程式事务管理,声明式事务管理 -->
	<tx:advice id="txAdvice" transaction-manager="transactionManager">
		<tx:attributes>
		//SUPPORTS
			<tx:method name="*" read-only="true" propagation="SUPPORTS" />
			<tx:method name="save*" read-only="false" rollback-for="java.lang.Exception"
				propagation="REQUIRED" />
			<tx:method name="add*" read-only="false" rollback-for="java.lang.Exception"
				propagation="REQUIRED" />
			<tx:method name="insert*" read-only="false" rollback-for="java.lang.Exception"
				propagation="REQUIRED" />
			<tx:method name="create*" read-only="false" rollback-for="java.lang.Exception"
				propagation="REQUIRED" />
			<tx:method name="update*" read-only="false" rollback-for="java.lang.Exception"
				propagation="REQUIRED" />
			<tx:method name="modify*" read-only="false" rollback-for="java.lang.Exception"
				propagation="REQUIRED" />
			<tx:method name="change*" read-only="false" rollback-for="java.lang.Exception"
				propagation="REQUIRED" />
			<tx:method name="delete*" read-only="false" rollback-for="java.lang.Exception"
				propagation="REQUIRED" />
			<tx:method name="del*" read-only="false" rollback-for="java.lang.Exception"
				propagation="REQUIRED" />
			<tx:method name="remove*" read-only="false" rollback-for="java.lang.Exception"
				propagation="REQUIRED" />
		</tx:attributes>

	</tx:advice>
	<!-- 第8步 开启切面动态代理 -->
	<aop:aspectj-autoproxy></aop:aspectj-autoproxy>


</beans>

pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>

	<groupId>com.gezhi</groupId>
	<artifactId>smspring</artifactId>
	<version>1.0</version>
	<packaging>jar</packaging>

	<name>smspring</name>
	<url>http://maven.apache.org</url>

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<junit.version>4.12</junit.version>
		<log4j.version>1.2.17</log4j.version>
		<mybatis.version>3.3.0</mybatis.version>
		<mysql.version>5.1.38</mysql.version>
		<spring.version>4.3.14.RELEASE</spring.version>
		<aspect.version>1.8.9</aspect.version>
		<dbcp.version>2.4.0</dbcp.version>
	</properties>
	<dependencies>
		<dependency>
			<groupId>org.apache.commons</groupId>
			<artifactId>commons-dbcp2</artifactId>
			<version>${dbcp.version}</version>
		</dependency>
		<!-- 导入spring容器相关JAR文件 -->
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-context</artifactId>
			<version>${spring.version}</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-jdbc</artifactId>
			<version>${spring.version}</version>
		</dependency>

		<!-- 引入spring框架兼容Junit单元测试框架的相关JAR包 -->
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-test</artifactId>
			<version>${spring.version}</version>
			<scope>test</scope>
		</dependency>
		<!-- 引入spring框架兼容mybatis持久层框架JAR包 -->
		<dependency>
			<groupId>org.mybatis</groupId>
			<artifactId>mybatis-spring</artifactId>
			<version>1.3.2</version>
		</dependency>
		<!-- 引入Junit单元测试框架的相关JAR包 -->
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>${junit.version}</version>
			<scope>test</scope>
		</dependency>
		<!--引入日志JAR包 -->
		<dependency>
			<groupId>log4j</groupId>
			<artifactId>log4j</artifactId>
			<version>${log4j.version}</version>
		</dependency>
		<!-- 持久层框架mybatisJAR包 -->
		<dependency>
			<groupId>org.mybatis</groupId>
			<artifactId>mybatis</artifactId>
			<version>${mybatis.version}</version>
		</dependency>
		<!-- mysql数据库JAR包 -->
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<version>${mysql.version}</version>
		</dependency>
		<!-- 引入第三方切面相关JAR包 -->
		<dependency>
			<groupId>org.aspectj</groupId>
			<artifactId>aspectjrt</artifactId>
			<version>${aspect.version}</version>
		</dependency>
		<dependency>
			<groupId>org.aspectj</groupId>
			<artifactId>aspectjweaver</artifactId>
			<version>${aspect.version}</version>
		</dependency>
	</dependencies>
	<build>
		<pluginManagement>
			<!-- 配置maven 在构建项目时,采用相关插件 -->
			<plugins>
				<plugin>
					<groupId>org.apache.maven.plugins</groupId>
					<artifactId>maven-compiler-plugin</artifactId>
					<version>3.8.0</version>
					<configuration>
						<source>1.8</source>
						<target>1.8</target>
					</configuration>
				</plugin>
			</plugins>
		</pluginManagement>
	</build>
</project>

JAR包一览

在这里插入图片描述

包组织结构图

在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值