SpringBoot 3.1.7 集成Mybatis

news2024/9/20 0:59:50

一、介绍

Mybatis的中文官网并没找到与SpringBoot最新的集成的教程,有的都是老式的配置方法,所以记录一下怎么我是怎么集成SpringBoot 3.1.7 集成Mybatis 的方法

有条件的可以打开源网站 https://github.com/mybatis/spring-boot-starter

没有条件的我收藏了一个国内镜像 mybatis-spring-boot-starter: Mybatis官方spring-boot-starter

二、集成步骤

1. 官网生成Mybatis工程

官方介绍了,SpringBoot 3.0-3.2 可以使用最新的Mybatis集成方式,并且可以通过Spring Initializr方式生成 

  • https://start.spring.io/#!dependencies=mybatis

打开后,我们可以进入到这个页面,点击GENERATE生成

下载得到一个压缩包,打开压缩包,我们查看maven依赖文件pom.xml 可以看到

		<dependency>
			<groupId>org.mybatis.spring.boot</groupId>
			<artifactId>mybatis-spring-boot-starter</artifactId>
			<version>3.0.3</version>
		</dependency>

这个生成的SpringBoot工程,我们可以直接使用,也可以只把这个依赖加入到我们自己已有的工程,我这边已经有了一个工程了,所以只需要把上面的依赖添加到我自己的项目即可

2. 添加数据库连接池 druid

从github官网可以得知,SpringBoot2.x 与 druid 的集成方式

参考:https://github.com/alibaba/druid/wiki/%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98

参考:https://github.com/alibaba/druid/tree/master/druid-spring-boot-starter

不过这里我试了,即使使用最新的版本 1.2.21,启动依然会报错

但是看到官网上面了一个druid-spring-boot-3-starter 包,目前还没有写描述,但是我们可以替换一下artifactId,启动之后没有再报错了

		<dependency>
			<groupId>com.alibaba</groupId>
			<artifactId>druid-spring-boot-3-starter</artifactId>
			<version>1.2.20</version>
		</dependency>

另外Druid 引入需要添加配置到application.yml,下面的配置你可以安装你的项目改造数据库的连接参数,配置详情参考:https://github.com/alibaba/druid/tree/master/druid-spring-boot-starter

spring:
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    driverClassName: com.mysql.jdbc.Driver
    druid:
      url: jdbc:mysql://192.168.31.111:3306/goods_center_db?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8
      username: root
      password: 123456
      initial-size: 10
      max-active: 100
      min-idle: 10
      max-wait: 60000
      pool-prepared-statements: true
      max-pool-prepared-statement-per-connection-size: 20
      time-between-eviction-runs-millis: 60000
      min-evictable-idle-time-millis: 300000
      #validation-query: SELECT 1 FROM DUAL
      test-while-idle: true
      test-on-borrow: false
      test-on-return: false
      stat-view-servlet:
        enabled: true
        url-pattern: /druid/*
        #login-username: admin
        #login-password: admin
      filter:
        stat:
          log-slow-sql: true
          slow-sql-millis: 1000
          merge-sql: false
        wall:
          config:
            multi-statement-allow: true

3. 引入mysql-connector-java驱动包

可以在maven官方网站中搜索MySQL,可以找到两个Java-MySQL驱动包,这两个我都试过了,都能正常的连接MySQL,所以随便用那个都行,我看了看下面这个用的人多7418个使用

<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.28</version>
</dependency>

注意:这里有个要注意的地方,我安装的MySQL版本是5.7.44 ,我以为驱动应该也要找5.xx.xx的版本,实际上我试了一下,5.1.xx版本会报错,换成8.0.xx就可以了,具体原因尚不知晓,谁知道的可以在评论区告诉我一下,万分感谢!!!

三、配置Mybatis

架包依赖完成了,还需要对Mybatis进行配置才能使用

配置详情:mybatis-spring-boot-autoconfigure – Introduction

这里我用的配置,指定文件mapper的位置

mybatis:
  mapper-locations: classpath:mapper/**/*Mapper.xml

在Mybatis官网的入门案例中有一个mapper.xml 样例

参考地址:https://mybatis.net.cn/getting-started.html

安装官方的样例,写出了我的第一个GoodInfoMapper.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.ychen.goodscenter.mapper.GoodsInfoMapper">

    <select id="queryGoodsInfoById"  resultType="com.ychen.goodscenter.entity.GoodsInfoEntity">
        select * from goods_info_tab where id = #{id}
    </select>
</mapper>

在创建一个mapper.java 文件GoodsInfoMapper.java

package com.ychen.goodscenter.mapper;

import com.ychen.goodscenter.entity.GoodsInfoEntity;
import org.apache.ibatis.annotations.Mapper;

@Mapper
public interface GoodsInfoMapper {
    GoodsInfoEntity queryGoodsInfoById(Long id);
}
GoodsInfoEntity
package com.ychen.goodscenter.entity;

import lombok.Data;

import java.math.BigDecimal;
import java.util.Date;

@Data
public class GoodsInfoEntity {
    private Long id;
    private String goodsName;
    private Long sellerId;
    private Integer stock;
    private Integer sold;
    private BigDecimal price;
    private Date createTime;
    private Date updateTime;
}

四、准备数据库

CREATE TABLE goods_info_tab (
    `id`  BIGINT(20) NOT NULL,
    `goods_name` VARCHAR(30) NOT NULL COMMENT '商品名称',
    `seller_id`  BIGINT(20) NOT NULL COMMENT '卖家ID',
    `stock` int(11) NOT NULL COMMENT '库存',
    `sold` int(11) NOT NULL COMMENT '已售数量',
    `price` DECIMAL(20,5) NOT NULL COMMENT '单价',
    `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    `update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT '商品表';

准备好数据库,就可以测试了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1399057.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

一款满足基层医疗机构各类业务需要的:健康云HIS系统源码,功能包括病患问诊、电子病历、开药发药、住院管理、护理文书、病案管理等功能。

一款满足基层医疗机构各类业务需要的健康云HIS系统。该系统能帮助基层医疗机构完成日常各类业务&#xff0c;提供病患挂号支持、病患问诊、电子病历、开药发药、会员管理、护理文书、病案管理、统计查询、医生站和护士站等一系列常规功能&#xff0c;能与公卫、PACS等各类外部系…

C++-类和对象(3)

1. 再谈构造函数 1.1 构造函数体赋值 我们在创建一个对象时&#xff0c;编译器会调用该对象的构造函数对该对象的成员进行初始化。 class Date { public:Date(int year, int month, int day){_year year;_month month;_day day;} private:int _year;int _month;int _day…

通过代理如何调通openai的api

调通openai的api 一、前提二、通过curl调通openai的api三、通过python调通openai的api 一、前提 会魔法上网本地运行代理软件&#xff0c;知道端口号&#xff08;如1081&#xff09;。 127.0.0.1:1081二、通过curl调通openai的api 如果在国外&#xff0c;没有qiang&#xff…

AWS 专题学习 P7 (FSx、SQS、SNS)

文章目录 Amazon FSx – 概述Amazon FSx for LustreFSx Lustre - 文件系统部署选项 Amazon FSx for NetApp ONTAPAmazon FSx for OpenZFSHybrid Cloud 存储AWS 存储云原生选项AWS 存储网关Amazon S3 File GatewayAmazon FSx File GatewayVolume GatewayTape GatewayStorage Gat…

设计一个Key-Value缓存去存储最近的Web Server查询的结果

1: 定义Use Case和约束 Use Cases 我们可以定义如下 Scope: User 发送一个 search request, 缓存命中成功返回DataUser 发送一个 search request, 缓存未命中&#xff0c;未成功返回DataService 有高可用 约束和假设 状态假设 Traffic 分布不是均匀的 热度高的查询总是被…

HarmonyOS鸿蒙学习基础篇 - 什么是HarmonyOS

概述 HarmonyOS是华为开发的一款面向未来的全场景分布式智慧操作系统&#xff0c;将逐步覆盖18N全场景终端设备&#xff1b; 对消费者而言 HarmonyOS用一个‘统一的软件系统’ 从根本上解决消费者面对大量智能终端体验割裂的问题&#xff0c;为消费者带来同意便利安全的智慧化全…

使用 Python 创造你自己的计算机游戏(游戏编程快速上手)第四版:第十五章到第十八章

十五、反转棋游戏 原文&#xff1a;inventwithpython.com/invent4thed/chapter15.html 译者&#xff1a;飞龙 协议&#xff1a;CC BY-NC-SA 4.0 在本章中&#xff0c;我们将制作反转棋&#xff0c;也称为黑白棋或奥赛罗。这个双人棋盘游戏是在网格上进行的&#xff0c;因此我们…

【Qt5】QString的成员函数trimmed

2024年1月19日&#xff0c;周五下午 QString 的 trimmed 方法是用于移除字符串两端的空白字符&#xff08;空格、制表符、换行符等&#xff09;的方法。它返回一个新的字符串&#xff0c;该字符串是原始字符串去除两端空白后的结果。 下面是一个简单的示例&#xff1a; #incl…

【Linux 内核源码分析】堆内存管理

堆 堆是一种动态分配内存的数据结构&#xff0c;用于存储和管理动态分配的对象。它是一块连续的内存空间&#xff0c;用于存储程序运行时动态申请的内存。 堆可以被看作是一个由各个内存块组成的堆栈&#xff0c;其中每个内存块都有一个地址指针&#xff0c;指向下一个内存块…

实体类(VO,DO,DTO)的划分

实体类&#xff08;VO&#xff0c;DO&#xff0c;DTO&#xff09;的划分 什么是“实体类” 实体类的主要职责是存储和管理系统内部的信息&#xff0c;它也可以有行为&#xff0c;甚至很复杂的行为&#xff0c;但这些行为必须与它所代表的实体对象密切相关。实体类有两方面内容…

51单片机8*8点阵屏

8*8点阵屏 8*8点阵屏是一种LED显示屏&#xff0c;它由8行和8列的LED灯组成。每个LED灯的开闭状态都可以独立控制&#xff0c;从而可以显示出数字、字母、符号、图形等信息。 8*8点阵屏的原理是通过行列扫描的方式&#xff0c;控制LED灯的亮灭&#xff0c;从而显示出所需的图案或…

使用MySQL建立外键约束时,报错3780的问题分析,和解决办法

今天在用语句给两个表建立外键约束时&#xff0c;报了3780的错误–具体描述如下&#xff1a; 大概意思就是或说&#xff0c;主表和从表的create_use 和 user_id 两个字段这不兼容 经过一顿分析之后发现&#xff0c;是因为这两个表的这两列数据类型不一样 解决办法–修改表中…

毫米波雷达4D点云生成(基于实测数据)

本期文章分享TI毫米波雷达实测4D点云生成的代码&#xff0c;包含距离、速度、水平角度、俯仰角度&#xff0c;可用于日常学习。 处理流程包含&#xff1a;数据读取和解析、MTI、距离估计、速度估计、非相干累积、2D-CFAR、水平角估计、俯仰角估计、点云生成、坐标转换等内容。…

【大数据Hive】hive 行列转换使用详解

目录 一、前言 二、使用场景介绍 2.1 使用场景1 2.2 使用场景2 三、多行转多列 3.1 case when 函数 语法一 语法二 操作演示 3.2 多行转多列操作演示 四、多行转单列 4.1 concat函数 语法 4.2 concat_ws函数 语法 4.3 collect_list函数 语法 4.4 collect_set函…

数据结构之二叉树的性质与存储结构

数据结构之二叉树的性质与存储结构 1、二叉树的性质2、二叉树的存储结构 数据结构是程序设计的重要基础&#xff0c;它所讨论的内容和技术对从事软件项目的开发有重要作用。学习数据结构要达到的目标是学会从问题出发&#xff0c;分析和研究计算机加工的数据的特性&#xff0c;…

谁说知识库都是英文的 今天就来一个中文版的

1.安装 1.1创建目录 mkdir -p /opt/trilium-cn cd /opt/trilium-cn 1.2.编写docker-compose.yml文件 version: 3 services:trilium-cn:image: nriver/trilium-cnrestart: alwaysports:- "10012:8080"volumes:# 把同文件夹下的 trilium-data 目录映射到容器内- /opt…

5 python快速上手

数据类型&#xff08;上&#xff09; 1.整型1.1 定义1.2 独有功能1.3 公共功能1.4 转换1.5 其他1.5.1 长整型1.5.2 地板除 2. 布尔类型2.1 定义2.2 独有功能2.3 公共功能2.4 转换2.5 其他2.5.1 做条件自动转换 3.字符串类型3.1 定义3.2 独有功能&#xff08;18/48&#xff09;练…

SpringBoot教程(十五) | SpringBoot集成RabbitMq

SpringBoot教程(十五) | SpringBoot集成RabbitMq RabbitMq是我们在开发过程中经常会使用的一种消息队列。今天我们来研究研究rabbitMq的使用。 rabbitMq的官网&#xff1a; rabbitmq.com/ rabbitMq的安装这里先略过&#xff0c;因为我尝试了几次都失败了&#xff0c;后面等我…

【数据结构】详谈队列的顺序存储及C语言实现

循环队列及其基本操作的C语言实现 前言一、队列的顺序存储1.1 队尾指针与队头指针1.2 基本操作实现的底层逻辑1.2.1 队列的创建与销毁1.2.2 队列的增加与删除1.2.3 队列的判空与判满1.2.4 逻辑的局限性 二、循环队列2.1 循环队列的实现逻辑一2.2 循环队列的实现逻辑二2.3 循环队…

西瓜书读书笔记整理(十二) —— 第十二章 计算学习理论

第十二章 计算学习理论&#xff08;上&#xff09; 12.1 基础知识12.1.1 什么是计算学习理论&#xff08;computational learning theory&#xff09;12.1.2 什么是独立同分布&#xff08;independent and identically distributed, 简称 i . i . d . i.i.d. i.i.d.&#xff0…