【Mybatis】基础增删改查

一.创建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.hqwc.cn/news/235003.html

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

相关文章

MMdetection3.0 问题

MMdetection3.0 问题 希望各位路过的大佬指教一下&#xff1a; 问题&#xff1a; 1、NWPU-VHR-10有标注的数据一共650张&#xff0c;我将其分为了455张训练集&#xff0c;195张验证集。 2、然后使用MMdetection3.0框架中的Faster-rcnn网络进行训练&#xff0c;设置训练参数b…

PromptRank:使用Prompt进行无监督关键词提取

论文题目&#xff1a;PromptRank: Unsupervised Keyphrase Extraction Using Prompt   论文日期&#xff1a;2023/05/15(ACL 2023)   论文地址&#xff1a;https://arxiv.org/abs/2305.04490   GitHub地址&#xff1a;https://github.com/HLT-NLP/PromptRank 文章目录 Ab…

[蓝桥杯习题]———位运算、判断二进制1个数

⭐Hello!这里是欧_aita的博客。 ⭐今日语录&#xff1a;行动胜过一切。 ⭐个人主页&#xff1a;欧_aita ψ(._. )>⭐个人专栏&#xff1a; 数据结构与算法&#xff08;内含蓝桥杯习题&#xff09; MySQL数据库 位运算 位运算位运算的定义简单运用 实战刷题题目思路代码实现声…

【Lustre相关】功能实践-01-Lustre集群部署配置

文章目录 一、前言1、关于io5002、关于HPC3、软件架构4、部署方式 二、软件安装1、配置yum源2、内核安装2、服务端安装3、客户端安装4、zfs安装 三、集群部署1、关闭防火墙及SELinux2、配置网络2.1、通用格式2.2、参考示例 3、配置zfs&#xff08;可选&#xff09;3.1、通用格式…

Springboot+vue的客户关系管理系统(有报告),Javaee项目,springboot vue前后端分离项目

演示视频&#xff1a; Springbootvue的客户关系管理系统&#xff08;有报告&#xff09;&#xff0c;Javaee项目&#xff0c;springboot vue前后端分离项目 项目介绍&#xff1a; 本文设计了一个基于Springbootvue的前后端分离的客户关系管理系统&#xff0c;采用M&#xff08…

电商项目之Web实时消息推送(附源码)

文章目录 1 问题背景2 前言3 什么是消息推送4 短轮询5 长轮询5.1 demo代码 6 iframe流6.1 demo代码 7 SSE7.1 demo代码7.2 生产环境的应用 &#xff08;重要&#xff09; 8 MQTT 1 问题背景 扩宽自己的知识广度&#xff0c;研究一下web实时消息推送 2 前言 文章参考自Web 实时消…

用户注册这样玩,保你平安

前言 基本上每个系统系统都包含用户注册、发送验证码等基本操作。在前些年&#xff0c;我还记得我在逛 csdn、贴吧、网易新闻等网站的时候是可以不登陆也能浏览完网页内容的&#xff0c;但是近几年这些网站已经改成了不登陆不让用&#xff0c;浏览网页时不时提醒你要进行登录&…

二分算法(整数二分、浮点数二分)

文章目录 二分一、整数二分&#xff08;一&#xff09;整数二分思路&#xff08;二&#xff09;整数二分算法模板1.左查找&#xff08;寻找左侧边界&#xff09;2.右查找&#xff08;寻找右侧边界&#xff09;3.总模板 &#xff08;三&#xff09;题目&#xff1a;数的范围 二、…

一键删除方舟编译器缓存文件js、js.map插件ArkCompilerSupport

新手学习鸿蒙开发&#xff0c;发现DevEco Studio编译过种会生成js、js.map&#xff0c;在论坛上看了其它开发者也提了问题但无没解决&#xff0c;写了一个插件大家试下&#xff1a; https://plugins.jetbrains.com/plugin/23192-arkcompilersupport 源码&#xff1a;https://g…

咨询+低代码,强强联合为制造业客户赋能

内容来自演讲&#xff1a;沈毅 | 遨睿智库 | 董事长 & 王劭禹 | 橙木智能 | 联合创始人 摘要 文章主要讲述了智库董事长沈毅创办广告公司的经历&#xff0c;以及他在管理公司过程中遇到的问题和挑战&#xff0c;最后通过与明道云以及橙木智能联合创始人王邵禹老师的合作&…

Ubuntu systemd-analyze命令(系统启动性能分析工具:分析系统启动时间,找出可能导致启动缓慢的原因)

文章目录 Ubuntu systemd-analyze命令剖析目录简介systemd与systemd-analyze工作原理 安装和使用命令参数详解用例与示例显示启动时间&#xff08;systemd-analyze time&#xff09;列出启动过程中各个服务的启动时间&#xff08;systemd-analyze blame&#xff09;显示系统启动…