Spring Boot + MyBatis

一、配置依赖

<!-- MyBatis -->
<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>3.5.3</version>
</dependency>
<!-- junit测试依赖 -->
<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <scope>test</scope>
</dependency>
<!-- lombok依赖 为了简化实体类的编写代码量 -->
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
</dependency>

不知道为什么,maven配置的远程仓库(阿里云)一直找不到org.mybatis.spring.boot: mybatis-spring-boot-starter,报如下错误:

Cannot resolve org.mybatis.spring.boot:mybatis-spring-boot-starter:unknown

最终的解决方案是使用MyBatis-plus来替代MyBatis,所以最终使用的是如下依赖信息:

<!-- MyBatis Plus-->
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.4.1</version>
</dependency>
<!-- junit测试依赖 -->
<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <scope>test</scope>
</dependency>
<!-- lombok依赖 为了简化实体类的编写代码量 -->
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
</dependency>

二、配置文件信息

        如果是SpringBoot,在resources目录下创建application.yml文件,这个文件中存放mybaits的相关配置信息。

# 配置数据库的连接字符串
spring:
  datasource:
    url: jdbc:mysql://127.0.0.1:3306/你的数据库?characterEncoding=utf8
    username: 你的数据库用户名
    password: 你的数据库密码
    driver-class-name: com.mysql.cj.jdbc.Driver
    
# 设置 Mybatis 的 xml 保存路径
mybatis:
  mapper-locations: classpath:mapper/*Mapper.xml #实现mapper.java接口和mapper.xml的绑定
  type-aliases-package: com.xj.dao.model #解释参考里有说明
  configuration: # 配置打印 MyBatis 执行的 SQL
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #需要lombok框架支持,可以添加
    
# 配置打印 MyBatis 执行的 SQL
logging:
  level:
    com:
      example:
        demo: debug

三、项目举例

1.创建一个Spring Boot项目

参考:Spring Boot之创建一个Spring Boot项目(一)_<plugin> <groupid>org.springframework.boot</groupi-CSDN博客

2.项目架构

3.代码实现

pom.xml:

<?xml version="1.0" encoding="UTF-8"?>

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.xj</groupId>
  <artifactId>SpringBootStudyProject</artifactId>
  <version>1.0-SNAPSHOT</version>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.4.5</version>
        <relativePath/>
    </parent>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

        <!--导入JDBC的场景启动器-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jdbc</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
            <optional>true</optional>
        </dependency>

        <!--jquery引入-->
        <dependency>
            <groupId>org.webjars</groupId>
            <artifactId>jquery</artifactId>
            <version>3.6.0</version>
        </dependency>

        <!--Thymeleaf 启动器-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>

        <!--导入数据库驱动-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>

        <!-- MyBatis Plus-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.4.1</version>
        </dependency>
        <!-- junit测试依赖 -->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <scope>test</scope>
        </dependency>
        <!-- lombok依赖 为了简化实体类的编写代码量 -->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>
    </dependencies>

    <!--build标签描述了如何来编译及打包项目,而具体的编译和打包工作是通过build中配置的 plugin 来完成-->
    <build>
        <plugins>
            <!--使用SpringBoot的打包插件-->
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>

application.yml:

#默认配置
server:
    port: 8080

spring:
    datasource: #数据源连接信息
        username: root
        password: 12345
        url: jdbc:mysql://127.0.0.1:3306/demo?useUnicode=true&characterEncoding=UTF-8
        driver-class-name: com.mysql.cj.jdbc.Driver
    profiles:
        active: dev #切换配置,指定使用哪个profile

# 设置 Mybatis 的 xml 保存路径
mybatis-plus:
    mapper-locations: classpath:mapper/*Mapper.xml
    type-aliases-package: com.xj.dao.model
    configuration: # 配置打印 MyBatis 执行的 SQL
        log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #需要lombok框架支持,可以添加

# 配置打印 MyBatis 执行的 SQL
logging:
    level:
        com:
            example:
                demo: debug


---
#开发环境
server:
    port: 8081

spring:
    config:
        activate:
            on-profile: dev
---
#测试环境
server:
    port: 8082

spring:
    config:
        activate:
            on-profile: test
---
#生产环境
server:
    port: 8083

spring:
    config:
        activate:
            on-profile: prod

logging:
    config: classpath:logback-spring.xml #指定使用哪个日志配置文件

Student.java:

package com.xj.dao.model;

import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;
import org.springframework.data.relational.core.mapping.Column;
import java.io.Serializable;

/**
 * @Author: xjfu
 * @Create: 2024/03/25 16:20
 * @Description:
 */
@Data
public class Student implements Serializable {
    private static final long serialVersionUID = 1L;

    @TableId(value = "name")
    private String name;

    @Column(value = "age")
    private Integer age;
}

StudentMapper.java:

package com.xj.dao.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.xj.dao.model.Student;
import org.springframework.stereotype.Repository;
import java.util.List;

/**
 * @Author: xjfu
 * @Create: 2024/03/25 16:26
 * @Description:
 */
@Repository
public interface StudentMapper extends BaseMapper<Student> {

    public List<Student> selectAll();
}

StudentMapper.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.xj.dao.mapper.StudentMapper">

    <resultMap id="BaseResultMap" type="com.xj.dao.model.Student">
        <result column="name" property="name" />
        <result column="age" property="age" />
    </resultMap>

    <select id="selectAll" resultType="com.xj.dao.model.Student">
        SELECT *
        FROM student;
    </select>

</mapper>

MainApplication.java:

package com.xj.main;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ComponentScan;

/**
 * @Author : xjfu
 * @Date : 2022/6/8 8:38
 * @Description :Spring Boot 启动类
 */
@ComponentScan("com.xj")
@SpringBootApplication
@MapperScan("com.xj.dao.mapper")
public class MainApplication {
    public static void main(String[] args) {
        try{
            SpringApplication.run(MainApplication.class, args);
        }catch (Exception e){
            e.printStackTrace();
        }
    }
}

MyBatisTest:

package com.xj.main;

import com.xj.dao.mapper.StudentMapper;
import com.xj.dao.model.Student;
import org.junit.jupiter.api.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import java.sql.SQLException;
import java.util.List;

/**
 * @Author : xjfu
 * @Date : 2024/3/35 16:34
 * @Description : MyBatis 测试类
 */
@SpringBootTest(classes = MainApplication.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
public class MyBatisTest {

    private static final Logger log = LoggerFactory.getLogger(MyBatisTest.class);

    @Autowired
    StudentMapper studentMapper;

    @Test
    void testJdbc() throws SQLException{

        List<Student> students = studentMapper.selectAll();

        for (Student s : students){
            System.out.println(s.toString());
        }
    }
}

数据库:

CREATE TABLE `student` (
  `name` varchar(255) DEFAULT NULL,
  `age` int DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

4.运行结果

四、参考

1.在 SpringBoot 中 初步使用 MyBatis_springboot mybatis-CSDN博客

2.SpringBoot结合MyBatis 【超详细】_springboot mybatis-CSDN博客

3.Cannot resolve org.mybatis.spring.bootmybatis-spring-boot-_cannot resolve org.mybatis.spring.boot:mybatis-spr-CSDN博客

4.SpringBoot:CONDITIONS EVALUATION REPORT-CSDN博客 

5.@MapperScan注解使用-CSDN博客

6.mybatis的mapper-locations配置_mapperlocations属性怎么配置-CSDN博客

7.type-aliases-package的用法-CSDN博客

8.什么是MyBatis-CSDN博客

9.mybatis – MyBatis 3 | XML 映射器

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Unity连接MySQL踩坑,问题处理记录

用的unity2021版本&#xff0c;MySQL是官方下载的最新版8.0.36. 安装MySQL时&#xff0c;过去如果安装过&#xff0c;一定要删干净&#xff0c;单纯的卸载不行&#xff0c;网上有很多教程。 MySQL安装完成后&#xff0c;将安装目录的MySql.Data.dll文件放入unity项目的Plugin…

隐语技术架构

隐语架构 产品定位 算法层 计算层 密码原语 互联互通–资源层 总结

ElasticSearch8 - 基本操作

前言 本文记录 ES 的一些基本操作&#xff0c;就是对官方文档的一些整理&#xff0c;按自己的习惯重新排版&#xff0c;凑合着看。官方的更详细&#xff0c;建议看官方的。 下文以 books 为索引名举例。 新增 添加单个文档 (没有索引会自动创建) POST books/_doc {"n…

Saltstack 最大打开文件数问题之奇怪的 8192

哈喽大家好&#xff0c;我是咸鱼。 今天分享一个在压测过程中遇到的问题&#xff0c;当时排查这个问题费了我们好大的劲&#xff0c;所以我觉得有必要写一篇文章来记录一下。 问题出现 周末在进行压测的时候&#xff0c;测试和开发的同事反映压测有问题&#xff0c;请求打到…

Acwing528. 奶酪(并查集)

题目 现有一块大奶酪&#xff0c;它的高度为 h&#xff0c;它的长度和宽度我们可以认为是无限大的&#xff0c;奶酪中间有许多半径相同的球形空洞。 我们可以在这块奶酪中建立空间坐标系&#xff0c;在坐标系中&#xff0c;奶酪的下表面为 z0&#xff0c;奶酪的上表面为 zh 。…

成为创作者的第 730 天——创作纪念日

​​ 文章目录 &#x1f4e8; 官方致信&#x1f3af;我的第一篇文章&#x1f9e9; 机缘与成长 &#x1f3af; 成就&#x1f3af; 目标 &#x1f4e8; 官方致信 今天早上打开 CSDN 私信一看&#xff0c;看到了这一条消息&#xff0c;然后看了下日期。突然感慨到&#xff0c;是…

C语言笔记:预处理命令与结构体

ACM金牌带你零基础直达C语言精通-课程资料 本笔记属于船说系列课程之一&#xff0c;课程链接&#xff1a;ACM金牌带你零基础直达C语言精通https://www.bilibili.com/cheese/play/ep159068?csourceprivate_space_class_null&spm_id_from333.999.0.0 你也可以选择购买『船说…

字符驱动程序-LCD驱动开发

一、驱动程序的框架 总共分为五步&#xff1a; 1、自己设定或者系统分配一个主设备号 2、创建一个file_operations结构体 这个结构体中有操作硬件的函数&#xff0c;比如drv_open、drv_read 3、写一个注册设备驱动函数 需要register_chrdev(major,name,结构体)&#xff0…

文件一键加水印的软件叫什么

答&#xff1a;文件一键加水印的软件叫“域智盾软件”。 域智盾作为一款专为企业内网信息安全保驾护航的领先软件&#xff0c;以其卓越的文件加密技术和自动添加水印功能为核心亮点&#xff0c;为企业提供了强大的数据安全保障和严谨的内部信息追踪机制。 【文件加密功能】 高…

C语言数据结构易错知识点(4)(二叉树、分治思想)

1.二叉树的特点&#xff1a;和顺序表、链表有所差异的是&#xff0c;二叉树并不主要用于存储数据&#xff0c;它多用于数据的筛选、处理等操作。二叉树内核是分治思想&#xff0c;对递归运用的要求很高&#xff0c;这在二叉树的各种接口的实现上我们都能有所体会。 2.最小子问…

Linux系统 安装docker

安装&#xff1a; 1、Docker要求CentOS系统的内核版本高于 3.10 &#xff0c;通过 uname -r 命令查看你当前的内核版本是否支持安账docker 2、更新yum包&#xff1a; sudo yum -y update 3、安装需要的软件包&#xff0c;yum-util 提供yum-config-manager功能&#xff0c;另外…

Excel双击单元格后弹窗输入日期

Step1. 在VBE界面新建一个窗体(Userform1),在窗体的工具箱的空白处右键,选中添加附件,勾选Calendar control 8.0,即可完成日历的添加。 PS:遗憾的是, Office 64 位没有官方的日期选择器控件。唯一的解决方案是使用Excel 的第三方日历。 参考链接:How to insert calen…

多图回顾|MoonBit 首场线下 MeetUp 回顾

3 月 23 日&#xff0c;MoonBit 首场线下 MeetUp 活动在深圳顺利举办。 在首场 MoonBit 线下 MeetUp 活动中&#xff0c;五位行业内的知名专家带来了四个以探索国产基础软件新发展为主题的精彩内容分享&#xff01; 一起来看看嘉宾们带来了哪些行业内的最新思考吧&#xff01; …

推荐一种Bean注入方式——开发经验

我们都知道三种Bean注入的方式分别是属性注入&#xff0c;setter方法注入&#xff0c;构造器注入。这三种Bean注入的方式各有优缺点&#xff0c;但是相对来说更推荐使用构造器注入的方式。 1、构造器注入的优缺点 优点&#xff1a; 1、可以注入不可变对象 因为构造方法注入是…

【MATLAB源码-第168期】基于matlab的布谷鸟优化算法(COA)机器人栅格路径规划,输出做短路径图和适应度曲线。

操作环境&#xff1a; MATLAB 2022a 1、算法描述 布谷鸟优化算法&#xff08;Cuckoo Optimization Algorithm, COA&#xff09;是一种启发式搜索算法&#xff0c;其设计灵感源自于布谷鸟的独特生活习性&#xff0c;尤其是它们的寄生繁殖行为。该算法通过模拟布谷鸟在自然界中…

Unity类银河恶魔城学习记录11-3 p105 Inventory UI源代码

Alex教程每一P的教程原代码加上我自己的理解初步理解写的注释&#xff0c;可供学习Alex教程的人参考 此代码仅为较上一P有所改变的代码 【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili UI_itemSlot.cs using System.Collections; using System.Collections.Gen…

马上入局:2024年阿里云服务器优惠价格,刷新你的认知!

2024年阿里云服务器优惠价格表&#xff0c;一张表整理阿里云服务器最新报价&#xff0c;阿里云服务器网整理云服务器ECS和轻量应用服务器详细CPU内存、公网带宽和系统盘详细配置报价单&#xff0c;大家也可以直接移步到阿里云CLUB中心查看 aliyun.club 当前最新的云服务器优惠券…

【第二部分--Python之基础】

一、初识 开发语言&#xff1a; 高级语言&#xff1a;Python Java PHP C# Go Ruby C ... > 字节码 低级语言&#xff1a;C 汇编 > 机器码 …

C++中atan和atan2

atan和atan2 两者都在cmath函数中。 atan std::atan(1. / 1.) * 180 / M_PI // 45 deg std::atan(-1. / -1.) * 180 / M_PI // 45 deg atan2 std::atan2(1., 1.) * 180 / M_PI // 45 std::atan2(-1., -1.) * 180 / M_PI // -135 区别 atan值域[-M_PI / 2., M_PI / 2.] a…

【Windows驱动篇】解决Windows驱动更新导致AMD Software软件无法正常启动问题

【Windows驱动篇】解决Windows驱动更新导致AMD Software软件无法正常启动问题 【操作可能有风险&#xff0c;请提前做好数据备份&#xff0c;设置系统还原点等&#xff0c;防止系统出现问题&#xff01;&#xff01;&#xff01;】 【操作可能有风险&#xff0c;请提前做好数…