首页 > 其他分享 >【SpringBoot快速入门】(3)SpringBoot整合junit和MyBatis 详细代码示例与讲解

【SpringBoot快速入门】(3)SpringBoot整合junit和MyBatis 详细代码示例与讲解

时间:2023-12-28 11:34:46浏览次数:23  
标签:SpringBoot 示例 class MyBatis 2.2 com public itheima



目录

  • 1.SpringBoot整合junit
  • 1.1 环境准备
  • 1.2 编写测试类
  • 2.SpringBoot整合mybatis
  • 2.1 回顾Spring整合Mybatis
  • 2.2 SpringBoot整合mybatis
  • 2.2.1 创建模块
  • 2.2.2 定义实体类
  • 2.2.3 定义dao接口
  • 2.2.4 定义测试类
  • 2.2.5 编写配置
  • 2.2.6 测试
  • 2.2.7 使用Druid数据源


之前我们已经学习的Spring、SpringMVC、Mabatis、Maven,详细讲解了Spring、SpringMVC、Mabatis整合SSM的方案和案例,上一节我们学习了SpringBoot的开发步骤、工程构建方法以及工程的快速启动,从这一节开始,我们开始学习SpringBoot配置文件。接下来,我们逐步开始学习,本教程所有示例均基于Maven实现,如果您对Maven还很陌生,请移步本人的博文《如何在windows11下安装Maven并配置以及 IDEA配置Maven环境》

【SpringBoot快速入门】(3)SpringBoot整合junit和MyBatis 详细代码示例与讲解_bc

1.SpringBoot整合junit

回顾 Spring 整合 junit

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = SpringConfig.class)
public class UserServiceTest {
	@Autowired
	private BookService bookService;
	@Test
	public void testSave(){
		bookService.save();
	}
}

使用 @RunWith 注解指定运行器,使用 @ContextConfiguration 注解来指定配置类或者配置文件。而 SpringBoot 整合junit 特别简单,分为以下三步完成

  • 在测试类上添加 SpringBootTest 注解
  • 使用 @Autowired 注入要测试的资源
  • 定义测试方法进行测试

1.1 环境准备

创建一个名为 springboot_07_test 的 SpringBoot 工程,工程目录结构如下

【SpringBoot快速入门】(3)SpringBoot整合junit和MyBatis 详细代码示例与讲解_junit_02


在 com.itheima.service 下创建 BookService 接口,内容如下

public interface BookService {
	public void save();
}

在 com.itheima.service.impl 包写创建一个 BookServiceImpl 类,使其实现 BookService 接口,内容如下

@Service
public class BookServiceImpl implements BookService {
	@Override
	public void save() {
		System.out.println("book service is running ...");
	}
}

1.2 编写测试类

在 test/java 下创建 com.itheima 包,在该包下创建测试类,将 BookService 注入到该测试类中

@SpringBootTest
class Springboot07TestApplicationTests {
	@Autowired
	private BookService bookService;
	@Test
	public void save() {
		bookService.save();
	}
}

注意:这里的引导类所在包必须是测试类所在包及其子包。
例如:

  • 引导类所在包是 com.itheima
  • 测试类所在包是 com.itheima

如果不满足这个要求的话,就需要在使用 @SpringBootTest 注解时,使用 classes 属性指定引导类的字节码对象。如@SpringBootTest(classes = Springboot07TestApplication.class)

2.SpringBoot整合mybatis

2.1 回顾Spring整合Mybatis

Spring 整合 Mybatis 需要定义很多配置类

  • SpringConfig 配置类
  • 导入 JdbcConfig 配置类
  • 导入 MybatisConfig 配置类
@Configuration
@ComponentScan("com.itheima")
@PropertySource("classpath:jdbc.properties")
@Import({JdbcConfig.class,MyBatisConfig.class})
public class SpringConfig {
}
  • JdbcConfig 配置类
  • 定义数据源(加载properties配置项:driver、url、username、password)
public class JdbcConfig {
	@Value("${jdbc.driver}")
	private String driver;
	@Value("${jdbc.url}")
	private String url;
	@Value("${jdbc.username}")
	private String userName;
	@Value("${jdbc.password}")
	private String password;
	@Bean
	public DataSource getDataSource(){
		DruidDataSource ds = new DruidDataSource();
		ds.setDriverClassName(driver);
		ds.setUrl(url);
		ds.setUsername(userName);
		ds.setPassword(password);
		return ds;
	}
}
  • MybatisConfig 配置类
  • 定义 SqlSessionFactoryBean
  • 定义映射配置
@Bean
public MapperScannerConfigurer getMapperScannerConfigurer(){
	MapperScannerConfigurer msc = new MapperScannerConfigurer();
	msc.setBasePackage("com.itheima.dao");
	return msc;
}
@Bean
public SqlSessionFactoryBean getSqlSessionFactoryBean(DataSource dataSource){
	SqlSessionFactoryBean ssfb = new SqlSessionFactoryBean();
	ssfb.setTypeAliasesPackage("com.itheima.domain");
	ssfb.setDataSource(dataSource);
	return ssfb;
}

2.2 SpringBoot整合mybatis

2.2.1 创建模块

  • 创建新模块,选择 Spring Initializr ,并配置模块相关基础信息
  • 选择当前模块需要使用的技术集(MyBatis、MySQL)

2.2.2 定义实体类

在 com.itheima.domain 包下定义实体类 Book ,内容如下

public class Book {
private Integer id;
private String name;
private String type;
private String description;
//setter and getter
//toString
}

2.2.3 定义dao接口

在 com.itheima.dao 包下定义 BookDao 接口,内容如下

public interface BookDao {
@Select("select * from tbl_book where id = #{id}")
public Book getById(Integer id);
}

2.2.4 定义测试类

在 test/java 下定义包 com.itheima ,在该包下测试类,内容如下

@SpringBootTest
class Springboot08MybatisApplicationTests {
	@Autowired
	private BookDao bookDao;
	@Test
	void testGetById() {
		Book book = bookDao.getById(1);
		System.out.println(book);
	}
}

2.2.5 编写配置

我们代码中并没有指定连接哪儿个数据库,用户名是什么,密码是什么。所以这部分需要在 SpringBoot 的配置文件中进行配合。
在 application.yml 配置文件中配置如下内容

spring:
	datasource:
		driver-class-name: com.mysql.jdbc.Driver
		url: jdbc:mysql://localhost:3306/ssm_db
		username: root
		password: root

2.2.6 测试

运行测试方法,我们会看到如下错误信息

【SpringBoot快速入门】(3)SpringBoot整合junit和MyBatis 详细代码示例与讲解_junit_03


错误信息显示在 Spring 容器中没有 BookDao 类型的 bean 。为什么会出现这种情况呢?

原因是 Mybatis 会扫描接口并创建接口的代码对象交给 Spring 管理,但是现在并没有告诉 Mybatis 哪个是 dao 接口。

而我们要解决这个问题需要在 BookDao 接口上使用 @Mapper , BookDao 接口改进为

@Mapper
public interface BookDao {
	@Select("select * from tbl_book where id = #{id}")
	public Book getById(Integer id);
}

注意:
SpringBoot 版本低于2.4.3(不含),Mysql驱动版本大于8.0时,需要在url连接串中配置时区
jdbc:mysql://localhost:3306/ssm_db?serverTimezone=UTC ,或在MySQL数据库端配置时区解决此问题

2.2.7 使用Druid数据源

现在我们并没有指定数据源, SpringBoot 有默认的数据源,我们也可以指定使用 Druid 数据源,按照以下步骤实现

  • 导入 Druid 依赖
<dependency>
	<groupId>com.alibaba</groupId>
	<artifactId>druid</artifactId>
	<version>1.1.16</version>
</dependency>
  • 在 application.yml 配置文件配置
    可以通过 spring.datasource.type 来配置使用什么数据源。配置文件内容可以改进为
spring:
	datasource:
		driver-class-name: com.mysql.cj.jdbc.Driver
		url: jdbc:mysql://localhost:3306/ssm_db?serverTimezone=UTC
		username: root
		password: root
		type: com.alibaba.druid.pool.DruidDataSource


标签:SpringBoot,示例,class,MyBatis,2.2,com,public,itheima
From: https://blog.51cto.com/u_12948819/9011981

相关文章

  • 【SpringBoot快速入门】(2)SpringBoot的配置文件与配置方式详细讲解
    之前我们已经学习的Spring、SpringMVC、Mabatis、Maven,详细讲解了Spring、SpringMVC、Mabatis整合SSM的方案和案例,上一节我们学习了SpringBoot的开发步骤、工程构建方法以及工程的快速启动,从这一节开始,我们开始学习SpringBoot配置文件。接下来,我们逐步开始学习,本教程所有示例均基于......
  • 【Spring教程31】SSM框架整合实战:从零开始学习SSM整合配置,如何编写Mybatis SpringMVC
    目录1流程分析2整合配置2.1步骤1:创建Maven的web项目2.2步骤2:添加依赖2.3步骤3:创建项目包结构2.4步骤4:创建SpringConfig配置类2.5步骤5:创建JdbcConfig配置类2.6步骤6:创建MybatisConfig配置类2.7步骤7:创建jdbc.properties2.8步骤8:创建SpringMVC配置类2.9步骤9:创......
  • 【SpringBoot快速入门】(1)SpringBoot的开发步骤、工程构建方法以及工程的快速启动详
    目录SpringBoot简介1SpringBoot快速入门1.1开发步骤1.1.1创建新模块1.1.2创建Controller1.1.3启动服务器1.1.4进行测试2对比3官网构建工程3.1进入SpringBoot官网3.2选择依赖3.3生成工程4SpringBoot工程快速启动4.1问题导入4.2打包4.3启动之前我们已经学习的Sprin......
  • SpringBoot 整合 ShardingSphere JDBC、MySQL分表实例
    1.概述ShardingSphere分为ShardingSphere-JDBC、ShardingSphere-Proxy、ShardingSphere-Sidecar(TODO)。ShardingSphere官方手册:传送门;这里使用的是ShardingSphere-JDBC,ShardingSphere-JDBC为轻量级Java框架,在Java的JDBC层提供的额外服务。它使用客户端直连数据库,以jar......
  • 【Spring】SpringMVC项目升级成SpringBoot实践
    将SpringMVC项目升级为SpringBoot项目需要一系列详细的步骤。以下是一个更详细的步骤指南:项目初始化:创建一个新的SpringBoot项目。您可以使用SpringInitializr或SpringBoot的Maven插件来快速生成项目结构。依赖管理:在新项目中,添加所需的依赖。根据您的项目需求,添加SpringBoot......
  • 项目应用多级缓存示例
    前不久做的一个项目,需要在前端实时展示硬件设备的数据。设备很多,并且每个设备的数据也很多,总之就是数据很多。同时,设备的刷新频率很快,需要每2秒读取一遍数据。问题来了,我们如何读取数据,并且在前端展示?我的想法是利用多级缓存:1)首先是有个数据采集程序,不停地采集设备的数据。采集到......
  • springboot 共享session
    在SpringBoot中,可以使用SpringSession来实现共享session。SpringSession是一个基于Spring的会话管理框架,它提供了跨多个服务器的会话共享功能。要使用SpringSession实现共享session,需要按照以下步骤进行配置:添加依赖在SpringBoot项目的pom.xml文件中添加SpringSession的依赖:x......
  • MyBatis中获取参数值的两种方式:${} 和 #{},以及它们之间区别是什么?
    MyBatis中获取参数值的两种方式${}:的本质就是字符串拼接#{}:的本质就是占位符赋值①使用${}占位符,在字符串拼接的方式拼接sql,若为字符串类型或为日期类型的字段进行赋值时,需要手动加单引号②使用#{}占位符赋值的方式拼接sql,此时为字符串类型或日期类型的字段进行赋值时......
  • Linux中date命令使用示例
    一、.Linux中的date命令date"+%Y-%m-%d"输出当前日期,格式为“年-月-日”,例如:2023-06-01date"+%Y年%m月%d日%H:%M:%S"输出当前日期喝时间,格式为“年月日时:分:秒”,例如:2023年12月28日04:28:11date"+%b"输出当前月份的英文缩写,例如:Jundate"+%B"输出当前月份的英文全称,例......
  • spring MVC 后端 接收 前端 批量添加的数据(简单示例)
    <%@pagecontentType="text/html;charset=UTF-8"language="java"%><html><head>  <title>Title</title></head><body><scriptsrc="${pageScope.request.ContextPath}/js/jquery-3.3.1.min.js&qu......