spring整合mybatis前提条件:
1、导入依赖
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.33</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.3.25</version>
</dependency>
<!-- 数据库操作依赖-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>5.3.25</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.13</version>
</dependency>
<!-- 使用aop需要带入的依赖-->
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.9.21</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>2.0.5</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.28</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.28</version>
<scope>compile</scope>
</dependency>
</dependencies>
<!-- 解决mybatis静态资源过滤问题 -->
<build>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
</resources>
</build>
2、实现方法
2.1、方法一:通过sqlSessionFactory实现
- spring设置数据源替换mybatis的配置
<!-- Datasource: 使用spring的数据源替换mybatis的配置 这里使用spring提供的jdbc: org.springframework.jdbc.datasource--> <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName" value="com.mysql.jdbc.Driver"/> <property name="url" value=""/> <property name="username" value=""/> <property name="password" value=""/> </bean>
- sqlSessionFactory配置
<!--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="com/yang/mapper/*.xml"/> </bean>
-
SqlSessionTemplate配置
<!--SqlSessionTemplate:就是使用的sqlSession --> <bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate"> <!-- 只能使用构造器注入 sqlSessionFactory,因为没有set方法 --> <constructor-arg index="0" ref="sqlSessionFactory"/> </bean>
-
业务实现注入配置
<!-- 方法一:业务实现输入 --> <bean id="userMapper" class="com.yang.mapper.UserMapperImpl"> <property name="sqlSession" ref="sqlSession"/> </bean>
-
测试实体类
package com.yang.pojo; import lombok.Data; @Data public class User { private int id; private String name; private String pwd; }
-
接口类
package com.yang.mapper; import com.yang.pojo.User; import java.util.List; public interface UserMapper { public List<User> select() ; }
-
业务实现类
import org.mybatis.spring.SqlSessionTemplate; import java.util.List; public class UserMapperImpl implements UserMapper{ private SqlSessionTemplate sqlSession; public void setSqlSession(SqlSessionTemplate sqlSession) { this.sqlSession = sqlSession; } @Override public List<User> select() { UserMapper mapper = sqlSession.getMapper(UserMapper.class); return mapper.select(); } }
通过上面的测试类可以实现spring和mybatis的整合,具体测试可以写个test类进行测试,这里就不显示了。
2.2、方法二:通过SqlSessionDaoSupport实现
- 测试类和方法一中差不多,只需要将实现类改为如下即可
package com.yang.mapper; import com.yang.pojo.User; import org.mybatis.spring.support.SqlSessionDaoSupport; import java.util.List; //通过SqlSessionDaoSupport实现 public class UserMapperImpl2 extends SqlSessionDaoSupport implements UserMapper{ @Override public List<User> select() { return getSqlSession().getMapper(UserMapper.class).select(); } }
-
业务注入配置
<!-- 方法二:注入--> <bean id="userMapper2" class="com.yang.mapper.UserMapperImpl2"> <property name="sqlSessionFactory" ref="sqlSessionFactory"/> </bean>
通过上面的就可以实现spring和mybatis整合