spring06:mybatis-spring(Spring整合MyBatis)

spring06:mybatis-spring(Spring整合MyBatis)


文章目录

  • spring06:mybatis-spring(Spring整合MyBatis)
  • 前言:
    • [什么是 MyBatis-Spring?](#什么是 MyBatis-Spring?)
      • [MyBatis-Spring 会帮助你将 MyBatis 代码无缝地整合到 Spring 中。](#MyBatis-Spring 会帮助你将 MyBatis 代码无缝地整合到 Spring 中。)
  • 一、mybatis流程
    • [1. 编写实体类](#1. 编写实体类)
    • [2. 编写核心配置文件mybatis-config.xml](#2. 编写核心配置文件mybatis-config.xml)
    • [3. 编写接口UserMapper](#3. 编写接口UserMapper)
    • [4. 编写配置文件UserMapper.xml](#4. 编写配置文件UserMapper.xml)
    • [5. 编写测试类](#5. 编写测试类)
  • [二、spring整合mybatis 方式一](#二、spring整合mybatis 方式一)
  • [三、spring整合mybatis 方式二](#三、spring整合mybatis 方式二)
      • [1. 编写实现类UserDaoImpl 直接继承 SqlSessionDaoSupport](#1. 编写实现类UserDaoImpl 直接继承 SqlSessionDaoSupport)
      • [2. 编写spring配置文件spring-dao.xml(相当于beans.xml)](#2. 编写spring配置文件spring-dao.xml(相当于beans.xml))
        • [applicationContext.xml是beans.xml配置文件的 整合!!!](#applicationContext.xml是beans.xml配置文件的 整合!!!)
      • [3. 编写测试类](#3. 编写测试类)
  • 总结

前言:

什么是 MyBatis-Spring?

MyBatis-Spring 会帮助你将 MyBatis 代码无缝地整合到 Spring 中。


提示:以下是本篇文章正文内容:

一、mybatis流程

1.编写实体类

2.编写核心配置文件mybatis-config.xml

3.编写工具类MyBatisUtil

4.编写接口UserMapper

5.编写配置文件UserMapper.xml

6.编写测试类

1. 编写实体类

java 复制代码
// 使用了lombok注解简化:
@Data
public class User {
   private int id;
   private String name;
   private String pwd;
}

2. 编写核心配置文件mybatis-config.xml

xml 复制代码
<?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>

   <typeAliases>
       <package name="nuc.ss.pojo"/>
   </typeAliases>

   <environments default="development">
       <environment id="development">
           <transactionManager type="JDBC"/>
           <dataSource type="POOLED">
               <property name="driver" value="com.mysql.jdbc.Driver"/>
               <property name="url" value="jdbc:mysql://localhost:3306/mybatis?useSSL=true;useUnicode=true;characterEncoding=utf8"/>
               <property name="username" value="root"/>
               <property name="password" value="admin"/>
           </dataSource>
       </environment>
   </environments>

   <mappers>
       <package name="nuc.ss.dao"/>
   </mappers>
</configuration>

3. 编写接口UserMapper

java 复制代码
public interface UserMapper {
   public List<User> selectUser();
}

4. 编写配置文件UserMapper.xml

xml 复制代码
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
       PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
       "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="nuc.ss.dao.UserMapper">
   <select id="selectUser" resultType="User">
    select * from user
   </select>

</mapper>

5. 编写测试类

MyBatisUtils工具类的作用就是创建sqlSession

我们在测试类直接创建,逻辑和 MyBatisUtils工具类是差不多的。

java 复制代码
@Test
public void selectUser() throws IOException {
	// MyBatisUtils工具类的作用就是创建sqlSession
	// 我们在测试类直接创建,逻辑和 MyBatisUtils工具类是差不多的。
   String resource = "mybatis-config.xml";
   InputStream inputStream = Resources.getResourceAsStream(resource);
   SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
   SqlSession sqlSession = sqlSessionFactory.openSession();

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

   List<User> userList = mapper.selectUser();
   for (User user: userList){
       System.out.println(user);
  }

   sqlSession.close();
}


二、spring整合mybatis 方式一

1.编写数据源配置

2.sqlSessionFactory

3.sqlSessionTemplate

4.需要给接口加实现类

5.将自己写的实现类,注入到spring当中

6.编写测试类

1. 在pom.xml导入maven依赖:mybatis-spring

xml 复制代码
<dependency>
   <groupId>org.mybatis</groupId>
   <artifactId>mybatis-spring</artifactId>
   <version>2.0.2</version>
</dependency>

2. 写一个接口实现类:UserDaoImpl(对于UserMapper接口)

在后面须要把这个类注入到spring容器里面(beams.xml)

这个类的作用:相当于mybatis的测试类,

得到sqlSession对象,执行UserMapper的方法。(执行sql语句)

在mybatis-spring里面,我们需要写这样一个方法,然后注入到spring里面,交给spring来管理。

java 复制代码
public class UserDaoImpl implements UserMapper {
   //sqlSession不用我们自己创建了,Spring来管理
   private SqlSessionTemplate sqlSession;

   public void setSqlSession(SqlSessionTemplate sqlSession) {
       this.sqlSession = sqlSession;
  }
   public List<User> selectUser() {
       UserMapper mapper = sqlSession.getMapper(UserMapper.class);
       return mapper.selectUser();
  }
}

3. 编写spring配置文件spring-dao.xml(相当于beans.xml)

注意:上面图片第4步的将实现类注入到spring中,写错了(那个是第二种方式的)

下面这个才是:(私有化一个sqlSession)

xml 复制代码
<bean id="userDao" class="nuc.ss.dao.UserDaoImpl">
   <property name="sqlSession" ref="sqlSession"/>
</bean>

4. 编写测试类

java 复制代码
// 1.获取spring容器
// 2.获取对象
// 3.使用对象执行方法
@Test
public void test(){
    ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
    UserMapper mapper = (UserMapper) context.getBean("userDao");
    List<User> user = mapper.selectUser();
    System.out.println(user);
}


三、spring整合mybatis 方式二

dao继承SqlSessionDaoSupport 类 , 直接利用 getSqlSession() 获得 , 然后直接注入SqlSessionFactory .

比起方式1 , 不需要管理SqlSessionTemplate , 而且对事务的支持更加友好

1. 编写实现类UserDaoImpl 直接继承 SqlSessionDaoSupport

java 复制代码
// 1.获取sqlSession对象
// 2.得到mapper对象
// 3.利用mapper对象执行方法
public class UserDaoImpl extends SqlSessionDaoSupport implements UserMapper {
   public List<User> selectUser() {
       UserMapper mapper = getSqlSession().getMapper(UserMapper.class);
       return mapper.selectUser();
  }
}

2. 编写spring配置文件spring-dao.xml(相当于beans.xml)

applicationContext.xml是beans.xml配置文件的 整合!!!

3. 编写测试类

感觉 mybatis的测试类的步骤 和 mybatis-spring的测试类的步骤 好像!!!

java 复制代码
// 1.获取spring容器
// 2.拿到mapper对象
// 3.利用mapper对象执行方法
@Test
public void test2(){
   ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
   UserMapper mapper = (UserMapper) context.getBean("userDao");
   List<User> user = mapper.selectUser();
   System.out.println(user);
}

总结

提示:这里对文章进行总结:

😊😊😊

相关推荐
小橘子83110 分钟前
(学习)Claude Code 源码架构深度解析
学习·程序人生·架构
Victor35611 分钟前
MongoDB(87)如何使用GridFS?
后端
Victor35614 分钟前
MongoDB(88)如何进行数据迁移?
后端
小红的布丁30 分钟前
单线程 Redis 的高性能之道
redis·后端
GetcharZp36 分钟前
Go 语言只能写后端?这款 2D 游戏引擎刷新你的认知!
后端
周末也要写八哥1 小时前
多进程和多线程的特点和区别
java·开发语言·jvm
惜茶2 小时前
vue+SpringBoot(前后端交互)
java·vue.js·spring boot
diablobaal2 小时前
云计算学习100天-第102天-Azure入门4
学习·云计算·azure
宁瑶琴2 小时前
COBOL语言的云计算
开发语言·后端·golang
AI_零食2 小时前
Flutter 框架跨平台鸿蒙开发 - 自定义式按钮设计应用
学习·flutter·ui·华为·harmonyos·鸿蒙