Springboot+Mybatis入门案例

一、项目结构

1.导入依赖

<?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>org.example</groupId><artifactId>testcsdn</artifactId><version>1.0-SNAPSHOT</version><properties><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.2.10.RELEASE</version></parent><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency><!--web网页,如果只在test测试类中测试,则可去掉--><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><!--简化代码的工具包,针对实体类--><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><!--mybatis‐plus的springboot支持-->
<!--        <dependency>-->
<!--            <groupId>com.baomidou</groupId>-->
<!--            <artifactId>mybatis-plus-boot-starter</artifactId>-->
<!--            <version>3.1.0</version>-->
<!--        </dependency>--><!--mybatis的springboot支持--><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.2.2</version></dependency><!--mysql驱动--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.30</version></dependency></dependencies></project>

 2.Controller层

package org.example.controller;import org.example.service.StudentService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;@RestController //@RestController = @Controller + @ResponseBody 此处目的是返回json数据
@RequestMapping("/test")
public class StudentController {@Autowiredprivate StudentService studentService;@RequestMapping("/show")public String test01(){return studentService.findStudent();}}

 3.mapper层

package org.example.mapper;import org.example.pojo.Student;public interface StudentMapper {Student findStudent();
}

4.pojo实体类

springboot+mybatis实体类不需要加@Table等注解,只要有@Data注解即可(包含getter/setter方法)

package org.example.pojo;import lombok.Data;@Data
public class Student {private Integer id;private String name;private Integer age;}

 5.service层

接口

package org.example.service;public interface StudentService {String findStudent();
}

实现类

package org.example.service;import org.example.mapper.StudentMapper;
import org.example.pojo.Student;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;@Service
public class StudentServiceImp implements StudentService{@Autowiredprivate StudentMapper studentMapper;@Overridepublic String findStudent() {Student student = studentMapper.findStudent();return student.toString();}
}

6.启动类

package org.example;import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication
@MapperScan("org.example.mapper")
public class Application {public static void main(String[] args) {SpringApplication.run(Application.class, args);}
}

 7.StudentMapper.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="org.example.mapper.StudentMapper"><select id="findStudent" resultType="org.example.pojo.Student">select * from student where  id = 1</select>
</mapper>

8.application.yml

server:port: 8080 #服务端口号,可修改
spring:datasource:driver-class-name: com.mysql.cj.jdbc.Driver #mysql5版本把.cj去掉,此处为mysql8.0url: jdbc:mysql://localhost:3306/test #test改成自己的数据库名username: rootpassword: "123456"mybatis:mapper-locations: classpath:mybatis/*.xml#目的是为了省略resultType里的代码量,可不加
#  type-aliases-package: com.example.pojo
#  configuration:
#    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

9.测试类

package org.example.test;import org.example.service.StudentService;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;@SpringBootTest
@RunWith(SpringRunner.class)
public class StudentTest {@Autowiredprivate StudentService studentService;@Testpublic void test(){String student = studentService.findStudent();System.out.println(student);}}

二、Sql

/*Navicat Premium Data TransferSource Server         : localhostSource Server Type    : MySQLSource Server Version : 80033 (8.0.33)Source Host           : localhost:3306Source Schema         : testTarget Server Type    : MySQLTarget Server Version : 80033 (8.0.33)File Encoding         : 65001Date: 19/12/2023 10:14:04
*/SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;-- ----------------------------
-- Table structure for student
-- ----------------------------
DROP TABLE IF EXISTS `student`;
CREATE TABLE `student`  (`id` int NOT NULL AUTO_INCREMENT,`name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,`age` int NULL DEFAULT NULL,PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 6 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;-- ----------------------------
-- Records of student
-- ----------------------------
INSERT INTO `student` VALUES (1, '李华', 19);
INSERT INTO `student` VALUES (2, '张飞', 20);
INSERT INTO `student` VALUES (3, '丑陋', 22);
INSERT INTO `student` VALUES (4, '孙尚香', 18);
INSERT INTO `student` VALUES (5, '狄仁杰', 12);SET FOREIGN_KEY_CHECKS = 1;

测试

右键启动类启动服务

在网页打开网址

http://localhost:8080/test/show

显示下图,即运行成功!

到这里你的springboot+mybatis项目就算是入门了,如果伙伴们有什么问题的话,评论留言,大家一起学习,一起进步!

环境:IDEA开发工具、数据库Mysql8.0、Springboot+Mybatis项目 

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Jmeter自动判定运行结果(断言)

大家知道在jmeter中如果要查看运行结果可以通过添加监听器里面的查看结果树进行验证&#xff0c;但是这种方式查看结果依然是通过人眼进行比对的&#xff0c;为了能够解放双眼&#xff0c;可以通过jmeter自带的断言功能进行结果的自动判定&#xff0c;这样也算是进行一个简单的…

STM32 CAN多节点组网项目实操 挖坑与填坑记录2

系列文章&#xff0c;持续探索CAN多节点通讯&#xff0c; 上一篇文章链接&#xff1a; STM32 CAN多节点组网项目实操 挖坑与填坑记录-CSDN博客文章浏览阅读120次。CAN线性组网项目开发过程中遇到的数据丢包问题&#xff0c;并尝试解决的记录和推测分析。开发了一个多节点线性…

Kubernetes 简介

1 Kubernetes简介 一个容器管理应用&#xff0c;提高容器化服务的部署和管理效率&#xff1b; 2 容器部署 2.1 传统部署形式 应用共用服务器环境&#xff0c;对于底层资源&#xff08;文件目录&#xff0c;JDK&#xff0c;网络带宽等&#xff09;存在弹性争夺、冲突等问题&a…

Spring Cloud + Vue前后端分离-第6章 通用代码生成器开发

Spring Cloud Vue前后端分离-第6章 通用代码生成器开发 6-1 代码生成器原理介绍 1.增加generator模块&#xff0c;用于代码生成 2.集成freemarker 通用代码生成器开发 FreeMarker 是一款模版引擎&#xff0c;通过模板生成文件&#xff0c;包括html页面&#xff0c;excel …

解决虚拟机报错:当前硬件版本不支持设备“nvme”。

报错内容如下图所示&#xff1a; 当前硬件版本不支持设备“nvme”。 未能启动虚拟机。 我们首先在帮助里面查看VMware的版本 我这里是16 打开报错的虚拟机文件夹&#xff0c;找到镜像文件&#xff08;.vmx文件&#xff09; 使用记事本&#xff08;文本编辑器&#xff09;打开…

Java——关于实现多线程的测试小题,帮助我们更好的理解多线程的使用方法

前面讲解了关于多线程的使用方法&#xff0c;这篇文章则是进行实战&#xff0c;做几道测试题。 感兴趣的情况下可以看一下Java多线程 多线程练习1 (卖电影票) 一共有1000张电影票,可以在两个窗口领取,假设每次领取的时间为3000毫秒要求:请用多线程模拟卖票过程并打印剩余电影…

你应该知道的C语言Cache命中率提升法

C语言因其对内存的精细控制和高执行效率而在业界长盛不衰。但是&#xff0c;同样的语言不同的用法导致写出的代码执行效率可能会有很大差异&#xff08;数量级上的差异&#xff09;。 今天码哥给大家演示一种因cache命中率导致的效率差异示例。场景非常简单&#xff0c;就是单…

数据分析基础之《numpy(4)—ndarry运算》

一、逻辑运算 当我们要操作符合某一条件的数据时&#xff0c;需要用到逻辑运算 1、运算符 满足条件返回true&#xff0c;不满足条件返回false # 重新生成8只股票10个交易日的涨跌幅数据 stock_change np.random.normal(loc0, scale1, size(8, 10))# 获取前5行前5列的数据 s…

大模型评估中Pass@k值是如何计算的

在前面的博客中分别介绍了大模型评估过程不同指标的含义&#xff0c;以及如何通过代码&#xff0c;实现指标的收集。如果对如何运行代码生成结果和收集passk指标不清楚&#xff0c;可以参考这两篇博客。 如何对大模型进行评估上 如何对大模型进行评估下 Passk的来源 代码的生…

Elasticsearch 向量相似搜索

Elasticsearch 向量相似搜索的原理涉及使用密集向量(dense vector)来表示文档,并通过余弦相似性度量来计算文档之间的相似性。以下是 Elasticsearch 向量相似搜索的基本原理: 向量表示文档: 文档的文本内容经过嵌入模型(如BERT、Word2Vec等)处理,得到一个密集向量(den…

【Spring】12 EmbeddedValueResolverAware 接口

文章目录 1. 简介2. 作用3. 使用3.1 创建并实现接口3.2 配置 Bean3.3 创建启动类3.4 启动 4. 应用场景总结 Spring 框架提供了许多回调接口&#xff0c;以便开发者在 Bean 的生命周期中执行一些特定操作。其中之一是 EmbeddedValueResolverAware 接口&#xff0c;本文将深入探…

单片机LCD1602

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、LCD1602是什么&#xff1f;二、LCD1602 原理三、显示一个字符四、如何显示四位数五、参考历程六、封装成一个显示 字符和一个显示任意四位数的函数总结 前言…