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);
}

总结

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

😊😊😊

相关推荐
ThreeYear_s1 小时前
基于FPGA的PID算法学习———实现PI比例控制算法
学习·算法·fpga开发
dualven_in_csdn1 小时前
搞了两天的win7批处理脚本问题
java·linux·前端
你的人类朋友2 小时前
✍️【Node.js程序员】的数据库【索引优化】指南
前端·javascript·后端
银色的白3 小时前
工作记录:人物对话功能开发与集成
vue.js·学习·前端框架
AgilityBaby3 小时前
Unity实现不倒翁
笔记·unity·c#·游戏引擎
C++chaofan3 小时前
74. 搜索二维矩阵
java·算法·leetcode·矩阵
新中地GIS开发老师4 小时前
三维GIS开发cesium智慧地铁教程(4)城市白模加载与样式控制
学习·arcgis·智慧城市·webgl·gis开发·webgis·地理信息科学
诺浅4 小时前
AWS S3 SDK FOR JAVA 基本使用及如何兼容七牛云
java·spring boot·aws
Studying 开龙wu4 小时前
机器学习监督学习实战五:六种算法对声呐回波信号进行分类
学习·算法·机器学习
软件开发技术深度爱好者4 小时前
HTML版英语学习系统
学习·html