Mybatis之入门使用

系列文章目录

提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加
Mybatis之入门使用


提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 系列文章目录
  • 前言
  • 一、环境准备
  • 二、持久层接口和映射文件
  • 三、测试持久层接口方法
  • 四、MyBatis工作流程
  • 总结


前言

提示:这里可以添加本文要记录的大概内容:

MyBatis 是一个优秀的持久层框架,它简化了数据库操作,提高了开发效率。在这篇博客中,我将带领你入门 MyBatis,了解如何使用它来操作数据库。
通过阅读这篇博客,你将了解到 MyBatis 的基本概念和架构,以及如何使用 MyBatis 创建映射文件、配置数据源和进行数据库操作。
无论是刚开始学习 MyBatis,还是已经有一定经验的开发者,这篇博客都将为你提供一个清晰的指导,帮助你更好地理解和使用 MyBatis。让我们一起开始 MyBatis 的学习之旅吧!


提示:以下是本篇文章正文内容,下面案例可供参考

一、环境准备

1.准备好数据库,建立表,这里大家自行创建
2.创建maven工程,引入依赖

<dependencies><!--  mybatis  --><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.7</version></dependency><!--  mysql驱动包  --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.26</version></dependency><!--  junit  --><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.10</version></dependency><!--  log4j  --><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.12</version></dependency>
</dependencies>

3.在resources目录下创建mybatis核心配置文件SqlMapConfig.xml

<?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="mysql"><environment id="mysql"><!--  事务类型  --><transactionManager type="JDBC"></transactionManager><!--  数据源  --><dataSource type="POOLED"><property name="driver" value="com.mysql.jdbc.Driver"/><property name="url" value="jdbc:mysql:///mybatis"/><property name="username" value="root"/><property name="password" value="root"/></dataSource></environment></environments>
</configuration>

4.将log4j.properties文件放入resources中,让控制台打印SQL语句。

# Set root category priority to INFO and its only appender to CONSOLE.
#log4j.rootCategory=INFO, CONSOLE            debug   info   warn error fatal
log4j.rootCategory=debug, CONSOLE# Set the enterprise logger category to FATAL and its only appender to CONSOLE.
#log4j.logger.org.apache.axis.enterprise=FATAL, CONSOLE# CONSOLE is set to be a ConsoleAppender using a PatternLayout.
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=[%d{MM/dd HH:mm:ss}] %-6r [%15.15t] %-5p %30.30c %x - %m\n

5.创建实体类

public class User {private int id;private String username;private String sex;private String address;// 省略getter/setter/构造方法/toString方法
}

二、持久层接口和映射文件

1.在java目录创建持久层接口

public interface UserMapper {List<User> findAll();
}

2.在resource目录创建映射文件。需要注意的是映射文件要和接口名称相同,例如假如接口名称为UserMapper,则映射文件的名称则为UserMapper.xml。映射文件要和接口的目录结构相同,例如接口的目录为com.zhangsan.UserMapper,则映射文件的目录则为,com.zhangsan.UserMapper.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="com.zhangsan.mapper.UserMapper"><select id="findAll" resultType="com.zhangsan.pojo.User">select * from user</select>
</mapper>

其中:

  • 映射文件中namespace属性要写接口的全名。
  • 映射文件中标签的id属性是接口方法的方法名。
  • 映射文件中标签的resultType属性是接口方法的返回值类型。
  • 映射文件中标签的parameterType属性是接口方法的参数类型。
  • 映射文件中resultType、parameterType属性要写全类名,如果是集合类型,则写其泛型的全类名。

注意:参数/返回值类型为基本数据类型/包装类/String等类型时,我们可以写全类名,也可以写别名。

项目Value
byte_byte
long_long
short_short
int_int
int_integer
double_double
float_float
boolean_boolean
Stringstring
Bytebyte
Longlong
Shortshort
Integerint/integer
Doubledouble
Floatfloat
Booleanboolean
Datedate
BigDecimaldecimal/bigdecimal
Objectobject
Mapmap
HashMaphashmap
Listlist
ArrayListarraylist
Collectioncollection
Iteratoriterator

三、测试持久层接口方法

@Test
public void testFindAll() throws Exception {// (1)读取核心配置文件InputStream is = Resources.getResourceAsStream("SqlMapConfig.xml");// (2)创建SqlSessionFactoryBuilder对象SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();// (3)SqlSessionFactoryBuilder对象获取SqlSessionFactory对象SqlSessionFactory factory = builder.build(is);// (4)SqlSessionFactory对象获取SqlSession对象SqlSession session = factory.openSession();// (5)SqlSession对象获取代理对象UserMapper userMapper = session.getMapper(UserMapper.class);// (6)代理对象执行方法List<User> all = userMapper.findAll();all.forEach(System.out::println);// (7)释放资源session.close();is.close();
}

其中:

  1. SqlSessionFactoryBuilder:SqlSession工厂构建者对象,使用构造者模式创建SqlSession工厂对象。
  2. SqlSessionFactory:SqlSession工厂,使用工厂模式创建SqlSession对象。
  3. SqlSession:该对象可以操作数据库,也可以使用动态代理模式创建持久层接口的代理对象操作数据库。
  4. Mapper:持久层接口的代理对象,他具体实现了持久层接口,用来操作数据库。

四、MyBatis工作流程

  1. 创建SqlSessionFactoryBuilder对象
  2. SqlSessionFactoryBuilder对象构建了SqlSessionFactory对象:构造者模式
  3. SqlSessionFactory对象生产了SqlSession对象:工厂模式
  4. SqlSession对象创建了持久层接口的代理对象:动态代理模式
  5. 代理对象操作数据库

注意:后面关于Mybatis的讲解,将不再进行环境的准备


总结

提示:这里对文章进行总结:

在本博客中,我们深入探讨了 MyBatis 这个强大的 ORM(对象关系映射)框架,学习了如何使用它来简化数据库操作。我们首先了解了 MyBatis 的基本架构和工作原理,包括映射文件、配置文件和 SQL 映射语句的概念。
然后,我们逐步引导读者完成了创建映射文件、配置数据源以及执行增删改查操作的过程。通过实际示例,读者可以更好地理解如何将实体类与数据库表进行映射,以及如何使用 MyBatis 提供的查询语句和参数传递功能。
总而言之,通过本博客,读者对 MyBatis 有了全面的了解,并掌握了使用它进行数据库操作的基本技能。无论是刚接触 MyBatis 的新手还是希望进一步提升技能的开发者,都能从本博客中获得有价值的信息。

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

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

相关文章

AIGC系统ChatGPT系统源码,Midjourney绘画,GPT语音对话+ChatFile文档对话总结+DALL-E3文生图+思维导图一站式解决方案

一、前言 SparkAi创作系统是基于ChatGPT进行开发的Ai智能问答系统和Midjourney绘画系统&#xff0c;支持OpenAI-GPT全模型国内AI全模型。本期针对源码系统整体测试下来非常完美&#xff0c;可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如何搭建部署AI创作Ch…

JUnit 简介

JUnit 是什么&#xff1f; JUnit是一个Java测试框架&#xff0c;主要用于单元测试、集成测试&#xff0c;也可以用于创建自动测试。 JUnit框架是最流行的Java测试框架之一。它提供了一些功能&#xff0c;使编写测试变得容易&#xff0c;包括支持多个测试用例、断言和报告。JUn…

CSS animation动画和关键帧实现轮播图效果HTML

CSS animation动画和关键帧实现轮播图效果HTML 这轮播图效果使用h5和css3实现效果&#xff0c;不需要js控制&#xff0c;但是其中的缺点就是不能使用鼠标进行切换效果。 具有代码如下 <!DOCTYPE html> <html lang"en"><head><meta charset&qu…

华为无线AC内三层漫游配置详解

重要说明 1、在一台ac中实现三层漫游 2、ac和核心的互联vlan和ap的管理vlan是同一个广播域&#xff0c;可以不用配option 43 3、直接转发模式&#xff0c;ac上可以不起业务vlan&#xff0c;ac和核心交换机上可以只放行一个互联vlan 10 4、ac上要启两个vap魔板&#xff0c;两个…

使用JAVA Zookeeper构建分布式键值存储

在这篇文章中,我将使用 JAVA 和网络套接字构建一个简单的分布式键值存储。 我将展示如何在具有多个分区和复制的集群中使用 Zookeeper 作为协调服务。 本系统中Zookeeper服务的功能如下: 维护从服务器到分区的映射,即哪些服务器属于分区“i”。这些数据还可用于推断哪些服务…

flutter 之proto

和嵌入式用proto协议来通信&#xff0c;以mac来演示 先在电脑上安装protobuf&#xff08;在博主文章内容里面搜Mac安装protobuf&#xff09;&#xff0c;然后在桌面上放这几个文件&#xff0c;且build_proto_dart.sh文件内容如图所示 #!/bin/bashSCRIPT$(readlink -f "$0…

【JavaWeb】day01-HTMLCSS

day01-HTML&CSS HTML 图片标签&#xff1a;<img> src&#xff1a;指定图像URL&#xff08;绝对路径/相对路径&#xff09;width&#xff1a;图像宽度&#xff08;像素/相对于父元素的百分比&#xff09;height&#xff1a;图像高度&#xff08;像素/相对于父元素的百…

ubuntu terminator 非常好用的护眼配置

安装 sudo apt install terminator 配置文件&#xff1a;sudo gedit ~/.config/terminator/config &#xff08;如果没有就创建&#xff09; 配置如下&#xff1a; [global_config] handle_size -3 title_transmit_fg_color "#000000" title_trans…

c# label 自定义行间距

label 添加 Paint 事件。用"\n" 段落换行 private void label2_Paint(object sender, PaintEventArgs e){int LineDistance 8;//行间距System.Windows.Forms.Label label sender as System.Windows.Forms.Label;System.Drawing.Font drawFont label.Font;label.Au…

【neo4j】neo4j的安装与使用

【neo4j】neo4j的安装与使用 安装java https://www.oracle.com/java/technologies/downloads/ 按照步骤安装即可 配置环境变量 在系统变量中添加 path变量中添加 安装neo4j https://neo4j.com/deployment-center/ 下载后&#xff0c;在指定位置解压缩 与java相同&#…

R语言【base】——which():给出逻辑对象的 TRUE 索引,允许使用数组索引。

Package base version 4.2.0 Parameters which(x, arr.ind FALSE, useNames TRUE)arrayInd(ind, .dim, .dimnames NULL, useNames FALSE) 参数【x】&#xff1a;逻辑向量或数组。允许省略 NA&#xff08;视作 FALSE&#xff09;。 参数【arr.ind】&#xff1a;逻辑&…

Android MVP 写法

前言 Model&#xff1a;负责数据逻辑 View&#xff1a;负责视图逻辑 Presenter&#xff1a;负责业务逻辑 持有关系&#xff1a; 1、View 持有 Presenter 2、Model 持有 Presenter 3、Presenter 持有 View 4、Presenter 持有 Model 辅助工具&#xff1a;ViewBinding 执行…

ORACLE P6 v23.12 最新虚拟机(VM)全套系统环境分享

引言 根据上周的计划&#xff0c;我简单制作了两套基于ORACLE Primavera P6 最新发布的23.12版本预构建了虚拟机环境&#xff0c;里面包含了全套P6 最新版应用服务 此虚拟机仅用于演示、培训和测试目的。如您在生产环境中使用此虚拟机&#xff0c;请先与Oracle Primavera销售代…

Gpt指引ubuntu安装java8/11

在Ubuntu系统上安装Java环境通常包括以下几个步骤&#xff1a; 更新软件包索引&#xff1a; 在安装新软件之前&#xff0c;最好先更新Ubuntu的软件包索引。这可以确保你安装的是最新版本的软件包。可以使用以下命令来更新&#xff1a; sudo apt update安装Java&#xff1a; U…

云原生|对象存储|minio分布式集群的搭建和初步使用(可用于生产)

前言&#xff1a; minio作为轻量级的对象存储服务安装还是比较简单的&#xff0c;但分布式集群可以大大提高存储的安全性&#xff0c;可靠性。分布式集群是在单实例的基础上扩展而来的 minio的分布式集群有如下要求&#xff1a; 所有运行分布式 MinIO 的节点需要具有相同的访…

亚信安慧AntDB数据并行加载工具的实现(二)

3.功能性说明 本节对并行加载工具的部分支持的功能进行简要说明。 1) 支持表类型 并行加载工具支持普通表、分区表。 2) 支持指定导入字段 文件中并不是必须包含表中所有的字段&#xff0c;用户可以指定导入某些字段&#xff0c;但是指定的字段数要和文件中的字段数保持一…

如何利用ChatGPT来提高编程效率

如何利用ChatGPT来提高编程效率 在当今这个信息爆炸和技术快速发展的时代,程序员们面临着巨大的压力,既要保证代码的质量,又要提高工作效率。幸运的是,人工智能(AI)正在改变我们编写和维护代码的方式,而OpenAI的ChatGPT是其中的佼佼者。本文将讨论如何利用ChatGPT以及结合…

leetcode刷题记录07(2023-04-30)【二叉树展开为链表 | 买卖股票的最佳时机 | 二叉树中的最大路径和(递归) | 最长连续序列(并查集)】

114. 二叉树展开为链表 给你二叉树的根结点 root &#xff0c;请你将它展开为一个单链表&#xff1a; 展开后的单链表应该同样使用 TreeNode &#xff0c;其中 right 子指针指向链表中下一个结点&#xff0c;而左子指针始终为 null 。 展开后的单链表应该与二叉树 先序遍历 顺…

SQL注入安全漏洞详解

1. SQL注入的原理&#xff1a; SQL注入的攻击行为是通过用户可控参数中注入了SQL语法&#xff0c;改变原有SQL结构&#xff0c;以下两种情况可以造成SQL注入&#xff1a; 1.使用字符串拼接的方式构造SQL语句 2.未对用户可控参数进行严格的过滤&#xff0c;便把参数内容拼接到…

AxGlyph安装教程

AxGlyph安装教程 AxGlyph是一款用于创建科学图表的强大工具&#xff0c;以下是AxGlyph的下载和安装步骤。 步骤一&#xff1a;下载AxGlyph 访问下载地址&#xff1a;点击下载 解压安装包 步骤二&#xff1a;运行安装程序 点击AxGlyph_Setup_Win7_8_10.exe进行安装 安装完成…