SpringBoot 3.1.7 集成Mybatis

发布时间:2024年01月20日

一、介绍

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方式生成?

打开后,我们可以进入到这个页面,点击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 '商品表';

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

文章来源:https://blog.csdn.net/u010887012/article/details/135646148
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。