mybits相关知识点

news2024/9/24 5:25:26

这里写目录标题

  • 入门
    • 第一个程序
      • 步骤
      • 配置sql,建立数据库连接
    • jdbc
    • 数据库连接池
      • 简介
      • 连接池的切换
      • 总结
    • lombok
  • Mybatis基础操作(注解)
    • 准备工作
      • 类型对应
    • 删除
      • 简介
      • 具体代码
    • 预编译
      • 简介
      • 优点
        • 优点1
        • 优点2
      • 预编译的实现
      • 总结
    • 新增
      • 简介
      • 具体代码
    • 新增(主键返回)
    • 更新
      • 简介
      • 具体代码
    • 查询(根据ID)
      • 简介
      • 具体代码
      • bug
        • 简介
        • 解决方案
        • 着重采用方案三
    • 查询(根据条件)
      • 简介
      • 具体代码
  • 基础操作(xml映射文件)
    • 简介
    • 配置
    • 总结
  • 动态SQL
    • 问题分析
    • if标签
      • 概要
      • 补充
      • 总结
    • foreach标签
      • 简介
      • 案例,一般用于批量操作
    • sql include标签
      • 简介
    • 小结

入门

第一个程序

步骤

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
注意这里主方法是一个接口,上面要加一个Mapper注解,这样就可以系统生成一个实例化对象,并放入IOC池中,成为bean
在这里插入图片描述
通过依赖注入的方式,实例化接口,激活接口,之后在测试类中调用接口方法,得到返回值,并通过stream流遍历

配置sql,建立数据库连接

在这里插入图片描述

jdbc

在这里插入图片描述
在这里插入图片描述

数据库连接池

简介

在这里插入图片描述

连接池的切换

在这里插入图片描述
在这里插入图片描述

总结

在这里插入图片描述

lombok

在这里插入图片描述
用于简化实体类的代码量

效果:
在这里插入图片描述

Mybatis基础操作(注解)

准备工作

类型对应

在这里插入图片描述
类名与表名保持一致

删除

简介

在这里插入图片描述

具体代码

在这里插入图片描述
在mapper包下的接口中,定义一个方法,因为是在接口中,所以是抽象方法,没有方法体
之后在方法上面加一个注解,如果是删除,就加删除注解@Delect(“”)
引号里面写具体的sql语句
这里注意有一个变量定义方法:#{id},这里会把抽象方法的参数传入进来

在这里插入图片描述
之后去测试类当中,依赖注入,测试调用即可

预编译

简介

在这里插入图片描述
传递给数据库的是一个待填入数据的占位符,是一个问号

优点

优点1

在这里插入图片描述

优点2

更加安全

例子
sql注入,对于不是预编译的代码,会采用拼接的方式,这样就有bug,可以通过填入的数据更改代码逻辑,如下
在这里插入图片描述
在这里插入图片描述
经过数据拼接,数据逻辑被更改,所以不安全,而预编译就不会有这样的bug

预编译的实现

在这里插入图片描述
一般采用第一个

总结

在这里插入图片描述

新增

简介

在这里插入图片描述

具体代码

在这里插入图片描述
在接口中,当参数有多个时,可以用一个实体类进行封装,之后在注解的语句中,直接#{类的属性值}

而在测试类中,需要定义该类的对象,之后对该对象赋值,并调用接口的对应方法,如下图
(注意上方还有一个依赖注入,用来创建接口对象)
在这里插入图片描述

新增(主键返回)

在这里插入图片描述
用于添加完数据之后,返回一个主键

代码
在这里插入图片描述
这是接口中,在接口上方加入注解 true表示启用注解,id表示将主键封装到对象的id属性中

在这里插入图片描述
(注意上方还有一个依赖注入,用来创建接口对象)
之后在测试类中可以输出对象的id,也就是主键,

因为接口包是用来跟数据库联系的,所以接口中只能完成与数据库的联系操作,其他操作大部分放在册数类中进行
而,测试类中利用接口调用方法的操作,实际上可以理解为上传数据至数据库

更新

简介

在这里插入图片描述

具体代码

在这里插入图片描述
接口中与添加操作差不多,都是利用实体类进行编码

在这里插入图片描述
(注意上方还有一个依赖注入,用来创建接口对象)
测试类中,也是创建类的对象,利用对象赋值,这样数据就被封装进了对象里,再利用接口调用方法

查询(根据ID)

简介

在这里插入图片描述

具体代码

在这里插入图片描述
这是接口中的代码,直接创建一个方法,方法的返回值类型是一个实体类,参数是id值,意思为将查询到的数据封装到一个对象当中

在这里插入图片描述
(注意上方还有一个依赖注入,用来创建接口对象)

这是测试类,创建测试方法之后,调用接口方法返回一个对象,直接输出该对象。(之所以可以直接输出该对象,是因为该对象的类在定义时有toString方法,所以直接输出对象,可以输出可读信息)

bug

简介

在这里插入图片描述
当数据库中的字段名与实体类的属性名不一致的时候,无法完成自动封装

解决方案

在这里插入图片描述
具体代码
在这里插入图片描述
在这里插入图片描述

着重采用方案三

适用于数据库的字段名与实体类的属性名,区别在于下划线
例如 数据库字段名:user_name 实体类属性名:userName

在这里插入图片描述
直接在resources下 application里配置打开自动转换开关,设置为true即可

查询(根据条件)

简介

在这里插入图片描述

具体代码

接口方法
在这里插入图片描述
这里采用一个拼接函数,可以将字符串拼接起来,防止#{}出现在引号当中,引起错误

因为查询到不止一条记录,所以返回不止一个对象,所以要用一个list<类>集合来保存返回值,参数是查询的条件

在这里插入图片描述
(注意上方还有一个依赖注入,用来创建接口对象)

测试类当中,直接传入参数即可

基础操作(xml映射文件)

简介

在这里插入图片描述

配置

在这里插入图片描述
在resources文件下创建一个包,右键选择Directory 之后不要用点分隔,而是用/,如上图

在这里插入图片描述
之后右键创建文件,文件名与接口类的名字保持一致

进入该文件之后,要先去官网复制下来一段配置文本,直接搜“Mybatis中文网 找到配置文件即可”(入门 然后下滑,找到如下图标注的部分即可)在这里插入图片描述

在这里插入图片描述
再之后按照如上图所示的格式配置sql语句即可

注意先写一个《mapper》
之后在namespace后面是接口的全路径(一般只需配置一次,因为mapper标签在一个xml文件里只有一个,他是最大的标签),在id后面是接口的方法名,在resultType后面是返回值类型,当返回值为一个实体类时,要写全路径

里面sql语句跟注解写sql一样

以下是关于查找全路径的快捷键
在这里插入图片描述

这里有一个小技巧
在这里插入图片描述
对于接口方法,选中方法名,直接alt+回车,就可以自动在xml文件里生成相关功能的标签(前提是方法名要有其功能相关的单词,例如本图中的update),并且写好了id,如下图
在这里插入图片描述
无返回值,就不用再去写其他标签

总结

在这里插入图片描述
包的名称要跟接口一致,而不是真正放在同一个包下

动态SQL

问题分析

在这里插入图片描述
因为我们的sql语句,对于某些参数设置死了,用户必须去对这些参数赋值,否则会查询不到,或者更新空值等问题
所以需要动态的进行sql语句的控制

if标签

概要

在这里插入图片描述
在这里插入图片描述
在xml文件中,先ctrl+alt+v 格式化一下sql代码,之后将where改成where标签,里面每一段sql都用if标签判断,test=“” 引号里面写判断条件
在这里插入图片描述

补充

在这里插入图片描述
在update语句中,要用逗号拼接,所以这里用set标签,会自动去除标签,注意只能自动去除,不能自动添加,所以在编写时,要加上逗号(以及上面where标签内sql语句要加上and)
在这里插入图片描述

总结

在这里插入图片描述

foreach标签

简介

在这里插入图片描述

案例,一般用于批量操作

在这里插入图片描述
xml文件

在这里插入图片描述
接口方法

在这里插入图片描述
测试类

sql include标签

简介

在这里插入图片描述
用于提取出重复性强的代码部分,效果相当于java编码中的方法

具体代码
在这里插入图片描述

在这里插入图片描述

小结

在这里插入图片描述

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

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

相关文章

如何发布插件到npm

首先 你需要注册一个npm账号 npm 网址&#xff1a;https://www.npmjs.com/ 点击 Sign in 跳转到登录页面 点击 Create Account 进行一个新建账户 注册完成后会有一封邮件发送一个一次性密码&#xff0c;到时候验证一下就行。 登录完成之后 点击你的头像 点击Account 进行验证…

ORA-01940 处理方法

问题描述 在删除用户时&#xff0c;提示 ORA-01940&#xff1a;无法删除当前连接的用户 处理方法 出现这种错误&#xff0c;是因为当前用户有连接的session。 1.通过如下语句查询对应的连接&#xff1a; select sid,serial# from v$session where usernameTSAI结果如下&am…

BACnet资料整理

BACnet stack 链接: link VS2019工程有几个编译错误&#xff0c;文件没有加入工程中 https://bacnet.sourceforge.net/ 使用该协议栈生成的几个工具 https://sourceforge.net/projects/bacnet/files/bacnet-tools/ BACnet stack BACnet基础 https://wenku.baidu.com/view/bd…

用OpenCV进行传统图像分割

1. 引言 欢迎回来&#xff0c;我的图像处理爱好者们&#xff01;本文我们将直接进入传统图像分析的新领域——图像分割&#xff0c;这是指将图像分成若干具有相似性质的区域的过程&#xff0c;从数学角度来看&#xff0c;图像分割是将图像划分成互不相交的区域的过程。 闲话少…

上海亚商投顾:沪指高开高走涨1.31% 汽车整车板块领涨

上海亚商投顾前言&#xff1a;无惧大盘涨跌&#xff0c;解密龙虎榜资金&#xff0c;跟踪一线游资和机构资金动向&#xff0c;识别短期热点和强势个股。 市场情绪 三大指数今日集体反弹&#xff0c;沪指全天高开高走&#xff0c;深成指、创业板指午后有所回落。中字头及以保险为…

3.FreeRTOS系统源码移植

目录 一、获取FreeRTOS源代码 二、FreeRTOS系统源码内容 三、FreeRTOS系统源码移植 一、获取FreeRTOS源代码 来FreeRTOS官方网站:https://www.freertos.org/ 我这里主要提供的是例程为FreeRTOS的V10.4.6版本 1、进入官网&#xff0c;点击Download FreeRTOS 2、点击Downl…

数分面试题-SQL高频考点

目录标题 1、SQL语言分类2、join连接3、列转换3.1 列转行3.2 行转列 4、分页查询5、字符串处理函数5.1 字符函数5.2 数学函数5.3 日期函数 6、索引6.1 什么是索引6.2 建立索引的优缺点6.3 索引有哪些6.4 索引为什么快6.5 什么情况下加索引6.6 怎么知道索引用没用上6.7 用过组合…

Axure教程—中继器删除与批量删除

本文介绍的是用Axure中的中继器实现删除与批量删除效果 效果 功能 1、选中某项数据删除&#xff0c;删除后提示“删除成功” 2、选择多项数据删除&#xff0c;删除后提示“删除成功”&#xff0c;如果不选取数据&#xff0c;点击”批量删除“按钮&#xff0c;提示”请至少选择…

SNMP 计算机网络管理 一文理清-管理信息库,OID,MIB结构树,SNMP协议体系结构

⬜⬜⬜ &#x1f430;&#x1f7e7;&#x1f7e8;&#x1f7e9;&#x1f7e6;&#x1f7ea;(*^▽^*)欢迎光临 &#x1f7e7;&#x1f7e8;&#x1f7e9;&#x1f7e6;&#x1f7ea;&#x1f430;⬜⬜⬜ ✏️write in front✏️ &#x1f4dd;个人主页&#xff1a;陈丹宇jmu &am…

Java接口详解

目录 接口方法 接口的属性 接口方法 在Java设计的时候, 我们所说的接口,不同于类,我们尝尝希望一个类能满足某个特定的功能,或者需求. 我们在使用Arrays类中的sort方法对对象数组进行排序,但是对象所属的类必须实现Comparable接口: 可以看到里面只有一个方法: public inter…

【动态规划算法】第二题:⾯试题08.01.三步问题

&#x1f496;作者&#xff1a;小树苗渴望变成参天大树 &#x1f389;作者宣言&#xff1a;认真写好每一篇博客 &#x1f38a;作者gitee:gitee 如 果 你 喜 欢 作 者 的 文 章 &#xff0c;就 给 作 者 点 点 关 注 吧&#xff01; 文章目录 前言 前言 今天我们开始讲解动态规…

MySQL数据库总结 之 约束(restraint) 外键约束

前三篇关于MySQL的博客&#xff0c;地址如下&#xff1a; 1. MySQL数据库 && SQL语言命令总结 && 数据类型、运算符和聚合函数汇总_Flying Bulldog的博客-CSDN博客 2. 从0到1 && 关于MySQL的数据库和表_Flying Bulldog的博客-CSDN博客 3. MySQL数据…

Protobuf实现序列化和反序列化详细步骤

步骤1&#xff1a;添加对应的依赖 <dependency><groupId>com.google.protobuf</groupId><artifactId>protobuf-java</artifactId><version>3.7.1</version> </dependency>步骤2&#xff1a;编写bulid.bat文件执行&#xff0c…

react组件--npm发包总过程(超全教程!建议收藏!)

npm发包总过程 npm账号登录注册&#xff08;已有账号可跳过&#xff09;登录验证是否登录成功创建组件项目目录图新建文件夹&#xff0c;并初始化安装依赖/src/index.js --打包入口文件src/components/button/index.js --组件逻辑代码src/components/button/index.css --组件逻…

10 次面试 9 次被刷?吃透这 500 道大厂 Java 高频面试题后,怒斩 offer

很多 Java 工程师的技术不错&#xff0c;但是一面试就头疼&#xff0c;10 次面试 9 次都是被刷&#xff0c;过的那次还是去了家不知名的小公司。 问题就在于&#xff1a;面试有技巧&#xff0c;而你不会把自己的能力表达给面试官。 应届生&#xff1a;你该如何准备简历&#x…

verilog HDL -生成块 - generate——endgenerate

参考&#xff1a;vrilog数字系统设计 夏宇闻 【第3版】 5.7 生成块理解 生成语句可以动态的生成verilog代码&#xff0c;方便参数化模块的生成&#xff0c;大大的简化程序的编写过程,常用于以下情况&#xff1a; 对矢量中的多个位进行重复操作进行多个模块的实例引用的重复操…

Anacoda3中成功配置Tesseract-OCR超详细教程!!(win7、win10)

Anacoda3中成功配置Tesseract-OCR Tesseract-OCR简介安装及配置环境步骤1、在Anaconda虚拟环境中安装pytesseract第三方库2、下载tesseract-ocr安装包并安装3、环境配置检验是否安装成功修改pytesseract.py文件&#xff08;很重要&#xff01;&#xff09; Tesseract-OCR简介 …

C语言常用的数据转换函数

编程时&#xff0c;经常用到进制转换、字符转换。现整理记录如下&#xff1a; 一、字符串转十六进制 void StrToHex(char *pbDest, char *pbSrc, int nLen) {char h1,h2;char s1,s2;int i;for (i0; i<nLen/2; i){h1 pbSrc[2*i];h2 pbSrc[2*i1];s1 toupper(h1) - 0x30; …

ASP.NET Core MVC -- 控制器

添加控制器 访问测试 默认控制器访问index public string Index() {return "This is my default action..."; }特定访问路径 public string Welcome() {return "This is the Welcome action method..."; } 特定路径访问&#xff0c;带参数 public str…

查询Oracle当前用户下,所有数据表的总条数

需求&#xff1a;查询Oracle当前用户下&#xff0c;所有数据表的总条数 方法&#xff1a;存储过程 右键点击Procedures&#xff0c;点击New 点击OK 把存储过程写进去&#xff0c;然后点击编译运行&#xff1a; create or replace procedure tables_count ist_count numbe…