Mybatis Day02

增删改查

环境准备

  1. 创建一个emp表
  2. 创建一个新的springboot工程,选择mysql、lombok、mybatis依赖
  3. application.properties中引入数据库连接信息
  4. 创建对应的实体类Emp
  5. 准备Mapper接口EmpMapper,@mapper代表程序运行时自动创建接口的代理对象,并放入ioc容器之中

如果一个文件夹是springboot项目,就从maven窗口引入它的pom文件

删除

@delete现在里面的value语句没有提示,不知道怎么回事

@Mapper
public interface EmpMapper {

//    delete data by id
    @Delete("delete from emp where id = # {id}")
    public void delete(Integer id);
//返回影响的元组数量
    public int delete(Integer id);

}

日志输出

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

预编译sql

性能更高:从缓存当中直接拿到编译的sql语句

更安全:防止sql注入

#{...}:预编译,被?取代

${...}:直接拼接sql语句

新增

可以用实体类封装

主键返回:

@Options(keyProperty = "id", UsedGeneratedKeys = True)

更新

根据主键修改员工信息

查询

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

@Select("select id, username, password, name, gender, image, job, entrydate, " +
            "dept_id deptID, create_time createTime, update_time updateTime from emp where id = #{id}")
@Results({
     @Result(column = "dept_id", property = "deptId"),
     @Result(column = "create_time", property = "createTime"),
     @Result(column = "update_time", property = "updateTime")
})
#开启驼峰命名自动映射
mybatis.configuration.map-underscore-to-camel-case=true

查询(条件查询)

模糊匹配里面要把'%张%'本来改成'%#{name}%',但是''里面不能装#,所以改成%${name}%',但是性能低,容易被注入

concat函数,改成concat('%',#{name},'%'),这样引号里面就没有问号了

xml映射文件

  • XML映射文件的名称与Mapper接口名称一致,并且将XML映射文件和Mapper接口放置在相同包下(同包同名)
  •  XML映射文件的namespace属性为Mapper接口全限定名一致
  • XML映射文件中sql语句的id与Mapper接口中的方法名一致,并保持返回类型一致

动态sql

if

查询select

<!--    resultType : 单条记录所封装的类型。-->
    <select id="list" resultType="com.itheima.pojo.Emp">
        select * from emp
        <where>
              <if test="name != null">
                  name like concat('%',#{name},'%')
              </if>

              <if test="gender != null">
                  and gender = #{gender}
              </if>

              <if test="begin != null and end != null">
                  and entrydate between #{begin} and #{end}
              </if>
        </where>

        order by update_time desc
    </select>

更新update

注意!!!test里面的属性名不要写成数据库里面的了

<update id="update2">
        update 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 = "image != null">
            image=#{image},
            </if>
            <if test = "job != null">
            job=#{job},
            </if>
            <if test = "entrydate != null">
            entrydate=#{entrydate},
            </if>
            <if test = "deptId != null">
            dept_id=#{deptId},
            </if>
            <if test = "updateTime != null">
            update_time=#{updateTime}
            </if>
        where id = #{id}
    </update>

<set>标签可以自动忽略逗号

foreach

    <delete id="deleteIds">
        delete from emp where id in
        <foreach collection="ids" item="id" separator="," open="(" close=")">
            #{id}
        </foreach>
    </delete>

sql,include

sql定义可重用语句片段

include是一个单标签,里面设置refid值

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

[office] Excel 数据库函数条件区域怎样设置 #笔记#笔记

Excel 数据库函数条件区域怎样设置 以下面的数据表格为例&#xff0c;对于条件区域的设置&#xff0c;有几方面需要注意的内容&#xff0c;下面就一起看看如何对Excel 数据库函数条件区域设置的吧。希望会大家有所帮助 以下面的数据表格为例&#xff0c;对于条件区域的设置&am…

【硬核】javascript轻松实现自动化批量取消某音用户关注功能

&#x1f680; 个人主页 极客小俊 ✍&#x1f3fb; 作者简介&#xff1a;web开发者、设计师、技术分享博主 &#x1f40b; 希望大家多多支持一下, 我们一起学习和进步&#xff01;&#x1f604; &#x1f3c5; 如果文章对你有帮助的话&#xff0c;欢迎评论 &#x1f4ac;点赞&a…

VMware虚拟机网络配置

VMware虚拟机网络配置 桥接模式NAT网络 桥接模式 桥接模式其实就是借助你宿主机上的网卡进行联网和通信&#xff0c;所以相当于虚拟机和宿主机平级&#xff0c;处于同一个网段中。 配置要点&#xff1a; 注意选择正确的宿主机网卡 查看宿主机的网络信息&#xff0c;这些信息指…

kali无线渗透之用wps加密模式破解出wpa模式的密码12

WPS(Wi-Fi Protected Setup&#xff0c;Wi-Fi保护设置)是由Wi-Fi联盟推出的全新Wi-Fi安全防护设定标准。该标准推出的主要原因是为了解决长久以来无线网络加密认证设定的步骤过于繁杂之弊病&#xff0c;使用者往往会因为步骤太过麻烦&#xff0c;以致干脆不做任何加密安全设定&…

哈希切分

目录 一 二 三 2.单个子文件太大怎么办&#xff1f;&#xff08;分两种情况讨论&#xff09; 一 这样的题目典型就是KV模型的问题&#xff0c;即通过key IP找对应的value 出现次数&#xff0c;对于KV模型的问题首先想到的就是用map来统计次数&#xff0c;但是100G大小的文件…

Windows11通过SMB映射NAS网络驱动磁盘

环境 NAS&#xff1a;威联通TS-416 操作系统&#xff1a;Windows11 第一步 连接NAS winr 打开运行&#xff0c;输入NAS局域网IP地址&#xff0c;按照如下的格式输入 然后输入NAS的账号和密码就可以通过SMB连接到NAS了 第二步 映射网络驱动器 举个栗子&#xff1a;右键Stora…

【AIGC】Stable Diffusion的模型入门

下载好相关模型文件后&#xff0c;直接放入Stable Diffusion相关目录即可使用&#xff0c;Stable Diffusion 模型就是我们日常所说的大模型&#xff0c;下载后放入**\webui\models\Stable-diffusion**目录&#xff0c;界面上就会展示相应的模型选项&#xff0c;如下图所示。作者…

[GXYCTF2019]禁止套娃

进来发现只有这句话&#xff0c;习惯性访问一下flag.php&#xff0c;发现不是404&#xff0c;那就证明flag就在这了&#xff0c;接下来要想办法拿到flag.php的源码。 这道题是.git文件泄露网页源码&#xff0c;githack拿到index.php源码 这里观察到多次判断&#xff0c;首先要…

Unity如何修改预制体(预制件)?

文章目录 19 复制复制复制&#xff0c;预制体与变体 19 复制复制复制&#xff0c;预制体与变体 【预制件】 预制件作用&#xff1a;方便复用 【预制件】的制作 直接拖拽&#xff0c;从层级面板 -> 项目面板。层级面板中当前图标会变蓝&#xff0c;子物体名字变蓝色。预制件…

node+vue3+mysql前后分离开发范式——实现对数据库表的增删改查

文章目录 ⭐前言⭐ 功能设计与实现💖 node后端操作数据库实现增删改查💖 vue3前端实现增删改查⭐ 效果⭐ 总结⭐ 结束⭐结束⭐前言 大家好,我是yma16,本文分享关于 node+vue3+mysql前后分离开发范式——实现对数据库表的增删改查。 技术选型 前端:vite+vue3+antd 后端:…

Javaweb之SpringBootWeb案例之AOP核心概念的详细解析

2.3 AOP核心概念 通过SpringAOP的快速入门&#xff0c;感受了一下AOP面向切面编程的开发方式。下面我们再来学习AOP当中涉及到的一些核心概念。 1. 连接点&#xff1a;JoinPoint&#xff0c;可以被AOP控制的方法&#xff08;暗含方法执行时的相关信息&#xff09; 连接点指的…

边缘计算:重塑数字世界的未来

引言 随着物联网&#xff08;IoT&#xff09;设备的激增和5G网络的普及&#xff0c;我们正站在一个计算模式的新纪元门槛上——边缘计算。这一技术范式将数据处理和分析推向网络的边缘&#xff0c;即设备或终端&#xff0c;为实时性要求较高的应用提供了前所未有的可能性。 目…

保育员答案怎么查找? #经验分享#微信

在大学生的学习过程中&#xff0c;我们经常会遇到各种难题和疑惑。有时候&#xff0c;我们可能会花费大量的时间和精力去寻找答案&#xff0c;但结果却并不尽如人意。为了帮助大家更好地解决这个问题&#xff0c;今天我要向大家介绍几款备受大学生欢迎的搜题软件&#xff0c;它…

问题:由于环境因素或人为因素干扰,致使土地生态系统的结构和功能失调,引起() #学习方法#经验分享

问题&#xff1a;由于环境因素或人为因素干扰&#xff0c;致使土地生态系统的结构和功能失调&#xff0c;引起&#xff08;) A&#xff0e;土地退化 B&#xff0e;土壤污染 C&#xff0e;生态平衡失调 D&#xff0e;土地沙化 参考答案如图所示

HCIA-HarmonyOS设备开发认证V2.0-轻量系统内核基础-互斥锁mux

目录 一、互斥锁基本概念二、互斥锁运行机制三、互斥锁开发流程四、互斥锁使用说明五、互斥锁接口六、代码分析&#xff08;待续...&#xff09; 一、互斥锁基本概念 互斥锁又称互斥型信号量&#xff0c;是一种特殊的二值性信号量&#xff0c;用于实现对共享资源的独占式处理。…

应急响应实战笔记02日志分析篇(3)

第3篇:Web日志分析 ox01 Web日志 Web访问日志记录了Web服务器接收处理请求及运行时错误等各种原始信息。通过对WEB日志进行的安全分析&#xff0c;不仅可以帮助我们定位攻击者&#xff0c;还可以帮助我们还原攻击路径&#xff0c;找到网站存在的安全漏洞并进行修复。 我们来…

问题:从完整的问题解决过程来看,( )是首要环节。A.理解问题 B.提出假设C.发现问题 D.检验假设 #学习方法#学习方法

问题&#xff1a;从完整的问题解决过程来看&#xff0c;&#xff08; &#xff09;是首要环节。A&#xff0e;理解问题 B&#xff0e;提出假设C&#xff0e;发现问题 D&#xff0e;检验假设 A.理解问题 B.提出假设 C&#xff0e;发现问题 参考答案如图所示

WebSocket | 基于TCP的全双工通信网络协议

文章目录 1、介绍2、示例2.1、分析2.2、代码开发2.3、功能测试 ​&#x1f343;作者介绍&#xff1a;双非本科大三网络工程专业在读&#xff0c;阿里云专家博主&#xff0c;专注于Java领域学习&#xff0c;擅长web应用开发、数据结构和算法&#xff0c;初步涉猎Python人工智能开…

机器学习---HMM前向、后向和维特比算法的计算

1. HMM import numpy as np# In[15]:class HiddenMarkov:def forward(self, Q, V, A, B, O, PI): # 使用前向算法N len(Q) # 状态序列的大小M len(O) # 观测序列的大小alphas np.zeros((N, M)) # alpha值T M # 有几个时刻&#xff0c;有几个观测序列&#xff0c;就有…

智慧职教考试怎么搜题找答案? #微信#其他

下面将介绍一些大学生常用的日常学习辅助工具和资料&#xff0c;希望能为你的学习提供帮助和便利 1.题老大 这个是公众号 内容很丰富&#xff0c;范围包括公考、计算机、建筑工程、会计资格、消防、外语外贸、教师资格&#xff01; 下方附上一些测试的试题及答案 1、带式输…