MyBatis之增、删、查、改

news2024/9/30 19:36:16

目录

前言

一、配置MyBatis开发环境

1.1 创建数据库和表

1.2 添加框架支持

1.3 创建目录结构

1.4 配置数据库连接

1.5 配置MyBatis中的XML文件路径

二、添加业务代码

2.1 查询数据库操作

2.1.1 添加实体类

2.1.2 添加mapper接口

2.1.3 在xml中实现mapper接口

2.1.4 实现service和controller

2.2 修改数据

2.2.1 添加mapper接口

2.2.2 实现mapper接口

2.3 删除数据

2.2.1 添加mapper接口

2.2.2 实现mapper接口

2.4 新增数据

2.2.1 添加mappe接口

2.2.2 实现mapper接口


前言

        MyBatis是一款优秀的持久层框架,它支持自定义SQL、存储过程以及高级映射。MyBatis是基于JDBC实现的,但是比JDBC的操作更加方便,MyBatis可以通过接口和XML来操作数据库。

        简言之,MyBatis是更简单完成程序和数据库交互的工具,也就是说,使用MyBatis可以更简单地操作数据库。

一、配置MyBatis开发环境

1.1 创建数据库和表

既然要使用MyBatis操作数据库,那么前提条件是得有数据库,数据库中要有内容~

-- 创建数据库
drop database if exists mycnblog;
create database mycnblog DEFAULT CHARACTER SET utf8mb4;

-- 使用数据数据
use mycnblog;

-- 创建表[用户表]
drop table if exists  userinfo;
create table userinfo(
    id int primary key auto_increment,
    username varchar(100) not null,
    password varchar(32) not null,
    photo varchar(500) default '',
    createtime datetime default now(),
    updatetime datetime default now(),
    `state` int default 1
) default charset 'utf8mb4';


-- 添加一条测试数据
INSERT INTO `mycnblog`.`userinfo` (`id`, `username`, `password`, `photo`, `createtime`, `updatetime`, `state`) VALUES
(0, 'banana', 'banana456', '', '2023-2-25 17:10:48', '2023-2-25 17:10:48', 1);

1.2 添加框架支持

在创建Spring Boot框架时,添加MyBatis框架和数据库驱动:

1.3 创建目录结构

1.4 配置数据库连接

创建好项目之后,在配置文件中添加数据库的连接配置:

1.5 配置MyBatis中的XML文件路径

在配置文件中添加MyBatis的XML文件路径:

二、添加业务代码

2.1 查询数据库操作

2.1.1 添加实体类

该实体类是对mycnblog数据库中userinfo表的描述,并且需要实现每个字段的get和set方法。

2.1.2 添加mapper接口

2.1.3 在xml中实现mapper接口

MyBatis的xml文件的固定格式:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.demo.mapper.UserMapper">

</mapper>

注意:<mapper>标签中的namespace属性需要填写要实现的接口所在位置(包名+接口名)。

实现UserMapper接口中的getUserByID方法:

<select>是查询标签,用来执行数据库的查询操作,标签中的id属性需要填写要实现的方法名;

resultType属性表示该方法的返回值类型。

使用 #{} 的方式来接收参数。

2.1.4 实现service和controller

实现Service:

实现Controller: 

2.2 修改数据

2.2.1 添加mapper接口

返回值类型为int,表示本次操作影响数据库的行数。 

2.2.2 实现mapper接口

2.3 删除数据

2.2.1 添加mapper接口

2.2.2 实现mapper接口

2.4 新增数据

2.2.1 添加mappe接口

2.2.2 实现mapper接口

useGeneratedKeys:属性值为true表示MyBatis会取出由数据库内部生成的自增主键,默认为false。

keyProperty:表示useGeneratedKeys生成的自增主键赋值给UserInfo对象的哪个属性。

keyColumn:数据库中自增主键名。

区别:addUser方法在插入用户信息后,无法获取到用户id,而addUser2则可以获取到。

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

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

相关文章

【数据挖掘实战】——中医证型的关联规则挖掘(Apriori算法)

目录 一、背景和挖掘目标 1、问题背景 2、传统方法的缺陷 3、原始数据情况 4、挖掘目标 二、分析方法和过程 1、初步分析 2、总体过程 第1步&#xff1a;数据获取 第2步&#xff1a;数据预处理 第3步&#xff1a;构建模型 三、思考和总结 项目地址&#xff1a;Data…

jQuery:入门

jQuery 入门 Date: January 19, 2023 目标&#xff1a; 能够说出什么是 jQuery 能够说出 jQuery 的优点 能够简单使用 jQuery 能够说出 DOM 对象和 jQuery 对象的区别 jQuery 概述 JavaScript 库 仓库&#xff1a; 可以把很多东西放到这个仓库里面。找东西只需要到仓库里…

vue中子组件间接修改父组件传递过来的值

一、前言 Vue官方文档Props单向数据流讲解 Vue中遵循单向数据流&#xff0c;所有的 props 都遵循着单向绑定原则&#xff0c;props 因父组件的更新而变化&#xff0c;自然地将新的状态向下流往子组件&#xff0c;而不会逆向传递。这避免了子组件意外修改父组件的状态的情况&a…

分布式算法 - ZAB算法

ZAB 协议全称&#xff1a;Zookeeper Atomic Broadcast&#xff08;Zookeeper 原子广播协议&#xff09;, 它应该是所有一致性协议中生产环境中应用最多的了。为什么呢&#xff1f;因为它是为 Zookeeper 设计的分布式一致性协议&#xff01;什么是 ZAB 协议&#xff1f; ZAB 协议…

Java基本数据类型

1.概述 佛说&#xff0c;大千世界&#xff0c;无奇不有。在这个世界里&#xff0c;物种的多样性&#xff0c;遍地开花&#xff0c;同样&#xff0c;在Java的世界里&#xff0c;也有着异曲同工之妙&#xff0c;Java秉承面向对象的特性&#xff0c;必然少不了区分对象的类型&…

【安全知识】——端口复用隐藏后门

作者名&#xff1a;白昼安全主页面链接&#xff1a; 主页传送门创作初心&#xff1a; 以后赚大钱座右铭&#xff1a; 不要让时代的悲哀成为你的悲哀专研方向&#xff1a; web安全&#xff0c;后渗透技术每日鸡汤&#xff1a; 精彩的人生是在有限的生命中实现无限价值端口复用是…

【C++】类和对象的六个默认成员函数

类的6个默认成员函数构造函数概念特性析构函数概念特性拷贝构造函数概念特征拷贝构造函数典型调用场景&#xff1a;赋值运算符重载运算符重载赋值运算符重载取地址及const取地址操作符重载类的6个默认成员函数 到底什么是类的6个默认成员函数呢&#xff1f;相信大家一定对此怀…

2023安装archlinux笔记

本文只是个笔记&#xff0c;不是详细教程&#xff0c;仅供参考。 安装过程基本与 《2021年vmware安装archlinux》 https://blog.csdn.net/lxyoucan/article/details/115226297 差不多。 无U盘安装 不想格式化U盘了&#xff0c;直接从硬盘安装。参考一下文章。 《没有U盘纯硬…

什么是全站加速(DCDN)

全站加速&#xff08;DCDN&#xff09; 在阅读本文之前&#xff0c;如果你还没有看过 你管这玩意儿叫CDN 这篇文章&#xff0c;可以先去看一下&#xff0c;然后再来阅读本文&#xff0c;效果会更好一些。 什么是全站加速 全站加速DCDN&#xff08;Dynamic Route for Content…

每日分享(苹果CMS V10仿韩剧TV主题模板源码)

demo软件园每日更新资源,请看到最后就能获取你想要的: ​ 1.低代码引擎技术白皮书 PDF高清版 低代码引擎是一款为低代码平台开发者提供的&#xff0c;具备强大定制扩展能力的低代码设计器研发框架。本白皮书从应用、基础协议和原理三个方面对低代码引擎的技术进行了全面的介绍…

计算机网络体系结构及分层参考模型

文章目录一、分层设计思想的提出二、网络分层的必要性三、什么是计算机网络体系结构四、计算机网络参考模型OSI参考模型/五层参考模型/TCP/IP参考模型一、分层设计思想的提出 最早提出分层思想的是 ARPANET网。1969年11月&#xff0c;美国国防部开始建立一个命名为ARPANET的网络…

c++编程入门到精通(四) 编译过程详解(g++ 编译选项 & cmake编译初解 vscode调试c++)

目录1. g编译基础1.1 g编译过程简述1.2 安装2.g编译过程2.1 g编译选项2.2 g编译实例2.2.1直接编译2.2.2 生成库文件并编译2.2.3 运行可执行文件3. cmake初步3.1 基本特点3.2 CMake基础3.2.1 CMake常见指令3.2.2 CMake常用变量4. CMake编译工程4.1两种方式设置编译规则&#xff…

生活中我们的那些疑惑

在我们日常生活我们大多数都没有天生优势&#xff0c;怎么样让我们创新力和创造力得到最大限度的发挥&#xff1f;也是决定我财商的大小的基础。通过学习努力不断提升我们自身的认知&#xff0c;把认知不确定性尽量降低。 在认知方面&#xff0c;积极情绪最大的作用是让我们更愿…

(四十一)Read Committed隔离级别是如何基于ReadView机制实现的?

今天我们来给大家讲一下&#xff0c;基于之前我们说的ReadView机制是如何实现Read Committed隔离级别的&#xff0c;那么当然了&#xff0c;首先就是要先做一些简单的回顾。所谓的Read Committed隔离级别&#xff0c;我们可以用骚气一点的名字&#xff0c;就是简称为 RC 隔离级…

Java开发环境搭建

什么是JDK、JREJVM 简介JDK下载Hello WorldJava程序开发的三个步骤编写编译运行什么是JDK、JRE JDK &#xff08; J ava D evelopment K it&#xff09;&#xff1a;是Java程序开发工具包&#xff0c;包含JRE和开发人员使用的工具。JRE&#xff08;Java Runtime Environment&a…

数据库管理-第五十八期 倒腾PDB(20230226)

数据库管理 2023-02-26第五十八期 倒腾PDB1 克隆本地PDB2 没开归档总结第五十八期 倒腾PDB 其实本周过的不大好&#xff0c;连着两天熬夜&#xff0c;一次是割接一次是处理ADG备库的异常&#xff0c;其实本周有些内容是以前处理过的问题&#xff0c;到了周末还肚子痛。哎… 1…

【数据库】 第11章 并发控制

第11章 并发控制 事务 事务&#xff1a;(从微观角度&#xff0c;或者从DBMS角度)是数据库管理系统提供的控制数 据操作的一种手段&#xff0c;通过这一手段&#xff0c;应用程序员将一系列的数据库操作组合 在一起作为一个整体进行操作和控制&#xff0c;以便数据库管理系统能…

【Linux驱动开发100问】什么是Linux内核?

&#x1f947;今日学习目标&#xff1a;什么是Linux内核&#xff1f; &#x1f935;‍♂️ 创作者&#xff1a;JamesBin ⏰预计时间&#xff1a;10分钟 &#x1f389;个人主页&#xff1a;嵌入式悦翔园个人主页 &#x1f341;专栏介绍&#xff1a;Linux驱动开发100问 什么是Lin…

SpringMVC源码:DispatcherServlet初始化流程

参考资料&#xff1a; 《SpringMVC源码解析系列》 《SpringMVC源码分析》 《Spring MVC源码》​​​​​​​ 写在开头&#xff1a;本文为个人学习笔记&#xff0c;内容比较随意&#xff0c;夹杂个人理解&#xff0c;如有错误&#xff0c;欢迎指正。 目录 前文 1、简介 2…

Java实现简单KV数据库

用Java实现一个简单的KV数据库 开发思路&#xff1a; 用map存储数据&#xff0c;再用一个List记录操作日志&#xff0c;开一个新线程将List中的操作写入日志文件中&#xff0c;再开一个线程用于网络IO服务接收客户端的命令&#xff0c;再启动时检查日志&#xff0c;如果有数据就…