MyBatis 增删改查【后端 17】

MyBatis 增删改查

请添加图片描述

引言

MyBatis 是一个优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解用于配置和原始映射,将接口和 Java 的 POJOs (Plain Old Java Objects, 普通的 Java 对象)映射成数据库中的记录。

在本博客中,我们将通过一系列示例来介绍如何使用 MyBatis 框架结合 MySQL 数据库进行基本的增删改查(CRUD)操作。

环境准备
  1. 安装 MySQL:确保你已经在你的机器上安装了 MySQL,并创建了一个数据库(例如 mybatis_demo)以及一个表(例如 user)。

  2. 添加 MyBatis 依赖:如果你使用 Maven 构建项目,可以在 pom.xml 中添加 MyBatis 和 MySQL JDBC 驱动的依赖。

    <dependencies>  <dependency>  <groupId>org.mybatis</groupId>  <artifactId>mybatis</artifactId>  <version>3.5.6</version>  </dependency>  <dependency>  <groupId>mysql</groupId>  <artifactId>mysql-connector-java</artifactId>  <version>8.0.23</version>  </dependency>  
    </dependencies>
    
  3. 配置 MyBatis:在 src/main/resources 目录下创建 mybatis-config.xml 文件,配置数据库连接信息和 MyBatis 的相关设置。

    <?xml version="1.0" encoding="UTF-8" ?>  
    <!DOCTYPE configuration  PUBLIC "-//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.cj.jdbc.Driver"/>  <property name="url" value="jdbc:mysql://localhost:3306/mybatis_demo?serverTimezone=UTC"/>  <property name="username" value="root"/>  <property name="password" value="password"/>  </dataSource>  </environment>  </environments>  <mappers>  <mapper resource="org/mybatis/example/UserMapper.xml"/>  </mappers>  
    </configuration>
    
创建 User 实体类

在 Java 项目中,创建一个简单的 User 实体类来映射数据库中的 user 表。

public class User {  private Integer id;  private String name;  private Integer age;  // 省略构造方法、getter 和 setter  
}
编写 Mapper 接口和 XML
  1. 创建 Mapper 接口:定义 User 的操作方法。

    public interface UserMapper {  User selectUserById(Integer id);  int insertUser(User user);  int updateUser(User user);  int deleteUser(Integer id);  
    }
    
  2. 编写 Mapper XML:在 src/main/resources 目录下创建 UserMapper.xml,编写 SQL 语句。

    <!DOCTYPE mapper  PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"  "http://mybatis.org/dtd/mybatis-3-mapper.dtd">  
    <mapper namespace="org.mybatis.example.UserMapper">  <select id="selectUserById" resultType="org.mybatis.example.User">  SELECT id, name, age FROM user WHERE id = #{id}  </select>  <insert id="insertUser" parameterType="org.mybatis.example.User">  INSERT INTO user (name, age) VALUES (#{name}, #{age})  </insert>  <update id="updateUser" parameterType="org.mybatis.example.User">  UPDATE user SET name = #{name}, age = #{age} WHERE id = #{id}  </update>  <delete id="deleteUser" parameterType="int">  DELETE FROM user WHERE id = #{id}  </delete>  
    </mapper>
    
使用 MyBatis 进行 CRUD 操作

在 Java 代码中,你可以通过 MyBatis 的 SqlSession 来执行 Mapper 接口中定义的方法。

try (SqlSession session = sqlSessionFactory.openSession()) {  UserMapper mapper = session.getMapper(UserMapper.class);  // 查询  User user = mapper.selectUserById(1);  System.out.println(user);  // 插入  User newUser = new User();  newUser.setName("New User");  newUser.setAge(30);  mapper.insertUser(newUser);  session.commit(); // 不要忘记提交事务  // 更新  newUser.setName("Updated User");  mapper.updateUser(newUser);  session.commit();  // 删除  mapper.deleteUser(newUser.getId());  session.commit();  
}
总结

以上示例展示了如何使用 MyBatis 框架结合 MySQL 数据库进行基本的增删改查操作。通过定义 Mapper 接口和 XML 映射文件,MyBatis 使得数据库操作变得简洁而高效。在实际项目中,可以根据需要扩展 Mapper 接口和 XML 文件,实现更复杂的业务逻辑。

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

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

相关文章

挑战力扣高难度算法、数据库题

一.算法类 1622题,困难,奇妙序列 class Fancy { public:static const int MOD 1e9 7;long long M_total; // cumulative multiplicative factorlong long A_total; // cumulative additive factorvector<long long> val; // original valuesvector<long long> …

PTrade量化服务器连接openapi的地址、key等配置涉及哪些文件?

量化服务器连接openapi的地址、key等配置涉及哪些文件&#xff1f; 1、/home/fly/data/BasicInfo/asset_config.yml中OPEN_API_URL配置为OPENAPI行情地址&#xff1b; 2、/home/fly/config/general_config.conf中client_id配置为OPENAPI行情app_key&#xff0c;client_secret配…

将YYYY-MM-DD HH:mm:ss格式化为YYYY-MM-DD (星期一) 下午 ?点

分为凌晨、早上、中午、晚上 function formatDate(inputDate) {const date new Date(inputDate);date.setHours(date.getHours() - 1);const year date.getFullYear();const month date.getMonth() 1; // 月份从0开始const day date.getDate();let hours date.getHours(…

Spring为什么要用三级缓存解决循环依赖?

Spring为什么要用三级缓存解决循环依赖&#xff1f; 1. Spring是如何创建一个bean对象2. Spring三级缓存2.1 一级缓存&#xff1a;单例池&#xff0c;经历过完整bean生命&#xff0c;单例Bean对象2.2 二级缓存&#xff1a;提前暴露的Bean2.3 三级缓存&#xff1a;打破循环 3. S…

三年 Sparker 都不一定知道的算子内幕

一、如何在 mapPartitions 中释放资源 mapPartitions是一种对每个分区进行操作的转换操作&#xff0c;于常用的map操作类似&#xff0c;但它处理的是整个分区而不是单个元素。mapPartitions的应用场景适合处理需要在每个分区内批量处理数据的场景&#xff0c;通常用于优化性能…

AJAX 进阶 day4

目录 1.同步代码和异步代码 2.回调函数地狱和 Promise 链式调用 2.1 回调函数地狱 2.2 Promise - 链式调用 2.3 Promise 链式应用 3.async 和 await 使用 3.1 async函数和await 3.2 async函数和await_捕获错误 4.事件循环-EventLoop 4.1 事件循环 4.2 宏任务与微任务…

【有啥问啥】对比学习(Contrastive Learning,CL)的原理与前沿应用详解

对比学习&#xff08;Contrastive Learning&#xff0c;CL&#xff09;的原理与前沿应用详解 对比学习&#xff08;Contrastive Learning&#xff09;是自监督学习领域的关键方法之一&#xff0c;近年来因其在图像、文本和跨模态任务上的优越表现&#xff0c;受到了学术界和工…

【重学 MySQL】三十、数值类型的函数

【重学 MySQL】三十、数值类型的函数 基本函数角度与弧度互换函数三角函数指数与对数进制间的转换示例 基本函数 MySQL提供了一系列基本的数值函数&#xff0c;用于处理数学运算和数值转换。以下是一些常用的基本函数及其用法&#xff1a; 函数用法ABS(x)返回x的绝对值。SIGN…

Linux下文件下载中文乱码问题

最近做的一个项目中&#xff0c;本地打包到线上后&#xff0c;发现生成的文件中出现中文乱码&#xff0c;但在本地运行正常。经排查&#xff0c;文件输入输出流都指定了utf-8的编码格式&#xff0c;IDE的File Encodings也都是utf-8&#xff0c;Linux编码格式也是utf-8&#xff…

商务人士必备的精准翻译工具盘点

网易翻译是一款我外出游玩时候必备的翻译工具&#xff0c;最近没出去玩但是有更多的翻译需求了&#xff0c;为了方便在电脑上的操作我也找了不少翻译工具&#xff0c;这次一起分享给大家&#xff0c;看看哪款更得你的眼缘。 1.福昕在线翻译 链接直达&#xff1a;https://fany…

回归预测|基于灰狼优化正则化极限学习机的数据回归预测Matlab程序GWO-RELM 多特征输入单输出

回归预测|基于灰狼优化正则化极限学习机的数据回归预测Matlab程序GWO-RELM 多特征输入单输出 文章目录 一、基本原理1. 极限学习机&#xff08;ELM&#xff09;模型2. 灰狼优化算法&#xff08;GWO&#xff09;3. GWO-RELM回归预测流程总结 二、实验结果三、核心代码四、代码获…

C++——多线程编程(从入门到放弃)

进程&#xff1a;运行中的程序 线程&#xff1a;进程中的进程 线程的最大数量取决于CPU的核心数 一、将两个函数添加到不同线程中 demo&#xff1a;两个函数test01()和test02()&#xff0c;实现将用户输入的参数进行打印输出1000次 将这两个函数均放到独立的线程t1和t2中&…

【优化器】Optimizer——深度学习中的优化器是什么作用呢?

【优化器】Optimizer——深度学习中的优化器是什么作用呢&#xff1f; 【优化器】Optimizer——深度学习中的优化器是什么作用呢&#xff1f; 文章目录 【优化器】Optimizer——深度学习中的优化器是什么作用呢&#xff1f;1.什么是优化器&#xff1f;梯度下降法3. 常见的优化…

在typescript浏览器端中调用C++编写的函数,WebAssembly传递指针类型的参数,以及处理指针类型的返回值。

首先要在Cmake工程中的cmakelists.txt文件中引入Emscripten工具链&#xff1a; set(CMAKE_TOOLCHAIN_FILE "D:/CppPkg/emsdk/upstream/emscripten/cmake/Modules/Platform/Emscripten.cmake")直接看C代码&#xff1a; #include <emscripten/emscripten.h> #i…

鸿蒙开发之ArkTS 基础六 对象

什么是对象的呢&#xff1f;就是描述物体的特征和行为&#xff0c;是可以存储多种数据的容器 对象的定义和使用 let 对象名称: 对象结构类型 值 通过interface 关键字来约定对象结构类型,语法结构如下&#xff1a; interface 对象名{ 属性1&#xff1a;类型 属性2&#…

11.01类的定义和对象的使用(练习)

类的定义 类名&#xff1a;手机(Phone) 成员变量&#xff1a;品牌(brand&#xff09;&#xff0c;价格&#xff08;price&#xff09; 成员方法&#xff1a;打电话(calL)&#xff0c;发短信&#xff08;sendMessage&#xff09; 调用类变量和方法

基于SpringBoot+Vue+MySQL的高校心理教育辅导系统

系统展示 用户前台界面 管理员后台界面 系统背景 随着社会的快速发展&#xff0c;大学生群体面临着日益复杂的学习、生活及就业压力&#xff0c;心理健康问题日益凸显。传统的面对面心理咨询方式因时间、空间等限制&#xff0c;难以满足学生多样化的需求。因此&#xff0c;利用…

基于spring的ssm整合

目录 基于spring的ssm整合 Spring 框架 SpringMVC 框架 MyBatis 框架 1.创建项目 2.导入依赖 3.导入sql 4.创建jdbc.propries文件 1&#xff09;mysql8以下 2&#xff09;mysql8以上的 5.创建mybatis-config.xml配置文件 6.创建spring-Config.xml文件 7.创建项目所需包和类 1&a…

2024-1.2.12-Android-Studio配置

本地博客: https://k1t0111.github.io/ K1T0 最近在做一些app方向的移动技术开发学习&#xff0c;但是由于AS的配置问题&#xff0c;市面上找不到最新的2024版本的AS的相关配置。笔者也是踩了很多坑&#xff0c;因此想写一篇文章记录一下最新的AS 2024 1.2.12的对应java环境的一…

Html css样式总结

1.Html css样式总结 1.1. 定位position 布局是html中非常重要的一部分&#xff0c;而定位在页面布局中也是使用频率很高的方法&#xff0c;本章节为定位在布局中的使用技巧和注意事项。   position定位有4个属性&#xff0c;分别是static(默认&#xff09;&#xff0c;absol…