Springboot 整合 Mybatis

news2024/11/17 0:26:14

创建SpringBoot项目

首先在IDEA中创建一个SpringBoot项目,注意Java Version 然后Packaging为Jar包形式,Type改为Maven形式。
在这里插入图片描述在上图的下一步中可以选择相关依赖,也可以在项目里面的pom文件中自己添加相关依赖,然后进行import也可以。

1 创建maven工程添加依赖

<!--SpringBoot整合Mybatis的启动器-->
		<dependency>
			<groupId>org.mybatis.spring.boot</groupId>
			<artifactId>mybatis-spring-boot-starter</artifactId>
			<version>2.1.4</version>
		</dependency>
		<!--mysql驱动包-->
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<version>5.1.47</version>
		</dependency>
		<!--web模块-->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-devtools</artifactId>
			<scope>runtime</scope>
			<optional>true</optional>
		</dependency>

		<dependency>
			<groupId>org.projectlombok</groupId>
			<artifactId>lombok</artifactId>
			<optional>true</optional>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>

在这里插入图片描述

2 建数据库数据库表

复制这段代码至Navicat中,首先需要创建一个mybatis的数据库,然后在新建查询中粘贴代码,运行全部即可。

CREATE TABLE `account` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) DEFAULT NULL,
  `money` double(10,2) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1005 DEFAULT CHARSET=utf8

在这里插入图片描述

3 创建数据模型

首先需要在项目中创建model实体类的文件夹,然后创建Account的实体类,里面可以添加lombok的插件,但是需要在IDEA插件市场中进行下载,并且添加依赖即可使用。添加如下依赖还可以对字段进行描述。并且生成Swagger-ui文档。

        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
            <version>2.9.2</version>
        </dependency>
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger-ui</artifactId>
            <version>2.9.2</version>
        </dependency>

在这里插入图片描述

这里使用的是lombok依赖,可以生成无参、有参的构造函数,还可以生成ToString 方法等。

在这里插入图片描述

要实现数据永久存储必须实现序列化接口 implements Serializable 通常还有一个序列化ID,这里没有列出。

/**
 * @author caojun
 **/
public class Account implements Serializable {
    private Integer id;
    private String name;
    private double money;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public double getMoney() {
        return money;
    }

    public void setMoney(double money) {
        this.money = money;
    }
}

4 创建接口和mapper配置文件

这是创建的接口,xml映射配置文件就是根据这里来实现的,特别注意接口的名称及接口下面的方法名称,如果没有与映射配置文件对应就会出现错误。
在这里插入图片描述

package com.example.mybatisdemo.mapper;

import com.example.mybatisdemo.model.Account;
import org.apache.ibatis.annotations.Mapper;

@Mapper//创建接口代理对象
public interface AccountMapper {
    Account findById(Integer id);
}

在这里插入图片描述

这里是映射配置文件,注意namespace的接口的路劲,下面的方法就是接口的方法,要注意一一对应。下面是对应的Sql语言编写方式,要注意#{}的用途及好处,防止SQL注入。

<?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.example.mybatisdemo.mapper.AccountMapper">
    <!-- Account findById(Integer id);-->
    <select id="findById" resultType="com.example.mybatisdemo.model.Account">
        select * from account where id=#{id}
    </select>
</mapper>

5 配置application.yml(数据源,Myatis配置)

这里没有进行配置端口,默认是8080,配置了数据库的相关,驱动、用户名、密码、数据库ip、端口、数据库名称。
下面是对mybatis的配置,主要是映射配置文件位置及实体类的别名,开启驼峰格式等。

在这里插入图片描述

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/mybatis
    username: root
    password: 1111
    driver-class-name: com.mysql.jdbc.Driver

# 配置mybatis规则
mybatis:
  #config-location: classpath:mybatis/mybatis-config.xml  #全局配置文件位置
  mapper-locations: classpath:mapper/*.xml  #sql映射文件位置  G:\mybatisdemo\src\main\resources\mapper
  type-aliases-package: com.example.mybatisdemo.model #配置了实体的别名 com/example/mybatisdemo/model
  configuration:
    map-underscore-to-camel-case: true #开启 指将带有下划线的表字段映射为驼峰格式的实体类属性。



6 创建业务层接口和实现类

这里是创建了接口
在这里插入图片描述

package com.example.mybatisdemo.service;

import com.example.mybatisdemo.model.Account;

public interface AccountService {
    Account findByIdService(Integer  id);
}

在这里插入图片描述

@Service
public class AccountServiceImpl implements AccountService {
    @Autowired
    private AccountMapper accountMapper;
    @Override
    public Account findByIdService(Integer id) {
        return accountMapper.findById(id);
    }
}

7 创建控制器controller

在这里插入图片描述

package com.example.mybatisdemo.controller;

import com.example.mybatisdemo.model.Account;
import com.example.mybatisdemo.service.AccountService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/account")
public class AccountController {
    @Autowired
    private AccountService accountService;

    @RequestMapping("/findById")
    public Account findById(Integer id){
        return accountService.findByIdService(id);
    }
}

需要添加数据到mysql中,主键是自增类型的。

8 启动服务测试结果

在这里插入图片描述
如下是访问的地址,因为是get请求,可以直接在浏览器中测试,也可以在postman中进行如下测试。

访问地址: http://localhost:8080/account/findById?id=1

测试结果:
在这里插入图片描述

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

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

相关文章

在外包搞了7年,废了.....

我以自身的经验告诫大家&#xff0c;不要去外包&#xff0c;原因&#xff1a; 无法深入理解项目&#xff1a;由于外包公司通常只负责项目的某一个部分或某一个阶段&#xff0c;软件测试人员无法对整个项目进行深入了解&#xff0c;可能会影响到测试的全面性和准确性。 对测试要…

RB-PEG-NHS;NHS-PEG-Rhodamine罗丹明聚乙二醇琥珀酰亚胺 红色荧光染料罗丹明B功能化聚乙二醇

RB-PEG-NHS,罗丹明-聚乙二醇-活性脂 中文名称&#xff1a;罗丹明-聚乙二醇-活性脂 英文名称&#xff1a;RB-PEG-NHS 性状&#xff1a;固体或者粘稠液体&#xff0c;取决于分子量大小。 溶剂&#xff1a;溶于大部分有机溶剂&#xff0c;溶于水。 分子量&#xff1a;400、60…

【深度学习】RNN、LSTM、GRU

【深度学习】RNN、LSTM、GRU RNNLSTMGRU结语 RNN 和普通神经网络一样&#xff0c;RNN有输入层、输出层和隐含层&#xff0c;不一样的是RNN在不同的时间 t t t会有不同的状态&#xff0c;其中 t − 1 t-1 t−1时刻隐含层的输出会作用到 t t t时刻的隐含层。 RNN因为加入了时间…

强大的图像查看器:EdgeView mac中文

EdgeView mac中文版是mac上一款强大的图像查看软件&#xff0c;可以处理一些最流行的图像文件格式&#xff0c;同时还提供对导航杂志或漫画书的支持。EdgeView能够打开著名的图像文件格式主要包括JPG&#xff0c;GIF&#xff0c;PSD在内的多种格式文件&#xff0c;支持Retina显…

深度解析JavaScript自动化测试工具Cypress的工作运行原理

目录 引言 什么是Cypress&#xff1f; Cypress的工作原理 Cypress运行原理 Cypress和其他自动化测试工具有什么不一样&#xff1f; Cypress的缺点 【自动化测试工程师学习路线】 引言 在当今的软件开发中&#xff0c;自动化测试工具已成为不可或缺的一部分&#xff0c;…

负载均衡式在线OJ

目录 项目介绍所用技术与开发环境所用技术开发环境 项目各种安装升级 gcc安装 jsoncpp安装 cpp-httplib安装boost库安装与测试 ctemplate 项目宏观结构总体文件目录comm : 公共模块compile_run_server&#xff1a;编译和运行compiler.hpp编译runner.hpp 运行compiler_runner.hp…

ChatGPT 速通手册——开源社区的进展

开源社区的进展 在 ChatGPT 以外&#xff0c;谷歌、脸书等互联网巨头&#xff0c;也都发布过千亿级参数的大语言模型&#xff0c;但在交谈问答方面表现相对 ChatGPT 来说都显得一般。根据科学人员推测&#xff0c;很重要的一部分原因是缺失了RLHF(Reinforcement Learning with…

Banana Pi CM4 计算机模组评测(VS 树莓派计算模块 CM4)

如果您正在寻找一款可靠的单板计算机来提升您的下一个项目&#xff0c;但找不到满足您需求的 Raspberry Pi&#xff0c;让我们看看我是否可以提供帮助。在这篇详细的评论中&#xff0c;我将向您介绍 Banana Pi CM4&#xff0c;这是一款适用于各种任务的多功能且功能强大的解决方…

【OpenCV 例程 300篇】257.OpenCV 生成随机矩阵

『youcans 的 OpenCV 例程300篇 - 总目录』 【youcans 的 OpenCV 例程 300篇】257. OpenCV 生成随机矩阵 3.2 OpenCV 创建随机图像 OpenCV 中提供了 cv.randn 和 cv.randu 函数生成随机数矩阵&#xff0c;也可以用于创建随机图像。 函数 cv.randn 生成的矩阵服从正态分布&…

【caddy】 caddy反向代理api服务 聚合go-zero微服务 放过nginx让caddy来快速实现吧

帮助go-zero开发者聚合api 相关视频一、go-zero 微服务整体架构1、微服务的基本架构2、go-zero 微服务的 apiauthrpc.api 文件routes.go 文件 二、本地开发的痛点1、本地多个端口开启的服务2、apifox、postman 三、caddy1、mac下caddy安装2、配置我们自己的caddyfile1&#xff…

SpringBootWeb入门-HTTP协议

一、SpringBootWeb-快速入门 建好springboot工程之后&#xff0c;只留下这几个文件。 这个是springboot的父工程&#xff0c;其实就是继承 二、HTTP协议-概述 •HTTP-概述 三、HTPP协议-请求协议 四、HTTP协议-响应协议 一、状态码大类 状态码分类说明1xx响应中——临时状态码…

buuctf -2

目录 你竟然赶我走 大白 N种方法解决 [ACTF2020 新生赛]Include 1 php://filter的一些学习 [ACTF2020 新生赛]Exec [强网杯 2019]随便注 你竟然赶我走 1.下载文件&#xff0c;得到一张图片 2.放进010分析&#xff0c;在文件尾得到flag 大白 1.根据题目提示&#xff0…

Python安装模块总失败?一次教你学会镜像安装

人生苦短&#xff0c;我用python 安装模块总是不成功&#xff1f; 这次一次性讲清楚~ 还是安装报错指路:点击此处跳转文末名片获取 为什么会出现安装模块失败? 首先我们要知道 其实大部分我们在用的模块, 都是歪果仁开发的, 然而我们在输入 “pip install 模块名” 的时候,…

「 JVM 」常见的垃圾收集器Garbage collector(GC)

「 JVM 」常见的垃圾收集器Garbage collector&#xff08;GC&#xff09; 参考&鸣谢 【JVM系统学习之路】常见垃圾回收器 山间木匠 Java 的七种垃圾收集器 | Linux 中国 Jayashree Huttanagoudar 带你走近Java虚拟机到底有哪些经典的垃圾收集器 码上遇见你 文章目录 「 JV…

2023.04.17 运行开源代码tinyriscv步骤及遇到问题

tinyriscv&#xff1a;https://gitee.com/liangkangnan/tinyriscv/tree/verilator 如有错误之处还请不吝赐教&#xff01; 1、安装gcc工具链 下载gcc工具链(百度云链接&#xff0c;提取码&#xff1a;yaib)&#xff0c;使用下面的命令解压到/opt/riscv32目录下&#xff1a; …

Spring定时任务常用Cron表达式

目录 一、SpringBoot定时任务 定时任务概述 创建定时任务 代码开启定时任务 执行结果 &#xff08;单线程&#xff09; 多线程处理定时任务 执行结果&#xff08;并发&#xff09; 二、Cron详解 Cron表达式是什么 Cron表达式的结构 每个域可出现的字符类型和各字符的…

花生采摘

[NOIP2004 普及组] 花生采摘 题目描述 鲁宾逊先生有一只宠物猴&#xff0c;名叫多多。这天&#xff0c;他们两个正沿着乡间小路散步&#xff0c;突然发现路边的告示牌上贴着一张小小的纸条&#xff1a;“欢迎免费品尝我种的花生&#xff01;――熊字”。 鲁宾逊先生和多多都…

linux 安装神州通用数据库 V7.0

linux 安装神州通用数据库 V7.0 操作系统、数据库1、官方下载链接2、windows客户端下载链接3、官方安装手册4、安装前准备3.1、创建安装用户3.2、以root 用户修改神通数据库安装包的所有者为shentong 用户3.3、以root 用户创建神通数据库主目录并修改所有者为shentong 用户3.4、…

学成在线笔记+踩坑(2)——【内容模块】课程基础查询,swagger+数据库字典+Httpclient+跨域

目录 1.【内容模块】需求分析 2.【内容模块】模块工程的结构 3.【课程查询功能1】通用 3.1 分析数据模型 3.2 mybatis-plus代码生成器 3.3 内容模块聚合api,model,service模块 3.4 接口设计分析 3.5 【基础模块】分页查询模型类 3.6【基础模块】日期配置类 3.7【内容…

Ae 入门系列之九:表达式

与使用关键帧相比&#xff0c;Ae 的表达式 Expression也用于控制属性值。 只不过使用表达式能简化操作&#xff0c;大大提高工作效率&#xff0c;使复杂动画的制作变得更加轻松。 ◆ ◆ ◆ 表达式语法基础 表达式基于标准的 JavaScript 语言。 如果熟悉脚本语言编程&#xff…