关于整合Mybatis与Spring的笔记
共有两种方式,第一种就是将mybatis的各种操作转移到spring上,第二种则是在第一种的基础上简化了getSqlsession的操作。
modul结构图:
数据库中的数据以及编写的实体
mybatis与spring实现的不同
使用spring实现的方式一
1、连接数据库方面:
用mybatis时链接数据库(在mybatis-config.xml中配置)
使用spring后(在spring-dao.xml中配置,名字任意取的)
实现此操作需要导入相关的依赖
2、sqlsessionFactory
在mybatis中(写在工具类或者直接写)
直接写的:
在spring里(写在配置文件中):
Sqlsession
在mybats中
在spring
编写(CRUD)方法
在mybatis里是通过xml文件
且将该文件注册到mybatis-config.xml里
而在spring里,则是另外写一个实现类(UserMapperImpl):
要将该实现类注册到spring-dao.xml里(且将之前创建的sqlSessionTemplate的bean注入):
注意这里的实现类要写set方法,否则会注入失败
执行上(测试类)
在mybatis中是getMapper(xml文件),而在spring里则是getBean(实现类class文件)。
在mybatis中
在spring里
注意:若使用spring方法,记得把之前使用mybatis方法时在mybatis-config里的userMapper的注册注销掉/删掉,否则会报错
配置文件分离
将sqlsessionFactory及sqlsession等代码与注册mapper等代码分离
使用spring实现的方式二
使用spring自带的getSession
由代码可以看到,方式一中获得sqlsession的方式在继承的方法里写了。且xml里注入的不是sqlsession,而是sqlsessionFactory(方式一里的sqlsessionFactory注入到sqlsession里,再将sqlsession注入到xml里的set方法)。
结果
其他
导入的依赖
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.2</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.47</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.1.10.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>5.1.10.RELEASE</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.9.4</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>2.0.2</version>
</dependency>
</dependencies>
以及过滤
<build>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>true</filtering>
</resource>
</resources>
</build>