MyBatis-1:基础概念+环境配置

news2024/11/24 3:25:03

什么是MyBatis?

MyBatis是一款优秀的持久层框架,支持自定义sql,存储过程以及高级映射。

MyBatis就是可以让我们更加简单的实现程序和数据库之间进行交互的一个工具。可以让我们更加简单的操作和读取数据库的内容

MyBatis的官网:https://blog.mybatis.org/

为什么要学习MyBatis?

后端开发的工作:后端程序、数据库

而这两个部分的重要部分就要依赖 数据库连接工具,而连接工具有哪些呢?比如JDBC、MyBatis。

关于JDBC的知识内容:http://t.csdn.cn/PJnQY

而相比较与JDBC手动挡,MyBatis就是自动挡!

第一个MyBatis查询

1.构建好数据库

2.在项目中添加MyBatis框架

这个分为两种情况,在老项目/新项目 中添加

直接加入依赖的方法

<!-- 添加 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.38</version>
    <scope>runtime</scope>
</dependency>

推荐:使用EditStarters插件

http://t.csdn.cn/DE3qW //点击链接查看插件使用技巧

选择MyBatis Framework 和 MySQL Driver

新项目的话直接在创建之初添加MyBatis Framework 和 MySQL Driver即可

3.配置 MyBatis 中的 XML 路径

如上图,项目添加MyBatis之后运行错误是正常的,所以我们要 设置四个操作,也就是配置数据库的四个链接信息。如下面代码所示。
# 数据库连接配置

spring:
    datasource:
      # URL分别代表地址,端口号,数据库名称,编码格式,是否加密
        url: jdbc:mysql://localhost:3306/blog?characterEncoding=utf8&useSSL=false
        #账号 和 密码
        username: root
        password: root
        # 使用 mysql-connector-java 是 5.x 之前的使用的是“com.mysql.jdbc.Driver”
        # 如果是大于 5.x使用的是“com.mysql.cj.jdbc.Driver”。
        driver-class-name: com.mysql.cj.jdbc.Driver

# 配置MyBatis的xml

# MyBatis 的两个组成部分:① 接口(包含表的操作方法)  ② xml 实现接口
# mysql通过sql语句来操作数据库,但是java与sql不兼容,使用类实现的话是比较麻烦的,还带用字符串
# 而 MyBatis 实现了一个 xml 的技术,来实现 接口 的内容。而接口则是让 java 来进行调用
# 配置 mybatis xml 的文件路径,在 resources/mapper 创建所有表的 xml 文件---告诉系统哪些文件是 MyBatis 要使用的
mybatis:
  mapper-locations: classpath:mapper/*Mapper.xml

注意 xml 的配置要和文件路径相对应,如下图所示:

4. 添加业务代码

用户请求控制器,然后参数校验,校验没问题,就可以通过Service调用用户持久层来操作数据库。

文件夹内容的创建:

写功能:

1.写一个实体类(entity文件夹下)

package com.example.demo.entity;

import lombok.Data;

import java.io.Serializable;
import java.time.LocalDateTime;

@Data
public class Userinfo implements Serializable {
    private final long serializableId = 1L;
    private int id;
    private String username;
    private String password;
    private String photo; // 头像
    private LocalDateTime createTime;
    private LocalDateTime updateTime;
    private int state;
}

2.构建Mapper层的代码实现

①创建Interface

②创建xml

③实现Service

package com.example.demo.service;

import com.example.demo.entity.Userinfo;
import com.example.demo.mapper.UserinfoMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class UserinfoService {
    @Autowired
    private UserinfoMapper userinfoMapper;

    public Userinfo getUserById(Integer id){
        return userinfoMapper.getUserInfoById(id);
    }
}

④实现Controller

注意:通常URL只使用小写,单词较多可以使用 -(中划线) 或者 _ (下划线)
package com.example.demo.controller;

import com.example.demo.entity.Userinfo;
import com.example.demo.service.UserinfoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/user")
public class UserinfoController {

    @Autowired
    UserinfoService userinfoService;

    @RequestMapping("/get-userinfo-by-id")
    public Userinfo getUserinfoById(Integer id){
        if (id==null) return null;
        return userinfoService.getUserById(id);
    }
}

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

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

相关文章

弱监督实例分割 Box-supervised Instance Segmentation with Level Set Evolution 论文笔记

弱监督实例分割 Box-supervised Instance Segmentation with Level Set Evolution 论文笔记一、Abstract二、引言三、相关工作3.1 基于 Box 的实例分割3.2 基于层级的分割四、提出的方法4.1 图像分割中的层级模型4.2 基于 Box 的实例分割在 Bounding Box 内的层级进化输入的数据…

elasticsearch 分布式搜索引擎3

1.数据聚合 **聚合&#xff08;aggregations&#xff09;**可以让我们极其方便的实现对数据的统计、分析、运算。例如&#xff1a; 什么品牌的手机最受欢迎&#xff1f;这些手机的平均价格、最高价格、最低价格&#xff1f;这些手机每月的销售情况如何&#xff1f; 实现这些…

Altium Designer(AD)软件使用记录04-AD设计文件输出汇总

目录Altium Designer(AD)软件使用记录04-AD设计文件输出汇总准备工作1、放置层标识&#xff08;标清每个层的顺序&#xff09;2、放置钻孔图&#xff08;表明孔的一些参数&#xff09;3、设置原点坐标一、文件输出1、Gerber文件&#xff08;光绘文件&#xff09;2、钻孔文件3、…

EasyExcell导出excel添加水印

EasyExcell导出excel添加水印1、添加easyExcel相关依赖2、准备基础工具类3、创建水印handler类4、创建单元测试类WriteTest.class5、测试结果1、添加easyExcel相关依赖 <dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId&…

Reactor模式

Reactor是一种设计模式&#xff0c;可以用于构建高并发的网络服务器。 Reactor模式的好处在于&#xff1a;可以在一个或多个reactor线程使用多路复用技术去管理所有网络连接连接建立、IO请求&#xff0c;保证工作线程不被IO阻塞。 前置知识&#xff1a;IO多路复用技术 1. 传统网…

如何通过外贸网站SEO优化,提升您的品牌曝光度和海外业务销售额?

随着全球化的不断推进和互联网的普及&#xff0c;越来越多的外贸企业开始重视SEO优化&#xff0c;以提升自身品牌的曝光度和海外业务的销售额。 但是&#xff0c;对于许多外贸企业而言&#xff0c;SEO优化似乎是一个非常陌生的领域&#xff0c;他们并不清楚该如何进行优化。 …

两会特稿 | 项国就书法学术论文入编《中国民族博览》国家一级大型文化类期刊

2022 年 7 月&#xff0c;著名书法家项国就撰写的书法学术论文《探究〈散氏盘〉与其临创感悟》入编国家一级大型文化类期刊《中国民族博览》&#xff0c;并于 2023 年 1 月正式出刊发表。 据悉&#xff0c;《散氏盘》是我国最重要的书法艺术形式之一&#xff0c;研究《散氏盘…

并发编程之AtomicUnsafe

目录 原子操作 定义 术语 处理器如何实现原子操作 处理器自动保证基本内存操作的原子性 使用总线锁保证原子性 使用缓存锁保证原子性 Java当中如何实现原子操作 Atomic 定义 原子更新基本类型类 原子更新数组类 原子更新引用类型 原子更新字段类 Unsafe应用解析…

【MySQL】MySQL的锁机制

目录 概述 MyISAM 表锁 InnoDB行锁 概述 锁是计算机协调多个进程或线程并发访问某一资源的机制&#xff08;避免争抢&#xff09;。 在数据库中&#xff0c;除传统的 计算资源&#xff08;如 CPU、RAM、I/O 等&#xff09;的争用以外&#xff0c;数据也是一种供许多用户共…

中断以及 PIC可编程中断控制器

1 中断分为同步中断&#xff08;中断&#xff09;和异步中断&#xff08;异常&#xff09; 1.1 中断和异常的不同 中断由IO设备和定时器产生&#xff0c;用户的一次按键会引起中断。异步。 异常一般由程序错误产生或者由内核必须处理的异常条件产生。同步。缺页异常&#xff…

【Linux】关机、重启和用户登录注销

目录1 关机&重启命令1.1 基本介绍1.2 注意细节2 用户登录和注销2.1 基本介绍2.2 使用细节1 关机&重启命令 1.1 基本介绍 shutdown -h now          立刻关机shutdown -h 1            “hello&#xff0c;1分钟后会关机了”shutdown -r now   …

【hadoop】介绍

目录 介绍 版本 优势 大数据技术生态体系 介绍 Hadoop是一个由Apache基金会所开发的分布式系统基础架构。 解决 存储和分析计算Google在大数据方面的三篇论文GFS --->HDFS Map-Reduce --->MR BigTable --->HBaseHadoop创始人Doug Cutting版本 Hadoop 三大发行版本&a…

一文带你了解MySQL的Explain

日常工作中&#xff0c;我们经常会收到慢sql告警&#xff0c;前面也写过两篇优化文章&#xff0c;SQL的优化思路和使用规范_出世&入世的博客-CSDN博客 MySQL优化策略_出世&入世的博客-CSDN博客 在优化这些慢sql时&#xff0c;我们经常需要用到explain这个命令来查看…

aws dynamodb java低等级api和高级客户端api的使用

参考资料 https://docs.amazonaws.cn/zh_cn/sdk-for-java/latest/developer-guide/setup-project-maven.html 初始化环境 创建maven项目 mvn org.apache.maven.plugins:maven-archetype-plugin:3.1.2:generate \-DarchetypeArtifactId"maven-archetype-quickstart&quo…

正则表达式引擎NFA自动机的回溯解决方案总结

前几天线上一个项目监控信息突然报告异常&#xff0c;上到机器上后查看相关资源的使用情况&#xff0c;发现 CPU 利用率将近 100%。通过 Java 自带的线程 Dump 工具&#xff0c;我们导出了出问题的堆栈信息。 我们可以看到所有的堆栈都指向了一个名为 validateUrl 的方法&#…

【C语言】每日刷题 —— 牛客语法篇(4)

&#x1f680;&#x1f680;前言 大家好&#xff0c;继续更新专栏 c_牛客&#xff0c;不出意外的话每天更新十道题&#xff0c;难度也是从易到难&#xff0c;自己复习的同时也希望能帮助到大家&#xff0c;题目答案会根据我所学到的知识提供最优解。 &#x1f3e1;个人主页&am…

Mr. Cappuccino的第48杯咖啡——冒泡APP(升级版)之基于Docker部署企业级Maven私服

冒泡APP&#xff08;升级版&#xff09;之基于Docker部署企业级Maven私服基于Docker安装Nexus登录Maven私服配置Maven仓库配置settings.xml和pom.xml项目实践及常见问题基于Docker安装Nexus 查看sonatype/nexus镜像版本 下载指定版本的镜像 docker pull sonatype/nexus3:3.48…

【C语言】有关的经典题型内含数组及递归函数题型讲解(入门适用)

C语音经典题型1. 在屏幕上输出9*9乘法口诀表2. 求10 个整数中最大值3. 计算1/1-1/21/3-1/41/5 …… 1/99 - 1/100 的值&#xff0c;打印出结果4. 编写程序数一下 1到 100 的所有整数中出现多少个数字95. 能把函数处理结果的二个数据返回给主调函数6. 实现一个函数&#xff0c;…

Https 笔记

HTTP TLS TLS 的前身是 SSL 非对称加密的核心&#xff1a; 两个密钥&#xff08;公私&#xff09; https 需要第三方CA&#xff08;证书授权中心&#xff09;申请SSL证书以确定其真实性 证书种包含了特定的公钥和私钥 密钥交换 自己将私钥上锁后发给对方对方也上锁 在还回来…

【2023包河区】题解

今天早上也是打完了包河区&#xff0c;不得不说是太 了 所以说&#xff0c;还是水一篇文章吧 T1 签到题 超级简单题吧&#xff0c;用max_score和max_name来计最大的名字和分数。 int n;scanf("%d",&n); int score,max_score; string name,max_name;对于一个新…