MyBatis基础理解教程,详细分步基础查询表数据练习(通俗易懂、实时更新)

一、MyBatis是什么

MyBatis 是一个持久层框架,简化JDBC开发,它提供了一个从 Java 应用程序到 SQL 数据库的桥梁,用于数据的存储、检索和映射。MyBatis 支持基本的 SQL 操作、高级映射特性以及与 Maven 等构建工具的集成。

二、持久层是什么

负责将数据保存到数据库的那一层代码。

是JavaEE的三层架构:表现层、业务层、持久层

三、框架又是什么

框架就是一个半成品软件,是一套可重用的、通用的、软件基础代码模型。

在框架的基础之上构建软件编写更加高效、规范、通用、可拓展。

四、MyBatis 的好处:

  1. SQL 灵活性:允许开发者编写自由的 SQL,适合复杂的查询。
  2. 性能优势:直接执行 SQL,通常性能更优。
  3. 易于上手:相对于全 ORM 框架,MyBatis 学习成本较低。
  4. 缓存机制:有效提高数据访问速度。
  5. 可扩展性:插件系统允许自定义扩展。

五、MyBatis 的坏处:

  1. 配置复杂性:需要手动编写和维护 XML 映射文件。
  2. SQL 维护:对于大型项目,SQL 语句分散在 XML 中可能导致维护困难。

六、练习:使用Mybatis查询user表中所有数据

最基础的简单练习,简单熟悉一下Mybatis

以下代码有点多,注释里有难点的相应解释

1.sql创建user表,添加数据

先创建一个数据库表,表名就叫Mybatis,一会就是要操作这张表

create database mybatis;
use mybatis;drop table if exists tb_user;create table tb_user(id int primary key auto_increment,username varchar(20),password varchar(20),gender char(1),addr varchar(30)
);INSERT INTO tb_user VALUES (1, 'zhangsan', '123', '男', '北京');
INSERT INTO tb_user VALUES (2, '李四', '234', '女', '天津');
INSERT INTO tb_user VALUES (3, '王五', '11', '男', '西安');

2.idea中创建模块,导入坐标

创建Model,在自动生成的pom.xml文件中加入以下坐标,完整代码如下: 

<?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>mybatis-demo</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><dependencies><!--mybatis的依赖--><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.5</version></dependency><!--mysql数据库--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.46</version></dependency><!--junit单元测试--><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.13</version><scope>test</scope></dependency><!-- 添加slf4j日志api --><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-api</artifactId><version>1.7.20</version></dependency><!-- 添加logback-classic依赖 --><dependency><groupId>ch.qos.logback</groupId><artifactId>logback-classic</artifactId><version>1.2.3</version></dependency><!-- 添加logback-core依赖 --><dependency><groupId>ch.qos.logback</groupId><artifactId>logback-core</artifactId><version>1.2.3</version></dependency></dependencies></project>
3.编写 MyBatis 核心配置文件 -->替换连接信息 解决硬编码问题

创建mybatis-config文件

官网提供的文件的实例代码,直接粘贴进去

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration><environments default="development"><environment id="development"><transactionManager type="JDBC"/><dataSource type="POOLED"><!--数据库连接信息--><property name="driver" value="com.mysql.jdbc.Driver"/><property name="url" value="jdbc:mysql:///mybatis?useSSL=false"/><property name="username" value="root"/><property name="password" value="123456"/></dataSource></environment></environments><mappers><!--加载sql的映射文件的路径,这里这个路径做到这里还没有,回头再添加的--><!--resources属性自动会从类的根路径下开始查找资源--><mapper resource="UserMapper.xml"/></mappers>
</configuration>
4.编写 SQL映射文件-->统一管理sq|语句,解決硬编码问题

创建UserMapper.xml,sql表有的会暂时报错,没有影响,下面会提供解决方法,test报错是数据库软件的问题,也没有影响,不用管

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><!--namespace:名称空间-->
<mapper namespace="test"><select id="selectAll" resultType="com.yufei.pojo.User">select * from tb_user;</select>
</mapper>
5. 编码
                1.定义POJO类

(创建user类,getset、tostring方法)

package com.yufei.pojo;public class User {private Integer id;private String username;private String password;private String gender;private String addr;public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public String getGender() {return gender;}public void setGender(String gender) {this.gender = gender;}public String getAddr() {return addr;}public void setAddr(String addr) {this.addr = addr;}@Overridepublic String toString() {return "User{" +"id=" + id +", username='" + username + '\'' +", password='" + password + '\'' +", gender='" + gender + '\'' +", addr='" + addr + '\'' +'}';}
}

               234步在MybatisDemo类中编写

                2.加载核心配置文件,获取SqlSessionFactory对象
//1.加载Mybatis核心配置文件,获取SqlSessionFactoryString resource = "mybatis-config.xml";InputStream inputStream = Resources.getResourceAsStream(resource);SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
                3.获取SqlSession对象,执行SQL语句
//2.获取SqlSession对象,用它来执行sql语句SqlSession sqlSession = sqlSessionFactory.openSession();//3.执行sqlList<User> users = sqlSession.selectList("test.selectAll");System.out.println(users);
                4. 释放资源
 //4.释放资源sqlSession.close();
6.最后在resources中加入logback.xml配置文件

保存好了,用到直接复制粘贴

<?xml version="1.0" encoding="UTF-8"?>
<configuration><!--CONSOLE :表示当前的日志信息是可以输出到控制台的。--><appender name="Console" class="ch.qos.logback.core.ConsoleAppender"><encoder><pattern>[%level] %blue(%d{HH:mm:ss.SSS}) %cyan([%thread]) %boldGreen(%logger{15}) - %msg %n</pattern></encoder></appender><logger name="com.yufei" level="DEBUG" additivity="false"><appender-ref ref="Console"/></logger><!--level:用来设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF, 默认debug<root>可以包含零个或多个<appender-ref>元素,标识这个输出位置将会被本日志级别控制。--><root level="DEBUG"><appender-ref ref="Console"/></root>
</configuration>

全部编写完成的包,别有落下的,一共五个。

运行,成功获取到数据库中的数据

七、在IDEA中配置Mysql的数据库连接(sql文件报错的原因)

连接成功,在IDEA中就可以查看数据库!

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

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

相关文章

IDEA增加.gitignore文件后的处理

IDEA增加 .gitignore 文件后&#xff0c;但还是被 git 跟踪了。 我的文件已经被添加到 .gitignore 中&#xff0c;但仍然被 Git 跟踪&#xff0c; 文件被修改后commint中就会存在此文件。 原因: 文件已经被提交过了 如果文件在添加到 .gitignore 之前已经被提交到 Git 仓库中,…

Spring boot集成通义千问大模型

Spring boot集成通义千问大模型 背景 我在用idea进行java开发时发现了通义灵码这款免费的智能代码补全插件&#xff0c;用了一段时间了&#xff0c;感觉很不错。就想着在自己的项目中也能集成通义千问大模型实现智能回答&#xff0c;毕竟对接openai需要解决网络问题&#xff…

战略合作 | 竹云赋能雁塔区数字经济高质量发展

2024年5月30日&#xff0c;由西安市数据局指导&#xff0c;中共西安市雁塔区委、西安市雁塔区人民政府主办的 “雁塔区企业数字化转型发展大会” 在西安开幕。 本次活动以“数智雁塔&#xff0c;引领未来”为主题&#xff0c;特邀业内150余位政府、数字化服务企业、传统行业企…

Kubernetes 之 DaemonSet 基本原理

Kubernetes 之 DaemonSet 基本原理 DaemonSet 定义 DaemonSet 确保全部&#xff08;或者某些&#xff09;节点上运行一个 Pod 的副本。 当有节点加入集群时&#xff0c; 也会为他们新增一个 Pod 。 当有节点从集群移除时&#xff0c;这些 Pod 也会被回收。删除 DaemonSet 将会…

先导微型数控桌面式加工中心

随着数控技术、传感器技术、人工智能等技术的不断发展&#xff0c;制造业的快速发展和技术的不断进步&#xff0c;小型五轴加工中心的性能将不断提升&#xff0c;五轴联动技术作为解决异性复杂零件高效优质加工问题的重要手段&#xff0c;使其具有更广泛的应用前景。小型五轴加…

【启明智显分享】国产自主ZX7981P Wi-Fi6 5G-CPE开发板有哪些优势?

在当前竞争激烈的智能设备市场中&#xff0c;高性能与低功耗的开发板已然成为各大产品追求的关键优势。 今天我们从国产自主研发的ZX7981P Wi-Fi6 5G-CPE开发板的特点出发&#xff0c;分析他是否满足市场追求的特点。 主要特点&#xff1a; 1. 强大配置&#xff0c;稳定可靠 …

5.30 学习总

刷题记录(Codeforces Round 947 &#xff08;Div. 1 Div. 2&#xff09;B,C题)和Codeforces Round 948 &#xff08;Div. 2&#xff09;B题 一.B. 378QAQ and Mochas Array B. 378QAQ and Mochas Array time limit per test 1 second memory limit per test 256 megabytes in…

长难句5.30

Researchers measured people’s cortisol, which is a stress marker, while they were at work and while they were at home and found it higher at what is supposed to be a place of refuge. 研究人员测量了人们在工作中和在家里的皮质醇(压力的一种标志)&#xff0c;结…

在 JavaScript 中循环遍历数组的多种方法

在JavaScript编程中,遍历数组是一个非常常见的操作。根据不同的需求和JavaScript的不同版本,我们有多种方法来完成这一操作。本文将介绍几种有效的方法,包括现代的和传统的方式,同时分析每一种方法的优缺点。 1. 使用 for...of 语法 for...of 是在 ECMAScript 2015(ES6)…

Spring Boot集成statemachine快速入门demo

1.什么是statemachine&#xff1f; Spring Statemachine 是应用程序开发人员在 Spring 应用程序中使用状态机概念的框架&#xff0c;从设计层面分析&#xff1a;状态机目的是解决复杂的状态管理流程&#xff0c;保证程序单一原则和开闭原则&#xff1b;业务角度分析&#xff1…

【面试】什么是Java虚拟机

目录 1. 说明2. 关键点 1. 说明 1.Java虚拟机&#xff08;Java Virtual Machine&#xff0c;简称JVM&#xff09;是运行所有Java程序的抽象计算机&#xff0c;是Java语言的运行环境。2.JVM是Java平台无关性的关键&#xff0c;它允许Java程序在任何支持JVM的硬件和操作系统上运…

【大数据面试题】34 手写一个 Flink SQL 样例

一步一个脚印,一天一道大数据面试题 博主希望能够得到大家的点赞收,藏支持!非常感谢~ 点赞,收藏是情分,不点是本分。祝你身体健康,事事顺心! 我们来看看 Flink SQL大概流程和样例: 流程: 1.创建 流处理环境 StreamExecutionEnvironment env 2.创建 表环境 StreamTab…

为啥装了erlang,还报错erl: command not found?

转载说明&#xff1a;如果您喜欢这篇文章并打算转载它&#xff0c;请私信作者取得授权。感谢您喜爱本文&#xff0c;请文明转载&#xff0c;谢谢。 问题背景&#xff1a; 在一台不通外网的服务器上装rabbitmq&#xff0c;然后在启动的时候&#xff0c;遇到了报错 “/usr/lib/…

C#中使用Mapster

Mapster是一个开源的.NET对象映射库&#xff0c;它提供了一种简单而强大的方式来处理对象之间的映射。 多个映射框架的性能对比&#xff1a; 第一步安装Mapster 使用方法 public class Test {public string name { get; set; }public string sex { get; set; }public string…

C语言数据结构(超详细讲解)| 二叉树的实现

二叉树 引言 在计算机科学中&#xff0c;数据结构是算法设计的基石&#xff0c;而二叉树&#xff08;Binary Tree&#xff09;作为一种基础且广泛应用的数据结构&#xff0c;具有重要的地位。无论是在数据库索引、内存管理&#xff0c;还是在编译器实现中&#xff0c;二叉树都…

记录Win11安装打印机驱动过程

1. 首先下载打印机对应型号的驱动 可以从这里下载&#xff1a;打印机驱动,打印机驱动下载 - 打印机驱动网 2. 下载 3. 打开控制面板-->设备和打印机 找到目标打印机添加设备即可 新增打印纸张尺寸

B站稿件生产平台高可用建设分享

背景 B站作为国内领先的内容分享平台&#xff0c;其核心功能之一便是支持UP主们创作并分享各类视频内容。UP主稿件系统作为B站内容生产的关键环节&#xff0c;承担着从内容创作到发布的全过程管理。为了满足不同创作者的需求&#xff0c;B站提供了多种投稿渠道&#xff0c;包括…

方差分析的七种类型

方差分析&#xff08;ANOVA&#xff09;是一种用于检验两个以上样本均数差别的显著性统计方法。根据不同的研究设计和数据类型&#xff0c;方差分析可以分为以下7种类型。 一、单因素方差分析 ①单因素方差分析说明 单因素方差分析用于研究一个定类数据&#xff08;自变量&am…

【原创教程】MES服务器与成品打标机控制说明

1 实现的功能及应用的场合 MES即制造执行系统(manufacturing execution system,简称MES),即在加强MRP计划的执行功能,把MRP计划同车间作业现场控制,通过执行系统联系起来。 MES是一个生产管理智能化的一个系统,是用于生产时记录数据、产量等信息的智能管理系统。 该项…

SpockMockStatic方法

SpockMockStatic方法 参考: https://blog.csdn.net/knighttools/article/details/44630975 ‍ static方法 import com.meituan.mafka.client.producer.IProducerProcessor; import com.meituan.mdp.langmodel.api.message.AssistantMessage; import com.sankuai.gaigc.arrang…