MyBatis-Spring官方文档

导入依赖

  1. <dependencies>
  2. <dependency>
  3. <groupId>org.mybatis</groupId>
  4. <artifactId>mybatis</artifactId>
  5. <version>3.5.7</version>
  6. </dependency>
  7. <dependency>
  8. <groupId>mysql</groupId>
  9. <artifactId>mysql-connector-java</artifactId>
  10. <version>5.1.3</version>
  11. </dependency>
  12. <dependency>
  13. <groupId>org.springframework</groupId>
  14. <artifactId>spring-webmvc</artifactId>
  15. <version>5.2.0.RELEASE</version>
  16. </dependency>
  17. <dependency>
  18. <groupId>junit</groupId>
  19. <artifactId>junit</artifactId>
  20. <version>4.12</version>
  21. <scope>test</scope>
  22. </dependency>
  23. <dependency>
  24. <groupId>org.aspectj</groupId>
  25. <artifactId>aspectjweaver</artifactId>
  26. <version>1.9.1</version>
  27. </dependency>
  28. <!--spring操作数据库的话还需要这个-->
  29. <dependency>
  30. <groupId>org.springframework</groupId>
  31. <artifactId>spring-jdbc</artifactId>
  32. <version>5.2.0.RELEASE</version>
  33. </dependency>
  34. <dependency>
  35. <groupId>org.mybatis</groupId>
  36. <artifactId>mybatis-spring</artifactId>
  37. <version>2.0.7</version>
  38. </dependency>
  39. </dependencies>

搭建MyBatis

看这篇文章
MyBatis基础与构建

第一种整合方式

创建Spring配置文件整合MyBatis

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://www.springframework.org/schema/beans
  5. https://www.springframework.org/schema/beans/spring-beans.xsd">
  6. <!--
  7. DataSource:
  8. 使用Spring的数据源替换Mybatis的配置,c3p0 dbcp druid
  9. 这里使用Spring提供的JDBC
  10. -->
  11. <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
  12. <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
  13. <property name="url" value="jdbc:mysql://localhost:3306/mybatisdb?useUnicode=true&amp;characterEncoding=utf8"/>
  14. <property name="username" value="root"/>
  15. <property name="password" value="123456"/>
  16. </bean>
  17. <!--
  18. sqlSessionFactory:
  19. -->
  20. <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
  21. <property name="dataSource" ref="dataSource" />
  22. <!--绑定Mybatis配置文件-->
  23. <property name="configLocation" value="classpath:mybatis-config.xml"/>
  24. <property name="mapperLocations" value="classpath:com/lyd/mapper/*.xml"/>
  25. </bean>
  26. <bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">
  27. <!--只能通过构造器注入,因为没有set方法-->
  28. <constructor-arg index="0" ref="sqlSessionFactory"/>
  29. </bean>
  30. <bean id="empMapper" class="com.lyd.mapper.EmpMapper">
  31. <property name="sqlSession" ref="sqlSession"/>
  32. </bean>
  33. </beans>

创建Mapper接口的实现类

  1. package com.lyd.mapper;
  2. import com.lyd.pojo.Emp;
  3. import org.mybatis.spring.SqlSessionTemplate;
  4. public interface IEmpMapper {
  5. Emp selectById();
  6. }
  7. public class EmpMapper implements IEmpMapper{
  8. //在原来所有操作都使用sqlSerssion来执行,,现在都是用SqlSessiontemple
  9. private SqlSessionTemplate sqlSession;
  10. public void setSqlSession(SqlSessionTemplate sqlSession){
  11. this.sqlSession=sqlSession;
  12. }
  13. @Override
  14. public Emp selectById() {
  15. IEmpMapper mapper = sqlSession.getMapper(IEmpMapper.class);
  16. return mapper.selectById();
  17. }
  18. }

使用

  1. @Test
  2. public void test1() throws IOException {
  3. ApplicationContext context = new ClassPathXmlApplicationContext("ApplicationContext.xml");
  4. IEmpMapper iempMapper =context.getBean("empMapper",IEmpMapper.class);
  5. Emp emp = iempMapper.selectById();
  6. System.out.println(emp.toString());
  7. }

第二种整合方式

接着第一种整合方式改进
Spring配置文件还是要的。

创建一个新的Mapper接口实现类

  1. package com.lyd.mapper;
  2. import com.lyd.pojo.Emp;
  3. import org.apache.ibatis.session.SqlSession;
  4. import org.mybatis.spring.support.SqlSessionDaoSupport;
  5. //继承SqlSessionDaoSupport
  6. public class EmpMapper2 extends SqlSessionDaoSupport implements IEmpMapper{
  7. @Override
  8. public Emp selectById() {
  9. //通过getSqlSession方法就可以得到一个sqlSession对象
  10. SqlSession sqlSession =getSqlSession();
  11. IEmpMapper empMapper = sqlSession.getMapper(IEmpMapper.class);
  12. return empMapper.selectById();
  13. }
  14. }

改进Spring配合文件

sqlSession就不用写了,少一步,其他的一样,写上刚才新的Mapper实现类

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://www.springframework.org/schema/beans
  5. https://www.springframework.org/schema/beans/spring-beans.xsd">
  6. <!--
  7. DataSource:
  8. 使用Spring的数据源替换Mybatis的配置,c3p0 dbcp druid
  9. 这里使用Spring提供的JDBC
  10. -->
  11. <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
  12. <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
  13. <property name="url" value="jdbc:mysql://localhost:3306/mybatisdb?useUnicode=true&amp;characterEncoding=utf8"/>
  14. <property name="username" value="root"/>
  15. <property name="password" value="123456"/>
  16. </bean>
  17. <!--
  18. sqlSessionFactory:
  19. -->
  20. <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
  21. <property name="dataSource" ref="dataSource" />
  22. <!--绑定Mybatis配置文件-->
  23. <property name="configLocation" value="classpath:mybatis-config.xml"/>
  24. <property name="mapperLocations" value="classpath:com/lyd/mapper/*.xml"/>
  25. </bean>
  26. <!--sqlSession-->
  27. <!-- <bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">-->
  28. <!-- &lt;!&ndash;只能通过构造器注入,因为没有set方法&ndash;&gt;-->
  29. <!-- <constructor-arg index="0" ref="sqlSessionFactory"/>-->
  30. <!-- </bean>-->
  31. <!--
  32. 上面都是固定的写法:
  33. 下面都是才是自己编写的实现类,有多少实现类就编写多少bean
  34. 注入sqlSession对象
  35. -->
  36. <bean id="empMapper2" class="com.lyd.mapper.EmpMapper2">
  37. <!--继承的父类需要注入这个sqlSessionFactory-->
  38. <property name="sqlSessionFactory" ref="sqlSessionFactory"/>
  39. </bean>
  40. </beans>

使用

  1. @Test
  2. public void test1() throws IOException {
  3. ApplicationContext context = new ClassPathXmlApplicationContext("ApplicationContext.xml");
  4. IEmpMapper iempMapper =context.getBean("empMapper2",IEmpMapper.class);
  5. Emp emp = iempMapper.selectById();
  6. System.out.println(emp.toString());
  7. }