Spring Boot 整合MyBatis(超详细)

😀前言

本篇博文关于Spring Boot 整合MyBatis,希望你能够喜欢

🏠个人主页:晨犀主页

🧑个人简介:大家好,我是晨犀,希望我的文章可以帮助到大家,您的满意是我的动力😉😉

💕欢迎大家:这里是CSDN,我总结知识的地方,欢迎来到我的博客,感谢大家的观看🥰

如果文章有什么需要改进的地方还请大佬不吝赐教 先在此感谢啦😊

文章目录

Spring Boot 整合MyBatis

需求说明/图解

  1. 将Spring Boot 和MyBatis 整合
  2. 查询出一条数据

综合案例

代码+配置实现

  1. 创建数据库和表
sql 复制代码
CREATE DATABASE `springboot_mybatis`
use `springboot_mybatis`
CREATE TABLE `monster` (
`id` INT NOT NULL AUTO_INCREMENT,
`age` INT NOT NULL,
`birthday` DATE DEFAULT NULL,
`email` VARCHAR(255) DEFAULT NULL,
韩顺平Java 工程师
`gender` char(1) DEFAULT NULL,
`name` VARCHAR(255) DEFAULT NULL,
`salary` DOUBLE NOT NULL,
PRIMARY KEY (`id`)
) CHARSET=utf8
SELECT * FROM `monster`
insert into monster values(null, 20, '2000-11-11', 'nmw@sohu.com', '男', '牛魔王', 5000.88);
insert into monster values(null, 10, '2011-11-11', 'bgj@sohu.com', '女', '白骨精', 8000.88);
insert into monster values(null, 20, '2020-11-11', 'xhy@sohu.com', '男', '小虎牙', 3000.88);
insert into monster values(null, 18, '2001-06-18', 'xhy@sohu.com', '女', '小狐妖', 8888.88);
  1. 创建springboot_mybatis 项目-创建maven

    pom.xml 需要引入相关依赖.

xml 复制代码
    <!--引入相关的依赖-->
    <dependencies>
        <!--引入web starter-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <!--引入mybatis starter, 如果看不到版本,自己手写2.2.2-->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.2.2</version>
        </dependency>

        <!--引入mysql驱动: 这里使用版本仲裁 8.0.26-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>

        <!--引入配置处理器 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
        </dependency>

        <!--引入lombok-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>

        <!--引入test starter-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
        </dependency>
		 <!--引入druid依赖-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.1.17</version>
        </dependency>
    </dependencies>
  1. 创建resources/application.yml , 配置数据源参数, 并完成Spring Boot 项目启动测试
yml 复制代码
server:
  port: 9090
spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/springboot_mybatis?useSSL=true&useUnicode=true&characterEncoding=UTF-8
    username: root
    password: 123456
  1. 切换数据源为druid , 修改pom.xml(如果没有mybatis-stater , 加入即可.) , 并加入配置文件com/my/mybatis/config/DruidDataSourceConfig.java , 完成测试
xml 复制代码
 <!--引入druid依赖-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.1.17</version>
        </dependency>

配置文件com/my/mybatis/config/DruidDataSourceConfig.java

java 复制代码
@Configuration
public class DruidDataSourceConfig {


    @ConfigurationProperties("spring.datasource")
    @Bean
    public DataSource dataSource() throws SQLException {
        DruidDataSource druidDataSource =
                new DruidDataSource();
        return druidDataSource;
    }
}
  1. 创建com/my/mybatis/bean/Monster.java
java 复制代码
@Data
public class Monster {
    private Integer id;
    private Integer age;
    //这里通过注解来解决时区问题
    //GMT 就是格林尼治标准时间
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date birthday;
    private String email;
    private String name;
    private String gender;
    private Double salary;
}
  1. 创建com/my/mybatis/mapper/MonsterMapper.java
java 复制代码
//在Mapper接口使用 @Mapper 就会扫描,并将Mapper接口对象注入
@Mapper
public interface MonsterMapper {
    //方法,根据id返回Monster对象
    public Monster getMonsterById(Integer id);
}
  1. 创建springboot_mybatis\src\main\resources\mapper\MonsterMapper.xml , 文件模板从mybatis 官方文档拷贝
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="com.my.springboot.mybatis.mapper.MonsterMapper">
    <!--配置getMonsterById-->
    <select id="getMonsterById" resultType="com.my.mybatis.bean.Monster">
        SELECT * FROM `monster` WHERE id=#{id}
    </select>
</mapper>

8.创建com/my/mybatis/service/MonsterService.java

java 复制代码
public interface MonsterService {

    //根据id返回Monster对象
    public Monster getMonsterById(Integer id);
}

创建com/my/mybatis/service/impl/MonsterServiceImpl.java

java 复制代码
@Service
public class MonsterServiceImpl implements MonsterService {

    //装配MonsterMapper
    @Resource
    private MonsterMapper monsterMapper;

    @Override
    public Monster getMonsterById(Integer id) {
        return monsterMapper.getMonsterById(id);
    }
}
  1. 创建com/my/mybatis/controller/MonsterController.java
java 复制代码
@Controller
public class MonsterController {

    //装配MonsterService
    @Resource
    private MonsterService monsterService;

    @ResponseBody
    @GetMapping("/monster")
    public Monster getMonsterById(@RequestParam(value = "id") Integer id){

        return monsterService.getMonsterById(id);
    }
}
  1. 修改resources/application.yml , 指定mybatis 的配置参数
yml 复制代码
server:
  port: 10000
spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/springboot_mybatis?useSSL=true&useUnicode=true&characterEncoding=UTF-8
    username: root
    password: 123456

mybatis:
  #指定要扫描的 Xxxmapper.xml
  mapper-locations: classpath:mapper/*.xml

  #通过config-location 可以指定mybatis-config.xml,可以以传统的方式来配置mybatis
  #config-location: classpath:mybatis-config.xml

  #我们也可以直接在application.yml进行配置
  #举例说明1. 比如配置原来的 typeAliases
  #举例说明2 配置输出底层的原生sql
  type-aliases-package: com.my.springboot.mybatis.bean
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

  #配置mybatis的两种方式的选择: 如果配置比较简单,就直接在application.yml配置即可
  #如果配置内容比较多,可以考虑单独的做一个mybatis-config.xml

测试页面效果

完成测试, 浏览器: http://localhost:10000/monster?id=1

注意事项和细节说明

  1. spring boot 整合mybatis 取出的日期, 出现8 小时时差解决方案
java 复制代码
@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone="GMT+8")

😁热门专栏推荐
Thymeleaf快速入门及其注意事项

Spring Initailizr--快速入门--SpringBoot的选择

带你了解SpringBoot支持的复杂参数--自定义对象参数-自动封装

Rest 优雅的url请求处理风格及注意事项

文章到这里就结束了,如果有什么疑问的地方请指出,诸大佬们一起来评论区一起讨论😁

希望能和诸大佬们一起努力,今后我们一起观看感谢您的阅读🍻

如果帮助到您不妨3连支持一下,创造不易您们的支持是我的动力🤞

相关推荐
全靠bug跑13 分钟前
Spring Cloud OpenFeign 实战三部曲:快速集成 · 连接池优化 · 客户端抽取
java·spring boot·openfeign
北城以北88881 小时前
Spring定时任务与Spring MVC拦截器
spring boot·spring·mvc
Victor3561 小时前
Netty(20)如何实现基于Netty的WebSocket服务器?
后端
缘不易1 小时前
Springboot 整合JustAuth实现gitee授权登录
spring boot·后端·gitee
Kiri霧1 小时前
Range循环和切片
前端·后端·学习·golang
WizLC1 小时前
【Java】各种IO流知识详解
java·开发语言·后端·spring·intellij idea
Mr.朱鹏1 小时前
SQL深度分页问题案例实战
java·数据库·spring boot·sql·spring·spring cloud·kafka
星星不打輰1 小时前
SSM项目--SweetHouse 甜蜜蛋糕屋
java·spring·mybatis·ssm·springmvc
Victor3561 小时前
Netty(19)Netty的性能优化手段有哪些?
后端
爬山算法1 小时前
Netty(15)Netty的线程模型是什么?它有哪些线程池类型?
java·后端