【Mybatis】基础增删改查

news2024/11/18 14:57:24

一.创建SpringBoot项目

创建新项目需要添加的依赖

当然如果是以前的项目也可以直接在pom.xml文件中添加依赖:

MySQL Driver依赖

<dependency>
    <groupId>com.mysql</groupId>
    <artifactId>mysql-connector-j</artifactId>
    <scope>runtime</scope>
</dependency>

Mybatis Frameworl依赖

<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>2.3.1</version>
</dependency>

还有第二种方式导入依赖

>pom.xml文件里面

>右击generate        >Edit Starters

>勾选对应的依赖,点击OK即可.

二.Mybatis

Mybatis的写法有两种

1.xml

2.注解

步骤

1.引入Mybatis依赖  引入对应数据库的依赖,比如mysql

2.配置数据库的相关信息

3.定义Java对象

4.写实现

企业建表规约

参考阿里建表规约

1.字段名/表名 全部小写

2.表必备三字段

id

gmt_create创建时间

gmt_modifies修改时间

3.逻辑删除和物理删除

逻辑删除:指从逻辑上进行数据删除

物理删除:从硬盘上进行数据删除 delete

单元测试

在需要写单元测试的类中,右键点击generate,选择Test

配置mybatis相关日志

#指定mybatis输出⽇志的位置, 输出控制台

mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl

建议只出现在开发环境中,不要出现在线上环境

日志的打印,也是影响性能的 ;

灰度发布:是指发布环境 . 比如发布环境有200台,发布的时候是一批一批的发布 .

通常在刚开始的时候发布1台,也就是观察一段时间后,如果没有问题,继续下一批.

传递参数

如果只有一个参数, sql的名称可以是任意的.

三.注解方式

1.添加

//设置返回自增id
    @Options(useGeneratedKeys = true,keyProperty = "id")
    @Insert("insert into userinfo (username,password,age,gender,phone)"+
    "values(#{username},#{password},#{age},#{gender},#{phone})")
    Integer insert(UserInfo userInfo);

2.删除

@Select("select * from userinfo")
    List<UserInfo> selectAll();

3.修改

@Update("update userinfo set age=#{age} where id=#{id}")
    Integer update(UserInfo userInfo);

4.查询

@Select("select * from userinfo")
    List<UserInfo> selectAll2();

结果映射

Mybatis会自动的根据数据库的字段名和Java对象的属性名,进行映射,如果名称一样就进行赋值

注解方式有3种方式进行结果映射

4.1对mysql的字段进行重命名

4.2使用注解的方式

@Results注解映射 , 再用@ResultMap注解复用映射

4.3配置的方式

在配置文件中配置已以下内容,mysql字段就会完成自动转驼峰

注意:注解和xml方式是可以共存的

四.xml方式

xml的方式比注解方式稍微复杂一点,分为以下三步 :

1.配置数据库

和注解方式一样

2.指明xml的路径

在配置文件中指明xml的路径,写入以下内容

# 配置 mybatis xml 的⽂件路径,在 resources/mapper 创建所有表的 xml ⽂件 mapper:

mybatis.mapper-locations: classpath:mapper/**Mapper.xml

注意:路径名是程序员自定义的

3.写xml的实现

这是一个例子:

接口的定义

实现

xml文件配置SQL , 下面是模板

<?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">

        //namespace更改成具体要要构造mapper类的全限定路径
<mapper namespace="com.example.mybatisforbit.mapper.UserInfoXMLMapper"> 

       
 

</mapper>

结果类型就是返回的类型,不管返回的是对象还是list,此处定义的都是返回的数据的类型,比如这里返回的是UserInfo类型的数据.

namespace表示要实现哪个接口,要写全限定类名.

3.1添加

实现

重命名

3.2删除

3.3修改

3.4查询

结果映射

回忆注解方式中结果映射的三种解决方法

1.给sql字段起别名

2.@Result注解

3.配置自动转驼峰

mybatis.configuration.map-underscore-to-camel-case:true#配置驼峰⾃动转换

  

xml的结果映射 1和3 方式都是可以的.

除此之外还有一种与@Results相似的方式: 利用<resultMap>标签来进行数据库字段名和类属性的映射.

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

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

相关文章

如何通过 Al 的能力提升编程的效率?

通过人工智能&#xff08;AI&#xff09;的技术&#xff0c;可以提升编程效率和能力。以下是一些建议和方法&#xff1a; 代码自动生成&#xff1a;使用AI技术&#xff0c;可以根据程序员的需求和输入&#xff0c;自动生成代码。这可以提高编程效率&#xff0c;减少编写代码所需…

Fedora 36 ARM 镜像源更换与软件安装

1、什么是Fedora Fedora Linux是较具知名度的Linux发行套件之一&#xff0c;由Fedora专案社群开发、红帽公司赞助&#xff0c;目标是建立一套新颖、多功能并且自由的作业系统。 Fedora是商业化的Red Hat Enterprise Linux发行版的上游原始码。 2、Fedora软件安装 64 位 .deb&a…

Python pandas数据分析

Python pandas数据分析&#xff1a; 2022找工作是学历、能力和运气的超强结合体&#xff0c;遇到寒冬&#xff0c;大厂不招人&#xff0c;可能很多算法学生都得去找开发&#xff0c;测开 测开的话&#xff0c;你就得学数据库&#xff0c;sql&#xff0c;oracle&#xff0c;尤其…

Linux shell编程学习笔记29:shell自带的 脚本调试 选项

Linux shell脚本的调试方法比较多&#xff0c;上次我们探讨和测试了shell内建命令set所提供的一些调试选项&#xff0c;其实 shell 本身也提供了一些调试选项。我们以bash为例来看看。 1 bash 的命令行帮助信息&#xff08;bash --help&#xff09; purleEndurer csdn ~ $ ba…

带你用uniapp从零开发一个仿小米商场_3.animate.css动画库在uniapp中的使用

这篇文章仅做简单介绍animate.css动画库在uniapp中如何使用 animate.css动画库引入 怕有人没看专栏前面的文章,所以这里重新介绍一边animate.css动画库的引入,知道的可以跳过 可以在这里下载 animate.css动画库官网http://www.animate.net.cn/ 下载好animate.css后在项目根…

5.2每日一题(无穷级数敛散性:绝对收敛、比较法/比较法的极限形式、p级数)

一般看到绝对收敛和条件收敛——先看级数绝对值的敛散性

ubuntu修改系统语言

修改ubuntu系统语言 操作指令修改系统设置总结 操作 ubuntu系统自带的英文环境&#xff0c;个人觉得用起来不方便。改掉吧。换成中文 指令修改 参考了一些博客的解决方式 ctrlartT 打开终端。 sudo apt-get install language-pack-zh-hans 输入下载汉化包的指令。 但是&…

SpringMVC系列-7 @CrossOrigin注解与跨域问题

背景 前段时间帮同事分析了一个跨域问题&#xff0c;正好系统分析和整理一下。 1.跨域 理解同源策略是理解跨域的前提。同源策略定义如下&#xff1a; 在同一来源的页面和脚本之间进行数据交互时&#xff0c;浏览器会默认允许操作&#xff0c;而不会造成跨站脚本攻击&#x…

ImportError: No module named python_util.util

ImportError: No module named python_util.util 从师兄那里拷贝了一个python文件&#xff0c;运行报错ImportError: No module named python_util.util&#xff0c;python小白上网搜&#xff0c;并没有搜到有价值的答案。。。经过摸索&#xff0c;最后解决。 其实这就是缺少…

vue3+elementPlus之侧边菜单栏功能

选择默认的颜色&#xff0c;将代码拷贝至<el-aside>模块中 稍微把不需要的修改一下。 <template><div class"common-layout"><el-container><el-header class"homeHeader"><div class"headerTitle">Devops…

抖音权重查询源码H5源码

源码下载&#xff1a;123网盘

Linux的基本指令 ( 一 )

目录 前言 Linux基本指令 快速认识五个指令 ls指令 补充内容 pwd指令 补充内容 cd指令 补充内容 重新认识指令 指令的本质 which指令 alias指令 最后 一个文件的三种时间 tree指令及安装 tree指令 前言 关于Linux操作系统的桌面&#xff0c;在学校教学中我们…

共享模型之内存

JMM JMM&#xff1a;Java内存模型。定义了主存&#xff08;所有线程共享的数据&#xff09;、工作内存&#xff08;每个线程对应的私有数据&#xff09;的抽象概念。 JMM存在以下几个特征 原子性&#xff1a;保证指令不会受到线程上下文切换所影响。可见性&#xff1a;保证指…

C语言—什么是数组名

#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h> int main() {int arr[]{1,2,3,4};printf("%p\n",arr);printf("%p\n",&arr);printf("%p\n",*arr);return 0; } 结论&#xff1a;数组名是数组首元素地址&#xff08;下标为0的元素…

PC端从零搭建微信自动回复机器人(一)基础框架搭建及源码

由于工作需要&#xff0c;最近一年一直在研究和使用C#&#xff0c;加上最近工作上有做微信机器人的需要&#xff0c;在已经对接、调试稳定之后&#xff0c;将项目的源码分享给大家&#xff0c;传递开源精神。 一、环境依赖 1、开发工具&#xff1a;Vistual Studio 2022 2、Ne…

【FFmpeg视频解码】解码数据结构及函数总结

转载自原文地址&#xff1a;https://www.cnblogs.com/wangguchangqing/p/5744941.html 本文的总结分为以下两个部分&#xff1a; 数据读取&#xff0c;主要关注在解码过程中所用到的FFmpeg中的结构体。解码过程中所调用的函数 在学习的过程主要参考的是dranger tutorial&…

从零开始搭建博客网站-----源代码试部署

拿到了该项目的源码&#xff0c;先尝试是否可以成功部署&#xff0c;详细的部署视频地址 后端项目部署 先把maven配置好&#xff0c;都改成自己下载的maven地址 文件编码改成utf-8&#xff0c;防止配置文件乱码 如果maven是刚下的&#xff0c;要改一下下载包的地址&#xff0…

使用信息面板沟通研发工作

凌鲨里面的内容面板里面有专门针对研发团队的白板功能&#xff0c;它可以把文档&#xff0c;图片&#xff0c;软件设计&#xff0c;需求&#xff0c;任务/缺陷等相关研发要素串接起来。 使用 你还可以调整背景颜色。 引用项目内数据 点击面板中的连接会在右侧打开对应内容

电子学会C/C++编程等级考试2021年12月(二级)真题解析

C/C++等级考试(1~8级)全部真题・点这里 第1题:统计指定范围里的数 给定一个数的序列S,以及一个区间[L, R], 求序列中介于该区间的数的个数,即序列中大于等于L且小于等于R的数的个数。 时间限制:1000 内存限制:65536输入 第一行1个整数n、,分别表示序列的长。(0 < n…

浅谈建筑节能监管平台在高校能源管理中的实践与应用

安科瑞 华楠 摘要&#xff1a;以节约型校园建设示范工程———宁夏大学节能监管平台项目建设为例&#xff0c;对系统的总体构架、关键技术、管理软件功能进行了详细的介绍。同时针对项目建设、运行和管理过程中出现的一些问题&#xff0c;提出有针对性的解决措施&#xff0c;为…