Spring Boot 整合MyBatis 和 Spring Boot 整合MyBatis-Plus

2023-11-02

目录

Spring Boot 整合MyBatis

代码+配置实现

 创建数据库和表

使用灵活的方式创建maven

创建resources/application.yml ,配置数据源参数, 并完成Spring Boot 项目启动测试

测试DruidDataSourceConfig

创建MonsterMapper接口

创建resources\mapper\MonsterMapper.xml , 文件模板从mybatis 官方文档拷贝

创建 service/MonsterService.java接口

创建 service/impl/MonsterServiceImpl.java接口

创建MonsterController

修改resources/application.yml , 指定mybatis.xml 的配置参数

测试页面效果

注意事项和细节说明

Spring Boot 整合MyBatis-Plus

 基本介绍

整合MyBatis-Plus 实例

 需求说明/图解

 代码实现

创建数据库和表

创建springboot_mybatisplus 项目-pom.xml 引入必要的依赖

修改pom.xml 引入MyBatis-Plus starter

 创建resources/application.yml 配置数据源参数

切换数据源为druid ,修改pom.xml 

创建配置文件DruidDataSourceConfig.java 

创建主函数

测试是否能正确启动项目, 注意观察mybatis-plus 是否引入成功

创建ben/ Monster.java

创建/mapper/MonsterMapper.java

创建service/MonsterService.java

创建impl/MonsterServiceImpl.java

创建/controller/MonsterController.java

修改Application.java , 加入对Mapper 的扫描

​编辑启动项目,完成测试

整合MyBatis-Plus 注意事项和细节


Spring Boot 整合MyBatis


代码+配置实现

 创建数据库和表

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,
`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);

使用灵活的方式创建maven

注意我们这里使用的数据源为druid.

    <!--导入springboot父工程-规定写法-->
    <parent>
        <artifactId>spring-boot-starter-parent</artifactId>
        <groupId>org.springframework.boot</groupId>
        <version>2.5.3</version>
    </parent>

    <!--引入相关的依赖-->
    <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>

创建resources/application.yml ,配置数据源参数, 并完成Spring Boot 项目启动测试

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: 自己的密码

测试DruidDataSourceConfig


/**
建议, 最好是先自己把这个类写出,然后拷贝自己需要的代码, 这样自己写代码也知道是为什么
 *
 */
@Configuration
public class DruidDataSourceConfig {


    @ConfigurationProperties("spring.datasource")
    @Bean
    public DataSource dataSource() throws SQLException {
        DruidDataSource druidDataSource =
                new DruidDataSource();
        return druidDataSource;
    }
}

创建/Monster.java -SSM整合在博客的项目有介绍

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

创建MonsterMapper接口

@Mapper
public interface MonsterMapper {
    //方法,根据id返回Monster对象
    public Monster getMonsterById(Integer id);
}

创建resources\mapper\MonsterMapper.xml , 文件模板从mybatis 官方文档拷贝

<?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.wyx.springboot.mybatis.mapper.MonsterMapper">
    <!--配置getMonsterById-->
    <select id="getMonsterById" resultType="Monster">
        SELECT * FROM `monster` WHERE id=#{id}
    </select>
</mapper>

创建 service/MonsterService.java接口

public interface MonsterService {

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

创建 service/impl/MonsterServiceImpl.java接口

@Service
public class MonsterServiceImpl implements MonsterService {

    //装配MonsterMapper
    @Resource
    private MonsterMapper monsterMapper;

    @Override
    public Monster getMonsterById(Integer id) {
        return monsterMapper.getMonsterById(id);
    }
}

创建MonsterController

@Controller
public class MonsterController {

    //装配MonsterService
    @Resource
    private MonsterService monsterService;


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

        return monsterService.getMonsterById(id);
    }
}

修改resources/application.yml , 指定mybatis.xml 的配置参数

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: 自己的密码


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

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

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

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

测试页面效果

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

注意事项和细节说明

spring boot 整合mybatis 取出的日期, 出现8 小时时差解决方案

@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone="GMT+8")


Spring Boot 整合MyBatis-Plus

官网https://baomidou.com

 基本介绍

1. MyBatis-Plus (简称MP)是一个MyBatis 的增强工具,在MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。

2. 强大的CRUD 操作:内置通用Mapper、通用Service,通过少量配置即可实现单表大部分CRUD 操作,更有强大的条件构造器,满足各类使用需求 

整合MyBatis-Plus 实例

 需求说明/图解

1. 将Spring Boot 和MyBatis-Plus 整合

2. 查询数据,如图 

 代码实现

创建数据库和表

CREATE DATABASE `springboot_mybatisplus`
USE `springboot_mybatisplus`
CREATE TABLE `monster` (
`id` INT NOT NULL AUTO_INCREMENT,
`age` INT NOT NULL,
`birthday` DATE DEFAULT NULL,
`email` VARCHAR(255) DEFAULT NULL,
`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', 'xzj@sohu.com', ' 男', ' 蝎子精',
15000.88);
INSERT INTO monster VALUES(NULL, 10, '2011-11-11', 'ytj@sohu.com', ' 女', ' 玉兔精',
18000.88);

创建springboot_mybatisplus 项目-pom.xml 引入必要的依赖

    <!--导入springboot父工程-规定写法-->
    <parent>
        <artifactId>spring-boot-starter-parent</artifactId>
        <groupId>org.springframework.boot</groupId>
        <version>2.5.3</version>
    </parent>

    <!--引入必要的依赖-->
    <dependencies>

        <!--引入web starter-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </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>


      
    </dependencies>

修改pom.xml 引入MyBatis-Plus starter

  <!--引入mybatis-plus starter-->
        <!-- https://mvnrepository.com/artifact/com.baomidou/mybatis-plus-boot-starter -->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.4.3</version>
        </dependency>

 创建resources/application.yml 配置数据源参数

server:
  port: 9090
spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/springboot_mybatisplus?useSSL=true&useUnicode=true&characterEncoding=UTF-8
    username: root
    password: 自己的数据库密码

切换数据源为druid ,修改pom.xml 

        <!--引入druid依赖-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.1.17</version>
        </dependency>

创建配置文件DruidDataSourceConfig.java 

@Configuration
public class DruidDataSourceConfig {


    @ConfigurationProperties("spring.datasource")
    @Bean
    public DataSource dataSource() throws SQLException {
        DruidDataSource druidDataSource =
                new DruidDataSource();
        return druidDataSource;
    }
}

创建主函数

@SpringBootApplication
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

测试是否能正确启动项目, 注意观察mybatis-plus 是否引入成功

创建ben/ Monster.java

@Data
//说明:
//1. 如果这个类名Monster 和表名monster 一致,可以映射上,则@TableName 可以省略
//2. 如果这个类名Monster 和表名不一致,不能映射上,则@TableName 可以指定
@TableName("monster")
public class Monster {
    private Integer id;
    private Integer age;
    @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;
}

创建/mapper/MonsterMapper.java

1. BaseMapper 已经默认提供了很多crud 方法, 可以直接用
2. 如果BaseMapper 提供的方法不满足需要,可以再开发MonsterMapper.xml

@Mapper
public interface MonsterMapper  extends BaseMapper<Monster> {
}

创建service/MonsterService.java

解读

1.在传统的方法中 在接口中定义方法/声明方法,然后在实现类进行实现

2. 在mybits-plus中我们可以继承父接口IService

这个IService接口声明很多方法比如crud

4. 如果默认方法不能满足需求,我们可以再声明需要的方法,然后在实现类去实现就可

@Service
public interface MonsterService extends IService<Monster> {
}

创建impl/MonsterServiceImpl.java

解读

以前的做法是MonsterServiceImpl  implements   MonsterService 接口.

但是这样做会报错 因为以前父接口没有继承接口可以直接这样

但是现在父接口继承了一个IService接口 所以你要实现IService的方法

但是那个太多了我们也用不了那么多

所以mybits-plus给我们提供一个ServiceImpl类来继承 这个类实现了IService接口

 所以我们可以看 ServiceImpl类 实现了IService接口.

MonsterService又继承了IService接口.

所以我们MonsterServiceImpl 继承了ServiceImpl类 就可以相当于实现了MonsterService接口.

@Service
public class MonsterServiceImpl extends ServiceImpl<MonsterMapper, Monster> implements MonsterService {
}

创建/controller/MonsterController.java

@Controller
public class MonsterController {
    @Autowired
    MonsterService monsterService;
    @ResponseBody
    @GetMapping("/monster")
    public Monster getByMonsterId(@RequestParam("id") Integer id) {
        return monsterService.getById(id);
    }
    @ResponseBody
    @GetMapping("/list")
    public List<Monster> listMonster() {
        return monsterService.list();
    }
}

修改Application.java , 加入对Mapper 的扫描

@MapperScan("com.wyx.mybatisplus.mapper")
@SpringBootApplication
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

启动项目,完成测试

浏览器: http://localhost:10000/list http://localhost:10000/monster?id=1

 

整合MyBatis-Plus 注意事项和细节

1. @TableName 作用.

如果这个类名Monster 和表名monster 一致,可以映射上,则@TableName 可以省略.

如果这个类名Monster 和表名不一致,不能映射上,则可以通过@TableName 指定.

 2. MyBatis-Plus starter 到底引入了哪些依赖?

3. 为了开发方便, 可以安装MyBatisX 插件,

参考文档:https://baomidou.com/guide/mybatisx-idea-plugin.html 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Spring Boot 整合MyBatis 和 Spring Boot 整合MyBatis-Plus 的相关文章

随机推荐

  • linux超级用户添加,为linux普通用户添加超级用户权限sudo

    问题 假设用户名为 ali 如果用户名没有超级用户权限 当输入 sudo 命令 时 系统提示 ali is not in the sudoers file This incident will be reported 解决 1 进入超级用户
  • unity editer2020版本安装

    unity editer2020版本安装 前言 unity安装 激活许可证 前言 官方下载unity最新版本 unity安装 1 点击下载 2 点击 下载Unity Hub 3 由于我是windows10系统 所以点击 Windows 下载
  • vue表格展示照片点击放大并可左右切换查看

    一 vue展示后台返回照片集合 前端代码展示
  • 基于机器学习的恶意软件加密流量检测研究分享

    1 概述 2 恶意软件加密流量介绍 3 加密HTTPS流量解析 4 特征工程 5 模型效果 6 具体实施 7 总结 1 概述 近年来随着HTTPS的全面普及 为了确保通信安全和隐私 越来越多的网络流量开始采用HTTPS加密 截止今日 超过6
  • 深度学习模型推理时间与FPS的求取方法,以及time,OpenCV的API教程

    类似深度学习中目标检测的深度学习模型中有两个非常重要的性能指标 一个是MAP就是检测的准确率 另一个就是FPS 就是模型的推理速度 那么我们如何能够知道模型和视频的推理速度呢 接下来我们直接进入正题 一 求取模型的推理时间我们需要借助pyt
  • C语言支不支持重载?

    首先这个问题的答案是C 支持函数重载而C语言不支持函数重载 下面我们从程序编译链接阶段看看其中的原因 先看看重载的定义 函数重载就是指 在同一作用域类 一组函数的函数名相同 参数列表不同 个数不同或类型不同 返回值可同可不同 那么问题来了
  • 风火速打印小程序分析

    这里写自定义目录标题 软件需求背景 分析风火速功能 功能介绍 总结 软件需求背景 类似淘宝 京东第三方卖家需要一个OMS系统 并提供辅助的快递订单打印功能 现在菜鸟物流已标准化了各家快递公司的电子面单 也可以独立对接快递公司 商家需求提供一
  • 高性能Spark作业调优

    在大数据计算领域 Spark已经成为了越来越流行 越来越受欢迎的计算平台之一 Spark的功能涵盖了大数据领域的离线批处理 SQL类处理 流式 实时计算 机器学习 图计算等各种不同类型的计算操作 应用范围与前景非常广泛 在美团点评 已经有很
  • [CentOS Python系列] 三.阿里云MySQL数据库开启配置及SQL语句基础知识

    从2014年开始 作者主要写了三个Python系列文章 分别是基础知识 网络爬虫和数据分析 Python基础知识系列 Pythonj基础知识学习与提升 Python网络爬虫系列 Python爬虫之Selenium Phantomjs Cas
  • Thinkphp 如何自动验证及验证规则

    在添加数据或者创建数据的时候 我们一般对数据进行处理 ThinkPHP模型层提供的一种数据验证方法 可以在使用create创建数据对象的时候自动进行数据验证 1 自动验证的用法 namespace Home Model use Think
  • 利用FPGA的DDS直接数字合成产生SPWM正弦调制方波

    1 原理 利用FPGA的DDS产生调制信号 利用计数器产生高频载波三角波 将两路信号通过比较器进行比较 产生调制SPWM方波 1 1 DDS基本结构 三个寄存器 两个加法器 第二个加法器可以输出地址作为ROM数据表模块的输入 从而提取ROM
  • java基础笔记

    java基础自学笔记 前言 一 java的一些基本规则 二 java的面向对象基础 三 抽象 接口 异常基础 接口 匿名类 异常 四 java的gui基础 一 图形界面 二 主要包 三 窗体类 方法 四 布局管理器 方法 BordLayou
  • 【转载】What does MULx operation in SNOW 3G correspond to?

    https crypto stackexchange com questions 72538 what does mulx operation in snow 3g correspond to According to the spec M
  • ENVI入门系列教程---二、图像分析---11.分类后处理

    every blog every motto Live beautifully dream passionately love completely https blog csdn net weixin 39190382 type blog
  • 嵌入式Linux移植0.嵌入式开发环境配置综述

    在开发板上进行Linux开发不同于Ubuntu 需要在PC上开发后编译 移进板子进行执行 因此会设计到各种开发工具 如NFS TFTP服务 QT环境配置 交叉编译器的配置等等 目前刚安装完QT开发环境并且测试通过 虽局限于飞凌的OK335x
  • P1853 守望者的逃离

    include
  • 计算机视觉与智能语音处理融合套件初体验(语音部分)

    本次实验我们使用的是EAIDK计算机视觉 语音处理套件试验箱进行实验 套件介绍 套件简介 EAIDK计算机视觉 语音实验箱以嵌入式人工智能开发套件EAIDK 610为核心 具备语音 视觉等传感器数据采集能力 及适用于多场景的运动控制接口 预
  • C语言---离散数学实验--命题逻辑及其应用(实验报告下载)

    目录 下载链接 设计一个5人表决开关电路 代码实现 确定谁是作案者 代码实现 下载链接 链接 https pan baidu com s 1nDnISBjZjbD6Bf4qqzICsw pwd 1234 提取码 1234 设计一个5人表决开
  • VUE前端实现token的无感刷新

    前言 说实话 这个其实没啥好讲的 要说有复杂度的话 也主要是在后端 实现token无感刷新对于前端来说是一项十分常用的技术 其本质都是为了优化用户体验 当token过期时不需要用户调回登录页重新登录 而是当token失效时 进行拦截 发送刷
  • Spring Boot 整合MyBatis 和 Spring Boot 整合MyBatis-Plus

    目录 Spring Boot 整合MyBatis 代码 配置实现 创建数据库和表 使用灵活的方式创建maven 创建resources application yml 配置数据源参数 并完成Spring Boot 项目启动测试 测试Drui