MyBatis基础使用

MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。

1)创建的springboot工程中,在application.properties中配置MyBatis相关连接信息:

#配置数据库的连接信息
#驱动类名称
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
#数据库连接的url地址
spring.datasource.url=jdbc:mysql://地址
#连接数据库的用户名
spring.datasource.username=用户名
#连接的密码
spring.datasource.password=密码

2)创建mapper接口类:

/*** 三层架构的数据处理层*/
@Mapper // 表示程序在运行时,会自动生成该接口的实现类对象,将对象交给IOC容器管理
public interface EmpMapper {
​/*** 定义查询接口* @return 所有查询的结果*/@Select("select * from tb_emp")  // 表示该接口是查询接口public List<User> insert();
​/*** 定义删除接口* @param id 通过指定的ID删除,#{}最后会被?替代形成预编译sql,${}是拼接有sql注入的风险*/@Delete(value = "delete from tb_emp where id = #{id}")public void delete(Integer id);
​
}

3)配置sql提示:

4)配置mybatis日志信息:

# 配置mybatis日志信息,输出到控制台
mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl

5.1、JDBC介绍

jdbc:就是使用java语言操作关系型数据库的一套API,他只是接口,实现由各个数据库厂商实现,各个厂商实现的又叫数据库的驱动,由于JDBC操作赋值,效率低下,就有mybatis框架进行封装简化开发,提高效率

5.2、数据库连接池

转换数据库连接池时,只需要引入对应的依赖

5.3、lombok

5.4、主键返回

在添加数据成功后,需要获取插入数据库数据的主键,需要在插入数据的方法前面添加@Options(keyProperty="id",useGeneratedKeys=true)进行标识

5.5、数据封装

  • 实体类属性名 和 数据库表查询返回的字段名一致,mybatis会自动封装,

  • 如果实体类属性名 和 数据库表查询返回的字段名不一致,不能自动封装

解决方法:

5.6、XML映射文件

配置xml映射文件的约束:mybatis官网入门有相关配置,不需要记忆

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper></mapper>

使用IDEA中的mybatisx插件可以标识映射文件

5.7、动态sql

随着用户的输入或外部条件变化也变化的sql语句,称为动态sql

  • <if>:用于判断条件是否成立,使用text属性进行条件判断,如过条件为true,则拼接

  • <where>:where标签只会在子元素有内容的情况下插入where子句,而且还会自动去除子句开头的and或or

  • <set>:动态的在行首插入set关键字,并会删掉额外的逗号

<select id="接口名" resultType="com.springmybatis.pojo.User">select *from tb_emp<where><if test="name != null">name like concat('%', #{name}, '%')</if><if test="gender != null">and gender = #{gender}</if><if test="start != null and end != null">and entryDate between #{start} and #{end}</if></where>order by updateTime desc</select>
​<update id="接口名">update tb_emp<set><if test="userName != null ">userName=#{userName},</if><if test="name != null ">name=#{name},</if><if test="gender != null ">gender=#{gender},</if><if test="userName != null ">image=#{image},</if><if test="image != null ">job=#{job},</if><if test="entryDate != null ">entryDate=#{entryDate},</if><if test="deptId != null ">dept_id = #{deptId},</if><if test="updateTime != null ">updateTime=#{updateTime}</if>where id = #{id}</set></update>
  • <forearch>:配合删除多个的时候使用

  • <sql>和<include>:定义重复sql时使用

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

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

相关文章

2024 年(第 12 届)“泰迪杯”数据挖掘挑战赛——A 题:生产线的故障自动识别与人员配置具体思路以及源代码分析

一、问题背景 随着新兴信息技术的大规模应用&#xff0c;工业生产线的智能化控制技术日益成熟。自动生产线 可以自动完成物品传送、物料填装、产品包装和质量检测等过程&#xff0c;极大地提高了生产效率和 产品质量&#xff0c;减少了生产成本。自动生产线融入故障智能报警…

HTML CSS入门:从基础到实践

&#x1f310; HTML & CSS入门&#xff1a;从基础到实践 &#x1f3a8; &#x1f4d6; 引言 HTML和CSS是构建网页的基石。HTML&#xff08;超文本标记语言&#xff09;用于创建网页内容&#xff0c;而CSS&#xff08;层叠样式表&#xff09;则用于美化这些内容。无论你是…

Blocks —— 《Objective-C高级编程 iOS与OS X多线程和内存管理》

目录 Blocks概要什么是BlocksOC转C方法关于几种变量的特点 Blocks模式Block语法Block类型 变量截获局部变量值__block说明符截获的局部变量 Blocks的实现Block的实质 Blocks概要 什么是Blocks Blocks是C语言的扩充功能&#xff0c;即带有局部变量的匿名函数。 顾名思义&#x…

Day18 Java学生管理系统

Day18 Java学生管理系统 一、需求分析 考虑的方面&#xff1a; 用户需求、功能需求、非功能性需求、约束条件、优先级和权衡、可追踪性、需求验证。 二、项目搭建 搭建学生管理系统 1、创建项目的main ;pojo ; sms ; utils包。 2、编写系统的 增&#xff08;涉及到扩容–…

17.WEB渗透测试--Kali Linux(五)

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 内容参考于&#xff1a; 易锦网校会员专享课 上一个内容&#xff1a;16.WEB渗透测试--Kali Linux&#xff08;四&#xff09;-CSDN博客 1.ettercap简介与使用…

【技术类-04】python实现docx表格文字和段落文字的“手动换行符(软回车)”变成“段落标记(硬回车)”

作品展示&#xff1a; 背景需求&#xff1a; 把python实现docx表格文字和段落文字的“手动换行符&#xff08;软回车&#xff09;”变成“段落标记&#xff08;硬回车&#xff09;合并在一起统计数量 【技术类-02】python实现docx段落文字的“手动换行符&#xff08;软回车&a…

一起玩儿3D打印机——03 Marlin固件的获取和安装环境的配置

摘要&#xff1a;本文介绍Marlin固件的获取和安装环境的配置 Marlin是一款开源软件&#xff0c;其主页为&#xff1a;https://marlinfw.org/&#xff0c;首页正中就是下载连接&#xff0c;如下图所示&#xff1a; 单击下面的“Download Marlin 2.1.2.2”按钮就会进入下载页面&a…

彻底学会系列:一、机器学习之梯度下降(1)

1 梯度下降概念 1.1 概念 梯度下降是一种优化算法&#xff0c;用于最小化一个函数的值&#xff0c;特别是用于训练机器学习模型中的参数&#xff0c;其基本思想是通过不断迭代调整参数的值&#xff0c;使得函数值沿着梯度的反方向逐渐减小&#xff0c;直至达到局部或全局最小…

AntV L7深圳智慧城市

本案例使用L7库和Mapbox GL JS构建深圳智慧城市。 文章目录 1. 引入 CDN 链接2. 引入组件3. 创建地图4. 创建场景5. 获取数据6. 创建面图层7. 演示效果8. 代码实现 1. 引入 CDN 链接 <!-- 1.引入CDN链接 --> <script src"https://unpkg.com/antv/l7"><…

Centos yum报错‘Connection timed out after 30002 milliseconds‘) 正在尝试其它镜像。解决办法

修改源后更新报错 我有两个Centos 一个7 一个8&#xff0c;疏忽在7上面配置了8的源后报错&#xff0c;通过下面的报错发现提示的是Centos7的源找不到&#xff0c;才意识到是不是配置错了源。 报错信息&#xff1a; http://mirrors.aliyun.com/centos/7/AppStream/x86_64/os/r…

Java 面向对象(类与对象 成员方法 方法重载 可变参数 构造方法 / 构造器 this关键字 包 访问修饰符)

目录 一、类与对象1. 类与对象的定义2. 类和对象的内存分配机制 二、成员方法1. 成员方法的定义2. 方法的调用机制3. 成员方法传参机制 三、方法重载四、可变参数1. 基本概念2. 基本语法3. 应用 五、 构造方法 / 构造器1. 特点2. 使用案例3. 对象创建的流程 六、this关键字1. 运…

【Linux】信号保存{sigset_t/sigpending/sigprocmask/bash脚本/代码演示}

文章目录 1.信号相关常见概念2.管理信号的数据结构3.初识sigset_t4.信号集操作函数4.1sigpending4.2sigprocmask4.2代码测试1.测试12.测试23.测试3 4.3bash 脚本文件 1.信号相关常见概念 信号相关动作&#xff1a;产生 发送 接收 阻塞 递达(处理) 实际执行信号的处理动作称为信…

0基础 三个月掌握C语言(11)

字符函数和字符串函数 为了方便操作字符和字符串 C语言标准库中提供了一系列库函数 接下来我们学习一下这些函数 字符分类函数 C语言提供了一系列用于字符分类的函数&#xff0c;这些函数定义在ctype.h头文件中。这些函数通常用于检查字符是否属于特定的类别&#xff0c;例如…

html--宠物

文章目录 htmljscss html <!DOCTYPE html> <html lang"en" > <head><meta charset"UTF-8"><title>CodePen - Spaceworm</title><script> window.requestAnimFrame (function() {return (window.requestAnimat…

粤嵌6818开发板触摸屏应用

一、触摸屏应用 1.触摸屏设备的名字 在Linux下&#xff0c;一切皆文件&#xff0c;触摸屏也是一个文件。 触摸屏设备的名字&#xff1a;/dev/input/event0 2.触摸屏的两个专业术语 事件 ->event0 当一些外接控制设备(鼠标、键盘&#xff0c;wifi&#xff0c;触摸屏&am…

4.1_7 文件共享

文章目录 4.1_7 文件共享&#xff08;一&#xff09;基于索引结点的共享方式&#xff08;硬链接&#xff09;&#xff08;二&#xff09;基于符号链的共享方式&#xff08;软链接&#xff09; 总结 4.1_7 文件共享 注意&#xff1a;多个用户共享同一个文件&#xff0c;意味着系…

单片机第四季-第二课:uCos2源码-BSP

1&#xff0c;初始uCos2 文件中uC开头的为uCos相关的。 2&#xff0c;uCos2源码工程建立 建立Source Insight工程 寻找main函数 (1)RTOS其实就是一个大的裸机程序&#xff0c;也是从main开始运行的 (2)main之前也是有一个汇编的启动文件的 (3)main中调用了很多初始化函数 bsp部…

《你就是孩子最好的玩具·升级版》笔记(一)尊重孩子的感受

目录 简介 经典摘录 简介 作者是&#xff08;美&#xff09;金伯莉布雷恩。奠定父母与孩子一生亲密关系的情感引导书。 什么是情感引导&#xff1f; 情感引导式教育的核心&#xff0c;就是教我们的孩子如何去合理地认知以及表达自己的感受&#xff0c;书中更侧重于在这方面为…

【NBUOJ刷题笔记】递推_递归+分治策略2

0. 前言 PS&#xff1a;本人并不是集训队的成员&#xff0c;因此代码写的烂轻点喷。。。本专题一方面是巩固自己的算法知识&#xff0c;另一方面是给NBU学弟学妹们参考解题思路&#xff08;切勿直接搬运抄袭提交作业&#xff01;&#xff01;&#xff01;&#xff09;最后&…

【matlab】如何批量修改图片命名

【matlab】如何批量修改图片命名 (●’◡’●)先赞后看养成习惯😊 假如我的图片如下,分别是1、2、3、4、5的命名 需求一:假如现在我需要在其后面统一加上_behind字符串,并且保留原命名,同时替换掉原先的图片,也就是不copy新的一份,直接在原文件夹中处理,我们可以进行…