码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • MyBatis完成品牌数据的查询操作


    文章目录

    • 案例 完成品牌数据的增删改查操作
      • 准备环境
      • MyBatisX 插件
      • 查询所有数据
      • 查看详情
      • 条件查询
      • 多条件查询-动态条件

    案例 完成品牌数据的增删改查操作

    • 要完成的功能列表清单:
      • 查询所有数据
      • 查看详情
      • 条件查询
    • 添加
    • 修改
      • 修改全部字段
      • 修改动态字段
    • 删除
      • 删除一个
      • 批量删除

    准备环境

    • 数据库表 tb_brand
    • 实体类 Brand
    • 测试用例
    • 安装 MyBatisX 插件

    MyBatisX 插件

    • MyBatisX是一款基于 IDEA 的快速 开发插件,为效率而生。
    • 主要功能:
      • XML 和接口方法 相互跳转
      • 根据 接口方法生成 statement
    • 安装
      在这里插入图片描述

    查询所有数据

    在这里插入图片描述

    • 编写接口方法: Mapper 接口

      • 参数:无
      • 结果: List< Brand >
        在这里插入图片描述
    • 编写 SQL 语句:SQL映射文件:
      在这里插入图片描述

    • 执行方法,测试

    • 总结

      • MyBatis 完成 操作需要几步?
        三步:编写接口方法 -->编写 SQL -->执行方法
      • 实体类属性名 和数据库列表名不一致,不能自动封装数据
        • 起别名:在 sql 语句中,对不一样的列名起别名,别名和实体类属性名一样,可以定义 < sql >片段,提高复用性
        • resultMap :定义 < resultMap >完成不一致的属性名和列名的映射

    查看详情

    在这里插入图片描述

    • 编写接口方法:Mapper 接口

      • 参数:id
      • 结果:Brand
        在这里插入图片描述
    • 编写 SQL 语句:SQL映射文件
      在这里插入图片描述

    • 执行方法,测试

    • 总结

      • 参数占位符
        • #{}:执行 SQL时,会将 #{} 占位符 替换为?,将来自动设置参数值
        • ${}:拼 SQL,会存在 SQL注入问题
    • 使用时机

      • 参数传递,都使用 #{}
      • 如果要对表名、列名进行动态设置,只能使用 ${}进行 sql 拼接
    • parameterType:

      • 用于设置参数类型,该参数可以省略
    • SQL 语句中特殊字符处理

      • 转义字符
      • :CD提示

    条件查询

    在这里插入图片描述

    • 编写接口方法: Mapper 接口

      • 参数:所有查询条件
      • 结果:List< Brand >
        在这里插入图片描述
    • 编写 SQL语句:SQL映射文件
      在这里插入图片描述

    • 执行方法,测试

    • 总结

      • SQL 语句设置多个参数有几种方式?
        • 散装参数:需要使用 @Param(“SQL中参数的名称”)
        • 实体类封装参数:只需要保证 SQL中的参数名 和 实体类属性名对应上,即可设置成功
        • map集合 :只需要保证 SQL中的参数名 和 map 集合的键的名称对应上,即可设置成功
    • 思考:用户输入条件时,是否所有的条件都会填写?

    多条件查询-动态条件

    • SQL 语句会随着用户的输入或外部条件的变化而变化,我们称为动态SQL
      在这里插入图片描述

    • MyBatis对动态 SQL有很大的支撑
      在这里插入图片描述

    • 动态 SQL
      在这里插入图片描述

  • 相关阅读:
    linux server设置开机自动连接WIFI
    Qml-ShaderEffect的使用
    Android学习笔记 2.3.3 按钮(Button)组件的功能与用法 && 2.3.4 使用9Patch图片作为背景
    SpringMVC汇总
    Docker本地部署Drupal并实现公网访问
    数据挖掘与知识发现 导论
    docker镜像构建
    【ROS进阶篇】第十一讲 基于Gazebo和Rviz的机器人联合仿真(运动控制与传感器)
    玻尔兹曼分布详细推导、softmax 及 Energy Based Model
    母线电容及其计算方法
  • 原文地址:https://blog.csdn.net/hihielite/article/details/127428160
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号