MyBatis 操作数据库入门

news2024/10/10 9:24:13

目录

前言

1.创建springboot⼯程

2.数据准备 

 3.配置Mybatis数据库连接信息

4.编写SQL语句,进行测试


前言

什么是MyBatis?
MyBatis是⼀款优秀的 持久层 框架,⽤于简化JDBC的开发

Mybatis操作数据库的入门步骤:

1.创建springboot⼯程
2.数据库表准备、实体类
3. 引⼊Mybatis的相关依赖,配置Mybatis(数据库连接信息)
4.编写SQL语句(注解/XML) ,进行测试

 了解更多MyBatis中文网icon-default.png?t=O83Ahttps://mybatis.net.cn/


1.创建springboot⼯程

创建springboot⼯程,并导⼊ mybatis的起步依赖、mysql的驱动包

 项⽬⼯程创建完成后,⾃动在pom.xml⽂件中,导⼊Mybatis依赖和MySQL驱动依赖

spring Boot会 按照自身对应版本导入对应的依赖。比如: SpringBoot 3.X对⽤MyBatis版本为3.X

我导入的依赖版本

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

<dependency>
   <groupId>com.mysql</groupId>
   <artifactId>mysql-connector-j</artifactId>
   <scope>runtime</scope>
</dependency>
对应的依赖版本参考:

mybatis-spring-boot-autoconfigure – Introductionicon-default.png?t=O83Ahttps://mybatis.org/spring-boot-starter/mybatis-spring-boot-autoconfigure/ 


2.数据准备 

创建⽤户表

-- 创建数据库

DROP DATABASE IF EXISTS mybatis_test;

CREATE DATABASE mybatis_test DEFAULT CHARACTER SET utf8mb4;

-- 使用数据数据

USE mybatis_test;

-- 创建表[用户表]

DROP TABLE IF EXISTS userinfo;

CREATE TABLE `userinfo` (

        `id` INT ( 11 ) NOT NULL AUTO_INCREMENT,

        `username` VARCHAR ( 127 ) NOT NULL,

        `password` VARCHAR ( 127 ) NOT NULL,

        `age` TINYINT ( 4 ) NOT NULL,

        `gender` TINYINT ( 4 ) DEFAULT '0' COMMENT '1-男 2-女 0-默认',

        `phone` VARCHAR ( 15 ) DEFAULT NULL,

        `delete_flag` TINYINT ( 4 ) DEFAULT 0 COMMENT '0-正常, 1-删除',

        `create_time` DATETIME DEFAULT now(),

        `update_time` DATETIME DEFAULT now(),

        PRIMARY KEY ( `id` )

) ENGINE = INNODB DEFAULT CHARSET = utf8mb4;

-- 添加用户信息

INSERT INTO mybatis_test.userinfo ( username, `password`, age, gender, phone )

VALUES ( 'admin', 'admin', 18, 1, '18612340001' );

INSERT INTO mybatis_test.userinfo ( username, `password`, age, gender, phone )

VALUES ( 'zhangsan', 'zhangsan', 18, 1, '18612340002' );

INSERT INTO mybatis_test.userinfo ( username, `password`, age, gender, phone )

VALUES ( 'lisi', 'lisi', 18, 1, '18612340003' );

INSERT INTO mybatis_test.userinfo ( username, `password`, age, gender, phone )

VALUES ( 'wangwu', 'wangwu', 18, 1, '18612340004' );

  

创建对应的实体类 UserInfo
实体类的属性名与表中的字段名⼀⼀对应
import lombok.Data;

import java.util.Date;
@Data
public class Userinfo {
    private Integer id;

    private String username;

    private String password;

    private Byte age;

    private Byte gender;

    private String phone;

    private Byte deleteFlag;

    private Date createTime;

    private Date updateTime;
}
MySQL 开发企业规范

1.表名, 字段名使⽤⼩写字⺟或数字, 单词之间以下划线分割. 尽量避免出现数字开头或者两个下划线 中间只出现数字

 2.表必备三字段: id(主键), create_time(创建时间), update_time(更新时间)

有同等含义的字段即可, 字段名不做强制要求

3.在表查询中, 避免使⽤ * 作为查询的字段列表


 3.配置Mybatis数据库连接信息

具体配置以自身为准

默认如下: 

如果是application.yml⽂件, 配置内容如下:

spring:
  datasource:
    url: jdbc:mysql://127.0.0.1:3306/mybatis_test?characterEncoding=utf8&useSSL=false
    username: root
    password: root
    driver-class-name: com.mysql.cj.jdbc.Driver
如果是application.yml⽂件, 配置内容如下:
  spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
  #数据库连接的url
  spring.datasource.url=jdbc:mysql://127.0.0.1:3306/mybatis_test?
  characterEncoding=utf8&useSSL=false
  #连接数据库的⽤⼾名
  spring.datasource.username=root
  #连接数据库的密码
  spring.datasource.password=root
注意事项:
如果使⽤ MySQL 是 5.x 之前的使⽤的是"com.mysql.jdbc.Driver",如果是⼤于 5.x 使⽤的
是“com.mysql.cj.jdbc.Driver”

4.编写SQL语句,进行测试

在项⽬中, 创建持久层接⼝UserInfoMapper

Mybatis的持久层接⼝规范⼀般都叫 XxxMapper 

UserInfoMapper接口

@Mapper注解:表⽰是MyBatis中的Mapper接⼝,程序运⾏时, 框架会⾃动⽣成接⼝的实现类对象(代理对象),并给交Spring的IOC容器管理

import com.wh.myBatis.model.Userinfo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
import java.util.List;

@Mapper
public interface UserInfoMapper {

    @Select("select * from userinfo")
    public List<Userinfo> queryAllUser();
}
@Select注解:代表的就是select查询,也就是注解对应⽅法的具体实现内容.

 

测试

在创建出来的SpringBoot⼯程中,在src下的test⽬录下,已经⾃动帮我们创建好了测试类 ,我们可以 直接使⽤这个测试类来进⾏测试.

 使⽤Idea ⾃动⽣成测试类

在需要测试的Mapper接⼝中, 右键 -> Generate -> Test如下:

1.

2.

3. 

 4.

记得加 @SpringBootTest 注解, 加载Spring运⾏环境 

 代码:

import com.wh.myBatis.model.Userinfo;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

import static org.junit.jupiter.api.Assertions.*;
@SpringBootTest
class UserInfoMapperTest {
    @Autowired
    private UserInfoMapper userInfoMapper;
    @Test
    void queryAllUser() {
        for (Userinfo userinfo : userInfoMapper.queryAllUser()) {
            System.out.println(userinfo);
        }

    }
}

结果:


 

以上为我个人的小分享,如有问题,欢迎讨论!!! 

都看到这了,不如关注一下,给个免费的赞 

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

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

相关文章

SOMEIP_ETS_171: SD_Unicast_FindService

测试目的&#xff1a; 验证DUT能够响应Tester发送的多个单播FindService消息&#xff0c;并至少回复一个单播OfferService消息。 描述 本测试用例旨在确保DUT能够正确处理单播FindService消息请求&#xff0c;并为请求的服务提供至少一个单播OfferService消息作为响应。 测…

SpringBootWeb快速入门!详解如何创建一个简单的SpringBoot项目?

在现代Web开发中&#xff0c;SpringBoot以其简化的配置和快速的开发效率而受到广大开发者的青睐。本篇文章将带领你从零开始&#xff0c;搭建一个基于SpringBoot的简单Web应用~ 一、前提准备 想要创建一个SpringBoot项目&#xff0c;需要做如下准备&#xff1a; idea集成开发…

亲身经历告诉你该如何自学编程

我2016年硕士毕业后&#xff0c;从一个纯机械学生开始转行做软件开发&#xff0c;其中少不了要自学编程&#xff0c;这其中经历的到现在看来还历历在目。 我曾经写过一些关于我转行做软件开发经历的文章&#xff0c;如果你感兴趣&#xff0c;可以点击这里的链接&#xff08;我…

国庆期间的问题,如何在老家访问杭州办公室的网络呢

背景&#xff1a;国庆期间的问题&#xff0c;如何在老家访问杭州办公室的网络呢 实现方案&#xff1a;异地组网 实现语言&#xff1a;Java 环境&#xff1a;三个网络&#xff0c;一台拥有公网IP的服务器、一台杭州本地机房内服务器、你老家所在网络中的一台电脑&#xff08;…

【Git】TortoiseGitPlink提示输入密码解决方法

问题 克隆仓库&#xff0c;TortoiseGitPlink提示输入密码 解法 1、打开TortoiseGit 下的puttygen工具 位置&#xff1a;C:\Program Files\TortoiseGit\bin\ 2、点击【Load】按钮&#xff0c;载入 C:\Users\Administrator\.ssh\ 文件夹下的id_rsa文件。 3、点击save private …

Python数据分析-远程办公与心理健康分析

一、研究背景 随着信息技术的飞速发展和全球化的推进&#xff0c;远程工作&#xff08;Remote Work&#xff09;成为越来越多企业和员工的选择。尤其是在2020年新冠疫情&#xff08;COVID-19&#xff09;爆发后&#xff0c;全球范围内的封锁措施使得远程工作模式迅速普及。根据…

Mysql数据库--JDBC编程

文章目录 1.JDBC编程基础2.驱动程序下载3.新建项目3.1导入java包3.2转换为库 4.开始创作4.1准备数据库4.2创建DataSource4.3和数据库建立连接4.4构造sql&#xff0c;准备发送到服务器4.5发送sql&#xff0c;执行sql4.6释放系统资源4.7自行输入的设置4.8插入数据完整源代码4.9查…

JavaEE之多线程进阶-面试问题

一.常见的锁策略 锁策略不是指某一个具体的锁&#xff0c;所有的锁都可以往这些锁策略中套 1.悲观锁与乐观锁 预测所冲突的概率是否高&#xff0c;悲观锁为预测锁冲突的概率较高&#xff0c;乐观锁为预测锁冲突的概率更低。 2.重量级锁和轻量级锁 从加锁的开销角度判断&am…

OJ在线评测系统 微服务 用分布式消息队列 RabbitMQ 解耦判题服务和题目服务 手搓交换机和队列 实现项目异步化

消息队列解耦 项目异步化 分布式消息队列 分布式消息队列是一种用于异步通信的系统&#xff0c;它允许不同的应用程序或服务之间传递消息。消息队列的核心理念是将消息存储在一个队列中&#xff0c;发送方可以将消息发送到队列&#xff0c;而接收方则可以在适当的时候从队列中…

Vue2电商平台(六)、注册登录,请求头配置token,token持久化存储;导航守卫(重点);组件内守卫、路由独享守卫

文章目录 一、注册1. 获取注册验证码2. 完成注册用户 二、登录1. 登录获取token2. Home首页携带token获取用户数据3. 持久化存储token4. 退出登录5. 导航守卫 (牛)6. 路由独享守卫beforeEnter7. 组件内守卫&#xff08;用的很少&#xff09; 一、注册 1. 获取注册验证码 本系…

基于SSM+小程序的线上教育商城管理系统(教育2)

&#x1f449;文末查看项目功能视频演示获取源码sql脚本视频导入教程视频 1、项目介绍 微信小程序线上教育商城有管理员&#xff0c;教师&#xff0c;学生三个角色。 1、管理员功能有个人中心&#xff0c;学生管理&#xff0c;教师管理&#xff0c;类型管理&#xff0c;课程…

diffusion model(1.1) 为什么前向传播和反向传播都遵循高斯分布?

DDPM的引用[53]为Deep Unsupervised Learning using Nonequilibrium Thermodynamics&#xff0c;它证明了当 β t \beta_t βt​ 较小时&#xff0c;前向传播和反向传播前向分布和后向分布拥有同样的分布形式。 所引论文的内容如下&#xff0c; 后者又引用了另一篇论文(Fell…

分层解耦-04.IOCDI-IOC详解

一.Bean的声明 springboot为了更好地标识web应用开发中bean对象到底归属于哪一层&#xff0c;在Component注解的基础上又衍生出了三个注解Controller、Service和Repository。分别应用于Controller层&#xff0c;Service层和Dao层。推荐使用衍生注解&#xff0c;当无法判断该be…

Java-数据结构-反射、枚举 |ू・ω・` )

目录 ❄️一、反射&#xff1a; 1、定义&#xff1a; 2、用途&#xff1a; 3、反射相关的类&#xff1a; 4、Class类&#xff1a; 1、Class类中相关的方法&#xff1a; 5、Class反射实例&#xff1a; 1、获得Class对象的三种方式&#xff1a; 2、反射的使用&#xff1a; 6、反…

网络基础擅长组建乐队

让我们荡起双桨 来说说网络吧 现有计算机要进行协作&#xff0c;网络的产生是必然的 局域网&#xff1a;计算机数量更多了, 通过交换机和路由器连接在一起 广域网&#xff1a;将远隔千里的计算机都连在一起 交换机路由器等设备就应运而生 计算机是人的工具&#xff0c;人要协…

layernorm笔记

文章目录 layer norm的解释二维三维 batchnorm和layernorm主要的区别为什么要在序列转录模型中使用layer norm&#xff1f; layer norm的解释 二维 红色为batchnorm&#xff0c;蓝色为layer norm batchnorm对每一个特征算均值和方差 layer norm对每一个批次算均值和方差 三…

窗口系统与图形绘制接口

个人博客:Sekyoro的博客小屋 个人网站:Proanimer的个人网站 当我们想要进行底层图形应用(GUI)开发时,往往需要用到窗口系统和图形库,这里简单介绍一下 视窗系统(window system)与通信协议 下面内容主要针对Unix-like操作系统 视窗系统是以使用视窗作为主要特征之一的图形用…

【含开题报告+文档+PPT+源码】基于SSM + Vue的养老院管理系统【包运行成功】

开题报告 随着社会的发展和经济的进步&#xff0c;人口老龄化问题逐渐凸显。统计数据显示&#xff0c;全球范围内的老龄人口比例正在逐年上升&#xff0c;养老需求也随之增长。养老院作为提供专业养老服务的机构&#xff0c;承担着照料老人、提供医疗保健和社交活动等责任。传…

DVWA Brute Force篇暴力破解 Low/Medium/Hight

这里就不再赘述环境搭建&#xff0c;就默认你已经做好环境搭建的准备了.接下来就步入正题(我的bp是汉化) 任务一&#xff0c;设置级别为low级别&#xff0c;创建好我们的字典文件 任务二 开启抓包&#xff0c;并且我们输入错误的账户密码 &#xff08;当我知道账户名称为admin时…