1.目标
Spring和MyBatis作为目前主流的框架,是我们所必须掌握的。而Spring和MyBatis的整合也是我们必会的知识点之一。
- IoC是Spring框架的核心之一,它的主要思想是:容器来帮助我们管理对象的生命周期。
- MyBatis是一款优秀的持久层框架,可以通过简单的配置来实现对数据库的操作
- Spring整合MyBatis的目的就是将MyBatis中使用的对象交给Spring容器去创建以及管理,从而享受Spring框架的便利性。
2.工程结构

image.png
3.操作清单
在子工程中加入搭建环境所需具体依赖
准备
jdbc.properties创建一个Spring配置文件,专门配置Spring和MyBatis整合相关
在Spring配置文件中加载
jdbc.properties配置数据源
-
配置
SqlSessionFactoryBean- 装配数据源
- 指定
mapper.xml配置文件位置 - 指定MyBaties全局配置文件的位置(可选)
配置
MapperScannerConfigurer
4.实现步骤
1.导入依赖
1 <?xml version="1.0" encoding="UTF-8"?>
2 <project xmlns="http://maven.apache.org/POM/4.0.0"
3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
5 <modelVersion>4.0.0</modelVersion>
6
7 <groupId>cn.grandage</groupId>
8 <artifactId>SpringMybatisTest</artifactId>
9 <version>1.0-SNAPSHOT</version>
10
11 <properties>
12 <!-- spring版本号 -->
13 <spring.version>4.1.6.RELEASE</spring.version>
14 <!-- mybatis版本号 -->
15 <mybatis.version>3.2.6</mybatis.version>
16 <!-- log4j日志文件管理包版本 -->
17 <slf4j.version>1.7.7</slf4j.version>
18 <log4j.version>1.2.17</log4j.version>
19 </properties>
20 <dependencies>
21 <dependency>
22 <groupId>junit</groupId>
23 <artifactId>junit</artifactId>
24 <version>4.11</version>
25 <!-- 表示开发的时候引入,发布的时候不会加载此包 -->
26 <scope>test</scope>
27 </dependency>
28 <!-- spring核心包 -->
29 <dependency>
30 <groupId>org.springframework</groupId>
31 <artifactId>spring-core</artifactId>
32 <version>${spring.version}</version>
33 </dependency>
34 <dependency>
35 <groupId>org.springframework</groupId>
36 <artifactId>spring-web</artifactId>
37 <version>${spring.version}</version>
38 </dependency>
39 <dependency>
40 <groupId>org.springframework</groupId>
41 <artifactId>spring-oxm</artifactId>
42 <version>${spring.version}</version>
43 </dependency>
44 <dependency>
45 <groupId>org.springframework</groupId>
46 <artifactId>spring-tx</artifactId>
47 <version>${spring.version}</version>
48 </dependency>
49 <dependency>
50 <groupId>org.springframework</groupId>
51 <artifactId>spring-jdbc</artifactId>
52 <version>${spring.version}</version>
53 </dependency>
54 <dependency>
55 <groupId>org.springframework</groupId>
56 <artifactId>spring-webmvc</artifactId>
57 <version>${spring.version}</version>
58 </dependency>
59 <dependency>
60 <groupId>org.springframework</groupId>
61 <artifactId>spring-aop</artifactId>
62 <version>${spring.version}</version>
63 </dependency>
64 <dependency>
65 <groupId>org.springframework</groupId>
66 <artifactId>spring-context-support</artifactId>
67 <version>${spring.version}</version>
68 </dependency>
69 <dependency>
70 <groupId>org.springframework</groupId>
71 <artifactId>spring-test</artifactId>
72 <version>${spring.version}</version>
73 </dependency>
74 <!-- mybatis核心包 -->
75 <dependency>
76 <groupId>org.mybatis</groupId>
77 <artifactId>mybatis</artifactId>
78 <version>${mybatis.version}</version>
79 </dependency>
80 <!-- mybatis/spring包 -->
81 <dependency>
82 <groupId>org.mybatis</groupId>
83 <artifactId>mybatis-spring</artifactId>
84 <version>1.2.2</version>
85 </dependency>
86 <!-- 导入java ee jar 包 -->
87 <dependency>
88 <groupId>javax</groupId>
89 <artifactId>javaee-api</artifactId>
90 <version>7.0</version>
91 </dependency>
92 <!-- 导入Mysql数据库链接jar包 -->
93 <dependency>
94 <groupId>mysql</groupId>
95 <artifactId>mysql-connector-java</artifactId>
96 <version>5.1.39</version>
97 </dependency>
98 <!-- c3p0连接池jar -->
99 <dependency>
100 <groupId>c3p0</groupId>
101 <artifactId>c3p0</artifactId>
102 <version>0.9.1.2</version>
103 </dependency>
104 <!-- 导入dbcp的jar包,用来在applicationContext.xml中配置数据库 -->
105 <dependency>
106 <groupId>commons-dbcp</groupId>
107 <artifactId>commons-dbcp</artifactId>
108 <version>1.2.2</version>
109 </dependency>
110 <!-- JSTL标签类 -->
111 <dependency>
112 <groupId>jstl</groupId>
113 <artifactId>jstl</artifactId>
114 <version>1.2</version>
115 </dependency>
116 <!-- 日志文件管理包 -->
117 <!-- log start -->
118 <dependency>
119 <groupId>log4j</groupId>
120 <artifactId>log4j</artifactId>
121 <version>${log4j.version}</version>
122 </dependency>
123 <!-- 格式化对象,方便输出日志 -->
124 <dependency>
125 <groupId>com.alibaba</groupId>
126 <artifactId>fastjson</artifactId>
127 <version>1.1.41</version>
128 </dependency>
129 <dependency>
130 <groupId>org.slf4j</groupId>
131 <artifactId>slf4j-api</artifactId>
132 <version>${slf4j.version}</version>
133 </dependency>
134 <dependency>
135 <groupId>org.slf4j</groupId>
136 <artifactId>slf4j-log4j12</artifactId>
137 <version>${slf4j.version}</version>
138 </dependency>
139 <!-- log end -->
140 <!-- 映入JSON -->
141 <dependency>
142 <groupId>org.codehaus.jackson</groupId>
143 <artifactId>jackson-mapper-asl</artifactId>
144 <version>1.9.13</version>
145 </dependency>
146 <!-- 上传组件包 -->
147 <dependency>
148 <groupId>commons-fileupload</groupId>
149 <artifactId>commons-fileupload</artifactId>
150 <version>1.3.1</version>
151 </dependency>
152 <dependency>
153 <groupId>commons-io</groupId>
154 <artifactId>commons-io</artifactId>
155 <version>2.4</version>
156 </dependency>
157 <dependency>
158 <groupId>commons-codec</groupId>
159 <artifactId>commons-codec</artifactId>
160 <version>1.9</version>
161 </dependency>
162 </dependencies>
163
164
165 </project>
2.数据库的准备以及对象的准备
本章使用MyBatis的逆向工程实现,具体实现点击这里。
3.创建数据源文件
jdbc.user=root
jdbc.password=1234
jdbc.url=jdbc:mysql://localhost:3306/project_crowd?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
jdbc.driver=com.mysql.cj.jdbc.Driver
4.配置Spring核心配置文件
<?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: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/tx http://www.springframework.org/schema/tx/spring-tx.xsd">
<!--加载外部属性文件-->
<context:property-placeholder location="classpath:jdbc.properties"/>
<!--配置数据源-->
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
<property name="username" value="${jdbc.user}"/>
<property name="password" value="${jdbc.password}"/>
<property name="url" value="${jdbc.url}"/>
<property name="driverClassName" value="${jdbc.driver}"/>
</bean>
<!--配置SqlSessionFactoryBean整合MyBatis-->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<!--指定MyBatis全局配置文件的位置-->
<property name="configLocation" value="classpath:mybatis/mybatis-config.xml"/>
<!--指定Mapper.xml配置文件的位置-->
<property name="mapperLocations" value="classpath:mybatis/mapper/*Mapper.xml"/>
<!--装配数据源-->
<property name="dataSource" ref="dataSource"/>
</bean>
<!--配置MapperScannerConfigurer来扫描Mapper接口所在的包-->
<bean id="mapperScannerConfigurer" class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.codingda.crowd.mapper"/>
</bean>
</beans>
5.编写测试类
//在类上标记必要的注解,Spring整合Junit
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"classpath:spring-persist-mybatis.xml"})
public class CrowdTest {
@Autowired
DataSource dataSource;
@Test
public void testConnection() {
try {
Connection connection = dataSource.getConnection();
} catch (Exception e) {
e.printStackTrace();
}
}
}