JavaWeb笔记 --- 三、MyBatis

三、MyBatis

概述

  • MyBatis是一个持久层框架,用于简化JDBC

Mapper代理开发

  • 在resources配置文件包中创建多级目录用 /

MyBatis核心配置文件

  1. enviroments:配置数据库连接环境信息。

    • 可以配置多个enviroment,通过default属性切换不同的enviroment

  2. mappers:加载sql映射文件、mapper代理方式

    • 可以使用包扫描方式

  3. typeAliases:类型别名

配置文件完成增删改查

查询

查询所有数据
<!--数据库字段名和实体类属性不一样*起别名*用sql片段*resultMap:1.定义<resultMap>标签2.在<select>标签中,使用resultMap属性替换resultType属性--><!--id:唯一标识type:映射的类型,支持别名--><!--resultMap--><resultMap id="brandResultMap" type="brand"><!--id:完成主键字段的映射column:表的列名property:实体类的属性名result:完成一般字段的映射--><result column="brand_name" property="brandName"/><result column="company_name" property="companyName"/></resultMap><select id="selectAll" resultMap="brandResultMap">select*from tb_brand;</select><!--起别名--><select id="selectAll" resultType="brand">selectid,brand_name as brandName, company_name as companyName, ordered, description, statusfrom tb_brand;</select><!--用sql片段--><sql id="brand_column">id,brand_name as brandName, company_name as companyName, ordered, description, status</sql><select id="selectAll" resultType="Brand">select<include refid="brand_column" />from tb_brand;</select>
查询详情
参数占位符
  1. #{}:会替换成?,防止SQL注入

  2. ${}:直接拼接数据,会造成SQL注入

<!--*参数占位符1. #{}:会替换成?,防止SQL注入2. ${}:直接拼接数据,会造成SQL注入*参数类型parameterType可以省略,一般不写*特殊字符处理<:  1.转义字符:&lt;2.CDATA区:   <![CDATA[<]]>--><select id="selectById" parameterType="int" resultMap="brandResultMap">select * from tb_brand where id = #{id};</select>
条件查询
多条件查询
   /**   参数接收*       1.散装参数:如果方法中有多个参数,需要用 @Param("SQL参数占位符名称")*       2.对象参数:保证SQL中的参数名和实体类的属性名保持一致*       3.map集合参数* */List<Brand> selectByCondition(@Param("status")int status,@Param("companyName")String comparyName,@Param("brandName")String brandName);List<Brand> selectByCondition(Brand brand);List<Brand> selectByCondition(Map map);
动态SQL
  • SQl语句中用户输入的变化

    <select id="selectByCondition" resultMap="brandResultMap">select *from tb_brand<where><if test="status != null">and status = #{status}</if><if test="companyName != null and companyName != '' ">and company_name like #{companyName}</if><if test="brandName != null and brandName != '' ">and brand_name like #{brandName}</if></where></select>
单条件动态查询

添加

主键返回

修改

  • 动态修改

删除


注解完成增删改查

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

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

相关文章

大衍数列-蓝桥杯?-Lua 中文代码解题第2题

大衍数列-蓝桥杯&#xff1f;-Lua 中文代码解题第2题 中国古代文献中&#xff0c;曾记载过“大衍数列”, 主要用于解释中国传统文化中的太极衍生原理。 它的前几项是&#xff1a;0、2、4、8、12、18、24、32、40、50 … 其规律是&#xff1a;对偶数项&#xff0c;是序号平方再除…

数据可视化-ECharts Html项目实战(1)

在之前的文章中&#xff0c;我们学习了如何安装Visual Studio Code并下载插件&#xff0c;想了解的朋友可以查看这篇文章。同时&#xff0c;希望我的文章能帮助到你&#xff0c;如果觉得我的文章写的不错&#xff0c;请留下你宝贵的点赞&#xff0c;谢谢。 安装 Visual Studio…

MATLAB环境下基于稀疏方法的基线校正

以光谱信号为例进行说明&#xff0c;光谱信号中基线的存在会降低样品定性和定量分析的准确性&#xff0c;因此在光谱分析前对光谱进行基线校正具有重要意义。光谱数据在采集过程中易受温度、湿度等环境因素影响&#xff0c;发生基线偏移现象。该现象不仅会导致纯谱的谱峰发生形…

CSS3技巧38:3D 翻转数字效果

博主其它CSS3 3D的文章&#xff1a; CSS3干货4&#xff1a;CSS中3D运用_css 3d-CSDN博客 CSS3干货5&#xff1a;CSS中3D运用-2_中3d-2-CSDN博客 CSS3干货6&#xff1a;CSS中3D运用-3_css3d 使用-CSDN博客 最近工作上烦心的事情太多&#xff0c;只有周末才能让我冷静一下 cod…

AI毕业论文降重GPTS,避免AI检测,高效完成论文

视频演示 AI毕业论文降重GPTS&#xff0c;避免AI检测&#xff0c;高效完成论文&#xff01; 开发目的 “毕业论文降重”GPTS应用&#xff0c;作用为&#xff1a;重新表述学术论文&#xff0c;降低相似性评分&#xff0c;避免AI检测。 使用地址 地址&#xff1a;毕业论文降重…

回答自己一年前的一个问题,python如何动态拼接sql

首先谈谈应用场景吧&#xff0c;前提是针对查询接口做接口自动化&#xff0c;接口校验的脚本中&#xff0c;一般以响应报文作为预期值&#xff0c;通过sql查出的数据库值作为实际值&#xff0c;二者对比通过则认为接口输出正确。而sql从何而来呢&#xff0c;对于查询接口一般是…

【MySQL高级篇】08-事务篇

第13章:事务基础知识 #09-事务的基础知识#1.事务的完成过程 #步骤1&#xff1a;开启事务 #步骤2&#xff1a;一系列的DML操作 #.... #步骤3&#xff1a;事务结束的状态&#xff1a;提交的状态(COMMIT) 、 中止的状态(ROLLBACK)#2. 显式事务#2.1 如何开启&#xff1f; 使用关键…

npm下载慢换国内镜像地址

1 设置淘宝镜像地址 npm config set registry http://registry.npm.taobao.org 2 查看当前下载地址 npm config get registry 3 其它镜像地址列表&#xff1a; 1. 官方镜像&#xff1a;https://registry.npmjs.org/ 2. 淘宝镜像&#xff1a;https://registry.npm.taobao.o…

Linux 基础-查看和设置环境变量

一&#xff0c;查看环境变量 在 Linux中&#xff0c;环境变量是一个很重要的概念。环境变量可以由系统、用户、Shell 以及其他程序来设定&#xff0c;其是保存在变量 PATH 中。环境变量是一个可以被赋值的字符串&#xff0c;赋值范围包括数字、文本、文件名、设备以及其他类型…

图解缓存淘汰算法 LRU、LFU | 最近最少使用、最不经常使用算法 | go语言实现

写在前面 无论是什么系统&#xff0c;在研发的过程中不可避免的会使用到缓存&#xff0c;而缓存一般来说我们不会永久存储&#xff0c;但是缓存的内容是有限的&#xff0c;那么我们如何在有限的内存空间中&#xff0c;尽可能的保留有效的缓存信息呢&#xff1f; 那么我们就可以…

VS2022实现简单控件的缩放

private float X;//当前窗体的宽度private float Y;//当前窗体的高度public Form1(){InitializeComponent();}// 将控件的宽&#xff0c;高&#xff0c;左边距&#xff0c;顶边距和字体大小暂存到tag属性中private void setTag(Control cons){foreach (Control con in cons.Con…

C语言之归并排序

目录 一 简介 二 代码实现 三 时空复杂度 A.时间复杂度&#xff1a; B.空间复杂度&#xff1a; C.总结&#xff1a; 一 简介 归并排序&#xff08;Merge Sort&#xff09;是一种基于分治策略的高效排序算法&#xff0c;其基本思想是将一个大问题分解为若干个规模较小且相…

鸿蒙Harmony应用开发—ArkTS声明式开发(容器组件:RowSplit)

将子组件横向布局&#xff0c;并在每个子组件之间插入一根纵向的分割线。 说明&#xff1a; 该组件从API Version 7开始支持。后续版本如有新增内容&#xff0c;则采用上角标单独标记该内容的起始版本。 子组件 可以包含子组件。 RowSplit通过分割线限制子组件的宽度。初始化…

数据可视化-ECharts Html项目实战(2)

在之前的文章中&#xff0c;我们学习了如何创建简单的折线图&#xff0c;条形图&#xff0c;柱形图并实现动态触发&#xff0c;最大最小平均值。想了解的朋友可以查看这篇文章。同时&#xff0c;希望我的文章能帮助到你&#xff0c;如果觉得我的文章写的不错&#xff0c;请留下…

11.进程的同步与互斥

11.进程的同步与互斥 计数信号量及其初始化 和王道里面学的PV操作一摸一样,带个count变量,带个阻塞队列 //D:\code\x86\code\start\start\source\kernel\include\ipc\sem.h #ifndef OS_SEM_H #define OS_SEM_H#include "tools/list.h"/*** 进程同步用的计数信号量*…

linux源配置:ubuntu、centos

1、ubuntu源配置 1&#xff09;先查电脑版本型号: lsb_release -c2&#xff09;再编辑源更新&#xff0c;源要与上面型号对应 参考&#xff1a;https://midoq.github.io/2022/05/30/Ubuntu20-04%E6%9B%B4%E6%8D%A2%E5%9B%BD%E5%86%85%E9%95%9C%E5%83%8F%E6%BA%90/ /etc/apt/…

插入排序:一种简单而有效的排序算法

插入排序&#xff1a;一种简单而有效的排序算法 一、什么是插入排序&#xff1f;二、插入排序的步骤三、插入排序的C语言实现四、插入排序的性能分析五、插入排序的优化六、总结 在我们日常生活和工作中&#xff0c;排序是一种非常常见的操作。比如&#xff0c;我们可能需要对一…

Echo框架:高性能的Golang Web框架

Echo框架&#xff1a;高性能的Golang Web框架 在Golang的Web开发领域&#xff0c;选择一个适合的框架是构建高性能和可扩展应用程序的关键。Echo是一个备受推崇的Golang Web框架&#xff0c;以其简洁高效和强大功能而广受欢迎。本文将介绍Echo框架的基本特点、使用方式及其优势…

Golang协程详解

一.协程的引入 1.通过案例文章引入并发,协程概念 见:[go学习笔记.第十四章.协程和管道] 1.协程的引入,调度模型&#xff0c;协程资源竞争问题 通过上面文章可以总结出Go并发编程原理: 在一个处理进程中通过关键字 go 启用多个协程&#xff0c;然后在不同的协程中完成不同的子任…

智慧公厕建设的重要性

智慧公厕建设一直被视为提升城市管理水平的重要举措。作为一个关键的城市基础设施&#xff0c;智慧公厕不仅可以改善公共卫生管理&#xff0c;还能提升城市居民的社会民生生活质量。此外&#xff0c;智慧公厕建设还能促进城市的可持续发展&#xff0c;降低能源消耗&#xff0c;…