图文详解Spring Boot整合MyBatis(附源码)
版权声明
- 本文原创作者:谷哥的小弟
- 作者博客地址:http://blog.csdn.net/lfdfhl
教程概述
本教程以图文形式详细讲解SpringBoot整合MyBatis的流程以及具体步骤及其注意事项。本教材仅为演示案例,请在项目开发过程中将相关信息替换为与实际情况吻合的代码和配置。
数据准备
准备本教程所需的数据库、数据表及其数据。SQL脚本文件myproject.sql代码如下:
-- 创建数据库DROPDATABASEIFEXISTSmybatisdb;CREATEDATABASEmybatisdb;USEmybatisdb;-- 创建员工表CREATETABLEemployee(idINTPRIMARYKEYAUTO_INCREMENT,nameVARCHAR(50),genderVARCHAR(10),departmentVARCHAR(50),positionVARCHAR(50),salaryINT,hire_dateDATE);-- 插入员工数据INSERTINTOemployee(name,gender,department,position,salary,hire_date)VALUES('张三','male','技术部','软件工程师',15000,'2021-03-15'),('李四','male','市场部','市场专员',8000,'2022-07-01'),('王五','female','人力资源部','HR经理',12000,'2020-11-20'),('赵六','male','财务部','会计',9000,'2023-01-10'),('孙七','female','技术部','测试工程师',13000,'2021-08-25'),('周八','male','运营部','运营主管',11000,'2019-05-14'),('吴九','female','市场部','品牌经理',14000,'2022-04-18'),('郑十','male','技术部','架构师',20000,'2018-12-01');-- 查询员工数据SELECT*FROMemployee;利用Navicat等工具运行以上SQL脚本文件。
首先创建数据库mybatisdb;图示如下:
然后,运行myproject.sql文件;图示如下:
运行完毕;图示如下:
数据如下图所示:
创建Spring Boot项目
以下介绍SpringBoot项目的创建与相关配置。
创建项目
新建项目;图示如下:
创建SpringBoot项目并填写相关信息。请注意,Language选择Java,Type选择Maven;图示如下:
选择SpringBoot版本3.X,并添加Spring Web依赖;图示如下:
项目创建完毕;图示如下:
配置JDK
请依次选择File、Settings 、Compiler、Java Compiler配置JDK,图示如下:
配置SDK
请依次选择File、Project Settings、Project配置SDK,图示如下:
请依次选择File、Project Structure、Platform Settings配置SDKs,图示如下:
配置Maven
请依次选择File、Settings配置Maven,图示如下:
启动项目,检查项目是否可正常启动,图示如下:
项目启动完毕,图示如下:
添加项目依赖
在pom.xml文件的< dependencies></ dependencies>标签中新添如下依赖:
<!-- MySQL 驱动 --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.32</version></dependency><!-- Druid 连接池 --><dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>1.1.10</version></dependency><!-- MyBatis --><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>3.0.3</version></dependency>添加完毕后,请务必刷新Maven;图示如下:
注意事项:
1、在< dependencies></ dependencies>标签中添加依赖。
2、请勿删除< dependencies></ dependencies>标签中已有的依赖。
完善Spring Boot项目结构
在此,提前准备好项目中可能用到的包和相关资源。
创建与Java代码相关的包
首先,请在java包下的com.cn.springbootmybatis中创建与Java代码相关的包;常见的有:config、controller、pojo、service、mapper、utils等,请依据项目实际情况创建;图示如下:
注意事项:
Spring Boot项目的启动类SpringBootMyBatisApplication与子包是并行的关系。请勿将SpringBootMyBatisApplication置于任意子包中。
创建与resources代码相关的包
请在resources下以com/cn/springbootmybatis/mapper的方式创建com.cn.springbootmybatis.mapper包用于存放mapper的映射文件,图示如下:
注意事项:
1、请勿以com.cn.springbootmybatis.mapper的方式创建mapper包
2、mapper映射文件的包名需与mapper的接口文件所在包的包名保持一致
配置Spring Boot项目
完善项目结构后,对Spring Boot项目进行配置。
配置项目启动类
请在项目启动类SpringBootMyBatisApplication上使用@MapperScan注解扫描mapper接口文件,图示如下:
代码如下:
packagecom.cn.springbootmybatis;importorg.mybatis.spring.annotation.MapperScan;importorg.springframework.boot.SpringApplication;importorg.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication@MapperScan("com.cn.springbootmybatis.mapper")publicclassSpringBootMyBatisApplication{publicstaticvoidmain(String[]args){SpringApplication.run(SpringBootMyBatisApplication.class,args);}}编写项目配置文件
在此,完善项目配置文件application.properties的编写。
要点概述:
1、请务必注意配置文件中的包名,请依据项目实际情况设置
2、请务必注意配置文件中的路径,请依据项目实际情况设置
3、请务必注意配置文件中的配置信息,请依据项目实际情况设置
4、请务必注意截图的红色标记,请依据项目实际情况设置
application.properties代码如下:
# ------------------------------------------------------------------------------ # 基础配置 # ------------------------------------------------------------------------------ # 应用名称 spring.application.name=SpringBootMyBatis # 应用端口号 server.port=8080 # ------------------------------------------------------------------------------ # 数据源配置 # ------------------------------------------------------------------------------ # 连接池类型:使用阿里巴巴 Druid spring.datasource.type=com.alibaba.druid.pool.DruidDataSource # JDBC 驱动 spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver # 数据库连接地址 spring.datasource.url=jdbc:mysql://localhost:3306/mybatisdb?characterEncoding=UTF-8 # 数据库用户名 spring.datasource.username=root # 数据库密码 spring.datasource.password=root # ------------------------------------------------------------------------------ # MyBatis 配置 # ------------------------------------------------------------------------------ # Mapper XML文件位置 mybatis.mapper-locations=classpath:com/cn/springbootmybatis/mapper/*.xml # 实体类包路径 mybatis.type-aliases-package=com.cn.springbootmybatis.pojo # ------------------------------------------------------------------------------ # 日志配置 # ------------------------------------------------------------------------------ # 根日志级别:INFO logging.level.root=info # Mapper 日志级别:DEBUG logging.level.com.cn.springbootmybatis.mapper=debug图示如下:
Spring Boot项目开发
由此,正式进入项目开发。
创建实体类
在pojo中创建员工实体类Employee,代码如下:
packagecom.cn.springbootmybatis.pojo;importjava.util.Date;publicclassEmployee{privateIntegerid;privateStringname;privateStringgender;privateStringdepartment;privateStringposition;privateIntegersalary;privateDatehireDate;publicEmployee(){}publicEmployee(Integerid,Stringname,Stringgender,Stringdepartment,Stringposition,Integersalary,DatehireDate){this.id=id;this.name=name;this.gender=gender;this.department=department;this.position=position;this.salary=salary;this.hireDate=hireDate;}publicIntegergetId(){returnid;}publicvoidsetId(Integerid){this.id=id;}publicStringgetName(){returnname;}publicvoidsetName(Stringname){this.name=name;}publicStringgetGender(){returngender;}publicvoidsetGender(Stringgender){this.gender=gender;}publicStringgetDepartment(){returndepartment;}publicvoidsetDepartment(Stringdepartment){this.department=department;}publicStringgetPosition(){returnposition;}publicvoidsetPosition(Stringposition){this.position=position;}publicIntegergetSalary(){returnsalary;}publicvoidsetSalary(Integersalary){this.salary=salary;}publicDategetHireDate(){returnhireDate;}publicvoidsetHireDate(DatehireDate){this.hireDate=hireDate;}@OverridepublicStringtoString(){return"Employee{"+"id="+id+", name='"+name+'\''+", gender='"+gender+'\''+", department='"+department+'\''+", position='"+position+'\''+", salary="+salary+", hireDate="+hireDate+'}';}}图示如下:
创建接口文件
在mapper中创建接口文件EmployeeMapper.java,代码如下:
packagecom.cn.springbootmybatis.mapper;importcom.cn.springbootmybatis.pojo.Employee;publicinterfaceEmployeeMapper{// 根据id查询员工EmployeegetEmployeeById(intid);}图示如下:
创建映射文件
在mapper中创建映射文件EmployeeMapper.xml,代码如下:
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPEmapperPUBLIC"-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mappernamespace="com.cn.springbootmybatis.mapper.EmployeeMapper"><selectid="getEmployeeById"resultType="com.cn.springbootmybatis.pojo.Employee">select * from employee where id = #{id}</select></mapper>图示如下:
测试
在测试类SpringBootMyBatisApplicationTests中,注入EmployeeMapper,并测试其功能;代码如下:
packagecom.cn.springbootmybatis;importcom.cn.springbootmybatis.mapper.EmployeeMapper;importcom.cn.springbootmybatis.pojo.Employee;importorg.junit.jupiter.api.Test;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.boot.test.context.SpringBootTest;@SpringBootTestclassSpringBootMyBatisApplicationTests{@TestvoidcontextLoads(){}// 测试依据id查询员工@AutowiredprivateEmployeeMapperemployeeMapper;@TestvoidtestEmployeeQuery(){Employeeemployee=employeeMapper.getEmployeeById(1);System.out.println(employee);}}图示如下:
测试结果如下:
至此,实现了SpringBoot与MyBatis的整合。
