Mybatis使用步骤简述:
1.编写实体类
2.编写mybatis主配置文件(记得绑定Mapper配置文件)
3.编写dao层接口
4.编写dao层接口对应的mapper配置文件
5.测试(拿到Sqlsession接口实例对象后,Mybatis通过代理dao实现DB操作)
而Spring整合Mybatis其实可以分为三大步骤:
1.导包 2.写配置文件 3.测试
1.导包:
- junit
- mybatis
- mysql数据库
- spring相关
- aop织入器
- mybatis-spring整合包【重点】
- 配置Maven静态资源过滤问题!
-
<dependencies> <!--Junit--> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> </dependency> <!--数据库驱动--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.47</version> </dependency> <!-- 数据库连接池 --> <dependency> <groupId>com.mchange</groupId> <artifactId>c3p0</artifactId> <version>0.9.5.2</version> </dependency> <!--Servlet - JSP --> <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>2.5</version> </dependency> <dependency> <groupId>javax.servlet.jsp</groupId> <artifactId>jsp-api</artifactId> <version>2.2</version> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> <version>1.2</version> </dependency> <!--Mybatis--> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.2</version> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>2.0.2</version> </dependency> <!--Spring--> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>5.1.9.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>5.1.9.RELEASE</version> </dependency> <!-- https://mvnrepository.com/artifact/org.aspectj/aspectjweaver --> <!-- aspectJ AOP 织入器--> <dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjweaver</artifactId> <version>1.9.4</version> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.22</version> </dependency> </dependencies> <!-- Maven资源过滤设置--> <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.1Mybatis-Spring(重点):核心 -> sqlSessionTemplate
-
什么是MyBatis-Spring?
MyBatis-Spring 会帮助你将 MyBatis 代码无缝地整合到 Spring 中。
文档链接:http://mybatis.org/spring/zh/index.html
如果使用 Maven 作为构建工具,仅需要在 pom.xml 中加入以下代码即可:
<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis-spring -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>2.0.2</version>
</dependency> -
整合实现方式一:核心 -> sqlSessionTemplate - 1.引入Spring配置文件spring-dao.xml,并把关键对象的创建交给 spring 控制反转(IOC),生成<bean>:连接池对象,SqlSessionFactory工厂类,SqlSession对象
- 2.使用Spring的数据源替换Mybatis的数据源
- 3.配置SqlSessionFactory,关联MyBatis配置文件
- 4.注册sqlSessionTemplate,关联sqlSessionFactory
- 5.需要给 接口 加 实现类;原来我们的所有操作,都使用sqlSession来执行;而现在都使用SqlsessionTemplate,即原来Mybatis的工作由Spring接管控制
-
public class UserMapperImpl implements UserMapper {
-
(方式二此步骤省略,不用注入SqlSessionTemplate)
- //原来我们的所有操作,都使用sqlSession来执行;而现在都使用SqlsessionTemplate
private SqlSessionTemplate sqlSession;public void setSqlSession(SqlSessionTemplate sqlSession) {
this.sqlSession = sqlSession;
}public List<User> selectUser() {
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
return mapper.selectUser();
}
}
- //原来我们的所有操作,都使用sqlSession来执行;而现在都使用SqlsessionTemplate
-
-
-
6.将自己写的实现类,注入到Spring配置文件中。
-
-
7.测试
-
/*
* 1. 创建spring容器
根据xml文件应用程序Context容器(上下文)
classpath指配置文件的位置, 起点有java, resources. 写路径时相对这个起点去写
* */@Test
public void test () throws IOException {ApplicationContext context = new ClassPathXmlApplicationContext("spring-dao.xml");
-
//实现类在Spring容器中的名字: userMapper
UserMapper userMapper = context.getBean("userMapper", UserMapper.class);
for (User user : userMapper.selectUser()) {
System.out.println(user);
}
}
整合实现方式二:dao继承Support类 , 直接利用 getSqlSession() 获得 , 然后直接注入SqlSessionFactory . 比起方式1 , 不需要管理SqlSessionTemplate , 而且对事务的支持更加友好 . 可跟踪源码查看
其他和方式一相同
方式三:
一般在实际开发中,Spring可以配置扫描Dao接口包,动态实现Dao接口注入到spring容器中,从而省略了 创建dao接口实现类 这一步骤。
<!-- 4.配置扫描Dao接口包,动态实现Dao接口注入到spring容器中 --> <!--解释 :https://www.cnblogs.com/jpfss/p/7799806.html--> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <!-- 注入sqlSessionFactory --> <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/> <!-- 给出需要扫描Dao接口包 --> <property name="basePackage" value="com.dao"/> </bean>