Spring整合MyBatis

Spring整合MyBatis

终于,学习Spring进入了尾声,需要Spring整合Mybatis

步骤:

  • 导入相关的jar包
  • 编写程序
  • 测试

Spring整合MyBatis需要的jar包

对于Spring,一个Spring-webmvcaspectjwearer可以解决所有的东西

对于Mybatis,需要mybatis包

由于mybatis是基于永久层的,因此需要mysql数据库相关的包

为了方便操作,还要准备Junit和Lombok的包

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
<dependencies>
<!--Junit的包-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.2</version>
<scope>test</scope>
</dependency>
<!--mysql的包-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.28</version>
</dependency>
<!--mybatis的包-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.9</version>
</dependency>
<!--Spring的一系类包-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.3.15</version>
</dependency>
<!--spring-jdbc-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>5.3.15</version>
</dependency>
<!--aspectjweaver-->
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.9.8.RC3</version>
</dependency>
<!--mybatis-spring-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>2.0.7</version>
</dependency>
<!--lombok-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.22</version>
<scope>provided</scope>
</dependency>

</dependencies>

编写一个mybatis程序

第一个mybatis程序 | dwx-tx的小天地

上方我博客里的其他博文回顾mybatis程序的编写,在此不在重复

在mybatis程序中加入Spring

分析:mybatis是对持久层的一个框架,它是Dao层和数据库之间的桥梁,还有一些自己的配置(别名,日志等)

因此我们可以的到,我们spring要整合的东西:

  • 数据库的联结
  • SqlsessionFactory
  • Sqlsession
  • mybatis配置

第一步,创建Spring的xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<!--从此往下都是固定格式-->
<!--整合数据库 数据源-->
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.cj.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/mybatis?useUnicode=true&amp;characterEnconding=utf8&amp;useSSL=truejdbc:mysql://localhost:3306/mybatis?useUnicode=true&amp;characterEnconding=utf8&amp;useSSL=true"/>
<property name="username" value="dwx"/>
<property name="password" value="123456"/>
</bean>
<!--整合SqlsessionFactory-->
<bean id="sqlsessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<!--绑定mybatis配置文件-->
<property name="configLocation" value="classpath:mybatis-config.xml"/>
<property name="mapperLocations" value="classpath:com/dwx/mapper/BlogMapper.xml"/>
</bean>
<!--代替SQLsession-->
<bean id="sqlsession" class="org.mybatis.spring.SqlSessionTemplate">
<constructor-arg index="0" ref="sqlsessionFactory"/>
</bean>
</beans>

第二步、创建实体类

因为我们的mybatis是用xml代替实体类实现抽象类的,但是我们的Spring必须使用实体类,因此创建实体类;

但是Mybatis使用时需要的三件套

1
2
3
4
5
6
7
8
9
10
11
12
String config = "mybatis-config.xml";
InputStream input = null;
try {
input = Resources.getResourceAsStream(config);
} catch (IOException e) {
e.printStackTrace();
}
SqlSessionFactory build = new SqlSessionFactoryBuilder().build(input);
SqlSession sqlSession = build.openSession();


BlogMapper mapper = sqlSession.getMapper(BlogMapper.class);

以及被我们整合到Spring中去了,因此这个实体类会有点不一样

我们以后会使用SQLsessionTemple来实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
package com.dwx.mapper;

import com.dwx.pojo.Blog;
import org.mybatis.spring.SqlSessionTemplate;

import java.util.List;

public class BlogMapperImpl implements BlogMapper{

//固定格式
private SqlSessionTemplate sqlSessionTemplate;

public SqlSessionTemplate getSqlSessionTemplate() {
return sqlSessionTemplate;
}

public void setSqlSessionTemplate(SqlSessionTemplate sqlSessionTemplate) {
this.sqlSessionTemplate = sqlSessionTemplate;
}

@Override
public List<Blog> getBlogs() {
BlogMapper mapper = sqlSessionTemplate.getMapper(BlogMapper.class);
return mapper.getBlogs();
}
}

第三步,把这个实体类注册到bean里

把这个实体类注册到bean里,以后我们就能直接使用bean来调用这些方法了

完全体的bean.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<!--从此往下都是固定格式-->
<!--整合数据库 数据源-->
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.cj.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/mybatis?useUnicode=true&amp;characterEnconding=utf8&amp;useSSL=truejdbc:mysql://localhost:3306/mybatis?useUnicode=true&amp;characterEnconding=utf8&amp;useSSL=true"/>
<property name="username" value="dwx"/>
<property name="password" value="123456"/>
</bean>
<!--整合SqlsessionFactory-->
<bean id="sqlsessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<!--绑定mybatis配置文件-->
<property name="configLocation" value="classpath:mybatis-config.xml"/>
<property name="mapperLocations" value="classpath:com/dwx/mapper/BlogMapper.xml"/>
</bean>
<!--代替SQLsession-->
<bean id="sqlsession" class="org.mybatis.spring.SqlSessionTemplate">
<constructor-arg index="0" ref="sqlsessionFactory"/>
</bean>

<bean id="blogMapper" class="com.dwx.mapper.BlogMapperImpl">
<!--我们写这个实体类时留了一个属性 给这个参数赋值-->
<property name="sqlSessionTemplate" ref="sqlsession"/>
</bean>



</beans>

注意,我们的mapper.xml在Spring中注册了,不需要再到config.xml中注册了

测试:

1
2
3
4
5
6
7
8
9
@Test
public void Spring_MybatisTest(){
ApplicationContext context = new ClassPathXmlApplicationContext("spring-mapper.xml");
BlogMapper blogMapper = context.getBean("blogMapper", BlogMapper.class);
List<Blog> blogs = blogMapper.getBlogs();
for (Blog blog : blogs) {
System.out.println(blog);
}
}

这样mybatis-config.xml中就只剩下一部分的配置如:别名,日志

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?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>

<settings>
<setting name="logImpl" value="STDOUT_LOGGING"/>
</settings>
<typeAliases>
<package name="com.dwx.pojo"/>
</typeAliases>

</configuration>

这样Mybatis就整合到Spring中去了

Donate
  • Copyright: Copyright is owned by the author. For commercial reprints, please contact the author for authorization. For non-commercial reprints, please indicate the source.

扫一扫,分享到微信

微信分享二维码
  • Copyrights © 2015-2023 dwx
  • Visitors: | Views:

请我喝杯咖啡吧~

支付宝
微信