【MyBatis】——入门基础知识必会内容

🎼个人主页:【Y小夜】

😎作者简介:一位双非学校的大二学生,编程爱好者,

专注于基础和实战分享,欢迎私信咨询!

🎆入门专栏:🎇【MySQL,Java基础,Rust】

🎈热门专栏:🎊【Python,Javaweb,Vue框架】

感谢您的点赞、关注、评论、收藏、是对我最大的认可和支持!❤️

目录

🎯MyBatis

😎简介

😎使用

🎈创建SpringBoot工程

🎈创建数据库User

🎈创建User实体类

🎈引入MyBatis依赖

🎈配置MyBatis环境

 🎈编写SQL语句

🎈 进行测试

✨代码

✨解析

✨ 结果


官方网站:MyBatis中文网

🎯MyBatis

😎简介

        MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。

😎使用

🎈创建SpringBoot工程

并在SQL中勾选MyBatis 框架和Mysql驱动

🎈创建数据库User

CREATE TABLE USER(id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT COMMENT 'ID',NAME VARCHAR(100) COMMENT '姓名',age TINYINT UNSIGNED COMMENT '年龄',gender TINYINT UNSIGNED COMMENT '性别, 1:男, 2:女',phone VARCHAR(11) COMMENT '手机号'
) COMMENT '用户表';INSERT INTO USER(id, NAME, age, gender, phone) VALUES (NULL,'白眉鹰王',55,'1','18800000000');
INSERT INTO USER(id, NAME, age, gender, phone) VALUES (NULL,'金毛狮王',45,'1','18800000001');
INSERT INTO USER(id, NAME, age, gender, phone) VALUES (NULL,'青翼蝠王',38,'1','18800000002');
INSERT INTO USER(id, NAME, age, gender, phone) VALUES (NULL,'紫衫龙王',42,'2','18800000003');
INSERT INTO USER(id, NAME, age, gender, phone) VALUES (NULL,'光明左使',37,'1','18800000004');
INSERT INTO USER(id, NAME, age, gender, phone) VALUES (NULL,'光明右使',48,'1','18800000005');

🎈创建User实体类

package pojo;public class User {private  Integer id;private  Short age;private  String name;private  Short gender;private  Short phone;public User() {}public User(Integer id, Short age, String name, Short gender, Short phone) {this.id = id;this.age = age;this.name = name;this.gender = gender;this.phone = phone;}public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public Short getAge() {return age;}public void setAge(Short age) {this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}public Short getGender() {return gender;}public void setGender(Short gender) {this.gender = gender;}public Short getPhone() {return phone;}public void setPhone(Short phone) {this.phone = phone;}@Overridepublic String toString() {return "User{" +"id=" + id +", age=" + age +", name='" + name + '\'' +", gender=" + gender +", phone=" + phone +'}';}
}

🎈引入MyBatis依赖

提示:SpringBoot工程创建完成后,会自动引入

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

🎈配置MyBatis环境

在resources中配置

#驱动类名称
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
#数据库连接的url
spring.datasource.url=jdbc:mysql://localhost:3306/aaa
#连接数据库的用户名
spring.datasource.username=root
#连接数据库的密码
spring.datasource.password=2004

 🎈编写SQL语句

package mapper;import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;import java.util.List;@Mapper
public interface User {@Select("select  * from  user")public List<User> list();
}

🎈 进行测试

✨代码
package com.example.demo;import com.example.demo.mapper.UserMapper;
import com.example.demo.pojo.User;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;import java.util.List;@SpringBootTest
class DemoApplicationTests {@Autowiredprivate UserMapper userMapper;@Testpublic  void User(){List<User> list=userMapper.list();list.stream().forEach(user -> System.out.println(user));}}
✨解析

        这段代码是一个使用Spring Boot和JPA进行数据库测试的JUnit测试类示例:

  1. 包声明:

    • package com.example.demo;: 声明了这个类属于 com.example.demo 包。
  2. 导入依赖:

    • 导入了com.example.demo.mapper.UserMapper,这是自定义的Mapper接口,用于数据库操作。
    • 导入了com.example.demo.pojo.User,这是User实体类,代表数据库中的用户表。
    • 导入了Spring Boot的测试注解和类。
  3. @SpringBootTest 注解:

    • @SpringBootTest: 这是一个Spring Boot的测试注解,用于指示Spring Boot的测试框架加载应用程序的上下文。它提供了类级别的配置,表明这是一个集成测试。
  4. 类定义:

    • class DemoApplicationTests: 定义了一个名为 DemoApplicationTests 的测试类。
  5. @Autowired 注解:

    • @Autowired: 这是一个Spring的注解,用于自动装配Spring容器中的Bean。在这里,它用于自动装配UserMapper接口的实现。
  6. 成员变量:

    • private UserMapper userMapper;: 声明了一个 UserMapper 类型的私有成员变量,用于访问数据库。
  7. 测试方法:

    • public void User(): 定义了一个公开的测试方法,没有返回值,方法名以大写字母开头,这是JUnit 4的测试方法命名约定。在JUnit 5中,可以使用@Test注解来标识测试方法。
  8. 数据库查询:

    • List<User> list = userMapper.list();: 调用 UserMapper 的 list 方法来查询数据库中的所有用户。
  9. 输出结果:

    • list.stream().forEach(user -> System.out.println(user));: 使用Java 8的流(Stream)API来遍历用户列表,并打印每个用户的信息。

      使用Spring Data JPA的Repository来查询数据库,并验证查询结果。

✨ 结果

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

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

相关文章

Unity3D 太空大战射击游戏

一、前言 本案例是初级案例&#xff0c;意在帮助想使用unity的初级开发者能较快的入门&#xff0c;体验unity开发的方便性和简易性能。 本次我们将使用团结引擎进行开发&#xff0c;帮助想体验团结引擎的入门开发者进行较快的环境熟悉。 本游戏案例以太空作战为背景&#xff0c…

kubernetes集群部署:关于CRI(一)

上周接到了一项紧急预研任务&#xff1a;kubernetes各项属性采集。目前我手里已经存在二进制部署的一套kubernetes&#xff08;v1.23版本CRI&#xff1a;dockershim&#xff09;集群&#xff1b;为了适配的广泛性&#xff0c;决定使用kuberadm工具部署最新&#xff08;v1.30版本…

16集 用ESP-DL(ESP32)编译Tensorflow lite语音识别工程-《MCU嵌入式AI开发笔记》

16集 用ESP-DL&#xff08;ESP32&#xff09;编译Tensorflow lite语音识别工程-《MCU嵌入式AI开发笔记》 参考文档&#xff1a; ESP-DL 用户指南&#xff1a; https://docs.espressif.com/projects/esp-dl/zh_CN/latest/esp32/index.html 这个ESP-DL 是由乐鑫官方针对乐鑫系列…

SwiftUI @FetchRequest 中 CoreData 托管对象不能正确被刷新的解决

问题现象 在 CoreData 背后加持的 SwiftUI 应用中,我们在视图(View)中往往会采用 @FetchRequest 来查询、排序和过滤我们心仪的托管对象。 不过在上面的示意图中我们发现:虽然 Challenge(挑战)托管对象状态已经变为“失败”,但仍然显示在了最顶部的“正在进行”挑战的 …

概率统计(二)

二维离散型 联合分布律 样本总数为16是因为&#xff0c;两封信分别可以放在4个信箱 边缘分布律 条件分布律 独立性 选填才能用秒杀 联合概率乘积不等于边缘概率的乘积则不独立 二维连续型 区间用一重积分面积用二重积分 离散型随机变量 常见6个分布的期望和方差 离散型随机变…

记录一次mysql死锁问题的分析排查

记录一次死锁问题的分析排查 现象 底层往kafka推送设备上线数据应用层拉取设备上线消息,应用层有多个消费者并发执行将设备上线数据同步数据库表pa_terminal_channel日志报&#xff1a;&#xff08;Cause: com.mysql.cj.jdbc.exceptions.MySQLTransactionRollbackException: …

Linux配置仓库,安装软件

在Linux中安装软件&#xff0c;必须得配置仓库&#xff0c;挂载&#xff0c;才能安装成功 1.选择使用的虚拟机&#xff0c;右键点击“设置” 2.点击“CD/DVD”&#xff0c;勾选“设备状态”中的“已连接”和启动时链接&#xff0c;选择ISO映像文件 3..开启虚拟机 4.配置仓库…

Lumos学习王佩丰Excel第四讲:排序与选择

一、排序 1、简单排序&#xff1a;不要选中一列排序&#xff0c;不然只是局部排序&#xff0c;其他数据都会发生错乱。 2、多条件排序 3、2003版本中超过3个排序条件时如何处理&#xff1a;从最后一个条件到第一个条件倒着按照要求依次排序。 4、按颜色排序 5、自定义排序次序…

妙笔生词智能写歌词软件:开启创作新篇还是形成依赖?

在音乐创作的世界里&#xff0c;科技的发展带来了诸多变革&#xff0c;妙笔生词智能写歌词软件的出现便是其中之一。它的出现引发了热烈的讨论&#xff0c;究竟是为音乐创作开启了全新的篇章&#xff0c;还是让创作者陷入了固有的思维之中&#xff1f; 从积极的方面来看&#…

FPGA设计之跨时钟域(CDC)设计篇(1)----亚稳态到底是什么?

1、什么是亚稳态? 在数字电路中,如果数据传输时不满足触发器FF的建立时间要求Tsu和保持时间要求Th,就可能产生亚稳态(Metastability),此时触发器的输出端(Q端)在有效时钟沿之后比较长的一段时间都会处于不确定的状态(在0和1之间振荡),而不是等于数据输入端(D端)的…

mobx学习笔记

mobx介绍 mobx是一个功能强大&#xff0c;上手容易的状态管理工具。MobX背后的哲学很简单:任何源自应用状态的东西都应该自动地获得。利用getter和setter来收集组件的数据依赖关系&#xff0c;从而在数据发生变化的时候精确知道哪些组件需要重绘。 mobx和redux的区别 mobx更…

【机器学习】独立成分分析(ICA):解锁信号的隐秘面纱

&#x1f308;个人主页: 鑫宝Code &#x1f525;热门专栏: 闲话杂谈&#xff5c; 炫酷HTML | JavaScript基础 ​&#x1f4ab;个人格言: "如无必要&#xff0c;勿增实体" 文章目录 独立成分分析&#xff08;ICA&#xff09;&#xff1a;解锁信号的隐秘面纱引言I…

免杀笔记 ---> APC注入

除了我们前面讲的DLL注入&#xff0c;还有一个APC注入的东西也是很重要的&#xff01;&#xff01; &#xff1a;&#xff1a;确实很重要&#xff0c;相应的&#xff0c;在跟新完今天的代码之后&#xff0c;我也会对应的进行Github上工具的更新&#xff01;&#xff01; 1.AP…

css实现3d照片墙

效果图 vue2写法&#xff1a; <template><div class"container"><div class"box"><div class"circle circle1"><img src"../../../assets/images/main/logo.png" alt"" /></div>&l…

实战教程:如何利用Optimizer优化你的Windows系统?

前言 你是否厌倦了系统臃肿、隐私泄露的烦恼&#xff1f;小江湖今天就要带你走进一个全新的世界&#xff0c;一个能够让你重获自由与安心的神奇之地——Optimizer&#xff0c;一款专为Windows用户打造的深度优化神器&#xff1b;有了它你仅需轻轻一点&#xff0c;再也不用为系…

p13 数组

数组的创建 数组是一组相同类型元素的集合。数组的创建方式&#xff1a; type_t arr_name [const_n]; //type_t 是指数组的元素类型 //const_n 是一个常量表达式&#xff0c;用来指定数组的大小 int main() {//创建一个数字组-存放整型-10个int arr[10]{1,2,3}//不完全初始…

TensorFlow系列:第四讲:MobileNetV2实战

一. 加载数据集 编写工具类&#xff0c;实现数据集的加载 import keras""" 加载数据集工具类 """class DatasetLoader:def __init__(self, path_url, image_size(224, 224), batch_size32, class_modecategorical):self.path_url path_urlself…

物联网系统中市电电量计量方案(一)

为什么要进行电量计量&#xff1f; 节约资源&#xff1a;电量计量可以帮助人们控制用电量&#xff0c;从而达到节约资源的目的。在当前严峻的资源供应形势下&#xff0c;节约能源是我们应该重视的问题。合理计费&#xff1a;电表可以帮助公共事业单位进行合理计费&#xff0c;…

3.相机标定原理及代码实现(opencv)

1.相机标定原理 相机参数的确定过程就叫做相机标定。 1.1 四大坐标系及关系 &#xff08;1&#xff09;像素坐标系&#xff08;单位&#xff1a;像素&#xff08;pixel&#xff09;&#xff09; 像素坐标系是指相机拍到的图片的坐标系&#xff0c;以图片的左上角为坐标原点&a…

为校园后勤注入智慧:收件登记功能驱动全新体验

在智慧校园的后勤管理体系中&#xff0c;收件登记服务是一项旨在提升快递接收体验的创新举措&#xff0c;它无缝融合了现代科技与日常校园生活&#xff0c;为师生带来便捷与安心。 为应对日益增长的快递需求&#xff0c;师生可事先通过校园网平台或特制的移动应用预报快递信息&…