当前位置: 首页 > news >正文

MyBatis的parameterType传入参数类型和resultType返回结果类型

记录:413

场景:MyBatis的parameterType传入参数类型和resultType返回结果类型。

版本:JDK 1.8,Spring Boot 2.6.3,mybatis-3.5.9。

1.传入参数parameterType是Integer

传入参数类型parameterType:java.lang.Integer。

返回结果类型resultType: java.lang.String。

1.1Mapper接口代码

@Repository
public interface CityTypeMapper {String getCity01(Integer cityId);
} 

1.2XML代码

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.hub.example.mapper.CityTypeMapper"><select id="getCity01" parameterType="java.lang.Integer" resultType="java.lang.String">select CITY_NAME FROM t_city WHERE CITY_ID=#{cityId}</select>   
</mapper>

2.传入参数parameterType是Long

传入参数类型parameterType: java.lang.Long。

返回结果类型resultType: java.lang.String。

2.1Mapper接口代码

@Repository
public interface CityTypeMapper {String getCity02(Long cityId);
}

2.2XML代码

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.hub.example.mapper.CityTypeMapper"><select id="getCity02" parameterType="java.lang.Long" resultType="java.lang.String">select CITY_NAME FROM t_city WHERE CITY_ID=#{cityId}</select>   
</mapper>

3.传入参数parameterType是Double

传入参数类型parameterType: java.lang.Double。

返回结果类型resultType: java.lang.Double。

3.1Mapper接口代码

@Repository
public interface CityTypeMapper {Double getCity03(Double gross);
}

3.2XML代码

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.hub.example.mapper.CityTypeMapper"><select id="getCity03" parameterType="java.lang.Double" resultType="java.lang.Double">select LAND_AREA FROM t_city WHERE GROSS=#{gross}</select>   
</mapper>

4.传入参数parameterType是String

传入参数类型parameterType: java.lang.String。

返回结果类型resultType: java.lang.Long。

4.1Mapper接口代码

@Repository
public interface CityTypeMapper {Long getCity04(String cityName);
}

4.2XML代码

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.hub.example.mapper.CityTypeMapper"><select id="getCity04" parameterType="java.lang.String" resultType="java.lang.Long">select CITY_ID FROM t_city WHERE CITY_NAME=#{cityName}</select>   
</mapper>

5.传入参数parameterType是List<Long>

传入参数类型parameterType: java.util.ArrayList。

返回结果类型resultType: java.lang.Long。

5.1Mapper接口代码

@Repository
public interface CityTypeMapper {long[] getCity05(List<Long> cityIdList);
}

5.2XML代码

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.hub.example.mapper.CityTypeMapper"><select id="getCity05" parameterType="java.util.ArrayList" resultType="java.lang.Long" >select POPULATION FROM t_city WHERE CITY_ID IN<foreach collection="list" item="cityId" open="(" separator="," close=")">#{cityId}</foreach></select>   
</mapper>

6.传入参数parameterType是Long[]

传入参数类型parameterType: long[]。

返回结果类型resultType: java.lang.String。

6.1Mapper接口代码

@Repository
public interface CityTypeMapper {List<String> getCity06(Long[] cityIdList);
}

6.2XML代码

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.hub.example.mapper.CityTypeMapper"><select id="getCity06" parameterType="long[]" resultType="java.lang.String">select CITY_NAME FROM t_city WHERE CITY_ID IN<foreach collection="array" item="cityId" open="(" separator="," close=")">#{cityId}</foreach></select>   
</mapper>

7.传入参数parameterType是Map<String, Object>

传入参数类型parameterType: java.util.Map。

返回结果类型resultType: com.hub.example.domain.CityPO。

7.1Mapper接口代码

@Repository
public interface CityTypeMapper {CityPO getCity07(Map<String, Object> cityMap); 
}

7.2XML代码

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.hub.example.mapper.CityTypeMapper"><select id="getCity07" parameterType="java.util.Map" resultType="com.hub.example.domain.CityPO">select CITY_ID       AS "cityId",CITY_NAME     AS "cityName",LAND_AREA     AS "landArea",POPULATION    AS "population",GROSS         AS "gross",CITY_DESCRIBE AS "cityDescribe",DATA_YEAR     AS "dataYear",UPDATE_TIME   AS "updateTime"from t_citywhere CITY_ID = #{cityId}AND CITY_NAME = #{cityName}</select>   
</mapper>

8.传入参数parameterType是CityPO

传入参数类型parameterType: com.hub.example.domain.CityPO。

返回结果类型resultType: java.util.Map。

8.1Mapper接口代码

@Repository
public interface CityTypeMapper {Map<String, Object> getCity08(CityPO cityPO);   
}

8.2XML代码

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.hub.example.mapper.CityTypeMapper"><select id="getCity08" parameterType="com.hub.example.domain.CityPO" resultType="java.util.Map">select CITY_ID       AS "cityId",CITY_NAME     AS "cityName",LAND_AREA     AS "landArea",POPULATION    AS "population",GROSS         AS "gross",CITY_DESCRIBE AS "cityDescribe",DATA_YEAR     AS "dataYear",UPDATE_TIME   AS "updateTime"from t_citywhere CITY_ID = #{cityId}AND CITY_NAME = #{cityName}</select>   
</mapper>

9.传入参数parameterType是Date

传入参数类型parameterType: java.util.Date。

返回结果类型resultType: java.lang.String。

9.1Mapper接口代码

@Repository
public interface CityTypeMapper {String getCity09(Date date);
}

9.2XML代码

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.hub.example.mapper.CityTypeMapper"><select id="getCity09" parameterType="java.util.Date" resultType="java.lang.String">select CITY_NAMEFROM t_citywhere UPDATE_TIME = #{date}</select>   
</mapper>

10.传入参数parameterType是List<Long>

传入参数类型parameterType: java.util.ArrayList。

返回结果类型resultType: com.hub.example.domain.CityPO。

10.1Mapper接口代码

@Repository
public interface CityTypeMapper {List<CityPO> getCity10(List<Long> paraList);   
}

10.2XML代码

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.hub.example.mapper.CityTypeMapper"><select id="getCity10" parameterType="java.util.ArrayList" resultType="com.hub.example.domain.CityPO">select CITY_ID AS "cityId",CITY_NAME AS "cityName",LAND_AREA AS "landArea",POPULATION AS "population",GROSS AS "gross",CITY_DESCRIBE AS "cityDescribe",DATA_YEAR AS "dataYear",UPDATE_TIME AS "updateTime"from t_cityWHERE CITY_ID IN<foreach collection="list" item="cityId" open="(" separator="," close=")">#{cityId}</foreach></select>   
</mapper>

11.传入参数parameterType是List<Long>

传入参数类型parameterType: java.util.ArrayList。

返回结果类型resultType: java.util.Map。

11.1Mapper接口代码

@Repository
public interface CityTypeMapper {List<Map<String, Object>> getCity11(List<Long> paraList);
}

11.2XML代码

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.hub.example.mapper.CityTypeMapper"><select id="getCity11" parameterType="java.util.ArrayList" resultType="java.util.Map">select CITY_ID AS "cityId",CITY_NAME AS "cityName",LAND_AREA AS "landArea",POPULATION AS "population",GROSS AS "gross",CITY_DESCRIBE AS "cityDescribe",DATA_YEAR AS "dataYear",UPDATE_TIME AS "updateTime"from t_cityWHERE CITY_ID IN<foreach collection="list" item="cityId" open="(" separator="," close=")">#{cityId}</foreach></select>   
</mapper>

12.测试代码

12.1代码

@Slf4j
@RestController
@RequestMapping("/hub/example/cityType")
public class CityTypeController {@Autowiredprivate CityTypeMapper cityTypeMapper;@GetMapping("/load01")public Object load01() {log.info("测试开始...");// 1.parameterType: java.lang.Integer; resultType: java.lang.StringString cityName01 = cityTypeMapper.getCity01(2);// 2.parameterType: java.lang.Long; resultType: java.lang.StringString cityName02 = cityTypeMapper.getCity02(1L);// 3.parameterType: java.lang.Double; resultType: java.lang.Doubledouble landArea = cityTypeMapper.getCity03(1.81D);// 4.parameterType: java.lang.String; resultType: java.lang.Longlong cityId = cityTypeMapper.getCity04("苏州");List<Long> paraList01 = Arrays.asList(1L, 2L);// 5.parameterType: java.util.ArrayList; resultType: java.lang.Longlong[] population = cityTypeMapper.getCity05(paraList01);// 6.parameterType: long[]; resultType: java.lang.StringLong[] paraList02 = new Long[]{1L, 2L};List<String> cityNameList = cityTypeMapper.getCity06(paraList02);// 7.parameterType: java.util.Map; resultType: com.hub.example.domain.CityPOMap<String, Object> map = new HashMap<>();map.put("cityId", 3L);map.put("cityName", "苏州");CityPO cityPO = cityTypeMapper.getCity07(map);// 8.parameterType: com.hub.example.domain.CityPO; resultType: java.util.MapCityPO cityPO02 = CityPO.builder().cityId(3L).cityName("苏州").build();Map<String, Object> map02 = cityTypeMapper.getCity08(cityPO02);// 9.parameterType: java.util.Date; resultType: java.lang.StringDate date = DateUtil.parse("2023-03-10 05:39:16", "yyyy-MM-dd HH:mm:ss");String time = cityTypeMapper.getCity09(date);// 10.parameterType: java.util.ArrayList; resultType: com.hub.example.domain.CityPOList<Long> paraList = Arrays.asList(1L, 2L, 3L);List<CityPO> list01 = cityTypeMapper.getCity10(paraList);// 11.parameterType: java.util.ArrayList; resultType: java.util.MapList<Long> paraList03 = Arrays.asList(1L, 2L, 3L);List<Map<String, Object>> list02 = cityTypeMapper.getCity11(paraList03);log.info("测试结束...");
return "执行成功";}
}

12.2测试请求

URL01: http://127.0.0.1:18080/hub-example/hub/example/cityType/load01

13.基础支撑

13.1实体对象

@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class CityPO implements Serializable {private Long cityId;private String cityName;private Double landArea;private Long population;private Double gross;private String cityDescribe;private String dataYear;private Date updateTime;
}

13.2建表语句

CREATE TABLE t_city (CITY_ID BIGINT(16) NOT NULL COMMENT '唯一标识',CITY_NAME VARCHAR(64) COLLATE utf8_bin NOT NULL COMMENT '城市名',LAND_AREA DOUBLE DEFAULT NULL COMMENT '城市面积',POPULATION BIGINT(16) DEFAULT NULL COMMENT '城市人口',GROSS DOUBLE DEFAULT NULL COMMENT '生产总值',CITY_DESCRIBE VARCHAR(512) COLLATE utf8_bin DEFAULT NULL COMMENT '城市描述',DATA_YEAR VARCHAR(16) COLLATE utf8_bin DEFAULT NULL COMMENT '数据年份',UPDATE_TIME DATETIME DEFAULT NULL COMMENT '更新时间'
) ENGINE=INNODB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='城市信息表';

13.3引入MyBatis依赖

使用mybatis-spring-boot-starter方式引入mybatis,对应mybatis-3.5.9和mybatis-spring-2.0.7核心依赖。

<dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.2.2</version>
</dependency>

以上,感谢。

2023年4月17日

相关文章:

MyBatis的parameterType传入参数类型和resultType返回结果类型

记录&#xff1a;413 场景&#xff1a;MyBatis的parameterType传入参数类型和resultType返回结果类型。 版本&#xff1a;JDK 1.8,Spring Boot 2.6.3,mybatis-3.5.9。 1.传入参数parameterType是Integer 传入参数类型parameterType&#xff1a;java.lang.Integer。 返回结…...

什么是Android FrameWork,请你介绍一下?

Framework是什么 Framework的中文意思是“框架”&#xff0c;在软件开发中通常指开发框架&#xff0c;在一个系统中处于内核层之上&#xff0c;为顶层应用提供接口&#xff0c;被设计用来帮助开发者快速开发顶层应用&#xff0c;而不必关心系统内核运行机制&#xff0c;通常Fr…...

【SQL 必知必会】- 第十六课 更新和删除数据

目录 更新数据 不要省略WHERE 子句 在UPDATE 语句中使用子查询 删除数据 不要省略WHERE 子句 友好的外键 删除表的内容而不是表 更快的删除 更新和删除的指导原则 这一课介绍如何利用UPDATE 和DELETE 语句进一步操作表数据。 更新数据 更新&#xff08;修改&#xff09;表中…...

常见哈希算法及其应用

哈希算法经常会被用到&#xff0c;比如我们Go里面的map&#xff0c;Java的HashMap&#xff0c;目前最流行的缓存Redis都大量用到了哈希算法。它们支持把很多类型的数据进行哈希计算&#xff0c;我们实际使用的时候并不用考虑哈希算法的实现。而其实不同的数据类型&#xff0c;所…...

PHP快速入门02-PHP语言基础

文章目录前言一、 数据类型1.1 String&#xff08;字符串&#xff09;1.2 Integer&#xff08;整型&#xff09;1.3 Float&#xff08;浮点型&#xff09;1.4 Boolean&#xff08;布尔型&#xff09;1.5 Array&#xff08;数组&#xff09;1.6 Object&#xff08;对象&#xff…...

FSCapture - 长截图工具

FSCapture - 长截图工具前言下载使用推荐设置长截图前言 目前大部分手机系统都自带长截图功能&#xff0c;但Windows系统没有自带的长截图功能&#xff0c;因此推荐一款第三方工具FSCapture&#xff0c;该软件轻量强大&#xff0c;支持长截图&#xff0c;即滚动截图。 下载 …...

[ 云计算 | Azure ] Chapter 05 | 核心体系结构之管理组、订阅、资源和资源组以及层次关系

本文主要对如下内容进行讲解&#xff1a;Azure云计算的核心体系结构组件中的&#xff1a;资源、订阅和资源组&#xff0c;以及了解 Azure 资源管理器 (ARM) 如何部署资源。 本系列已经更新文章列表&#xff1a; [ 云计算 | Azure ] Chapter 03 | 描述云计算运营中的 CapEx 与…...

【算法LearnNO.1】算法介绍以及算法的时间复杂度和空间复杂度

目录 一、算法 1、算法概述 2、算法的5个特性 3、设计算法的标准 二、时间复杂度 1、时间复杂度的介绍 2、渐进时间复杂度的求法 3、计算时间复杂度的代码举例&#xff08;平方阶示例&#xff09; 4、时间复杂度排序 三、空间复杂度 一、算法 1、算法概述 算法就是解…...

013:Mapbox GL添加marker

第013个 点击查看专栏目录 本示例的目的是介绍演示如何在vue+mapbox中添加marker。 直接复制下面的 vue+mapbox源代码,操作2分钟即可运行实现效果 文章目录 示例效果配置方式示例源代码(共70行)相关API参考:专栏目标示例效果 配置方式 1)查看基础设置:https://xiaozhu…...

智慧工厂可视化合集,推动行业数字化转型

图扑软件基于 HTML5&#xff08;Canvas/WebGL/WebVR&#xff09;标准的 Web 技术&#xff0c;满足了工业物联网跨平台云端化部署实施的需求&#xff0c;以低代码的形式自由构建三维数字孪生、大屏可视化、工业组态等等。从 SDK 组件库&#xff0c;到 2D 和 3D 编辑&#xff0c;…...

工作流调度系统 Azkaban介绍与安装(一)

文章目录前言1、为什么要用工作流调度系统2、常见的工作流调度系统1 集群规划2 配置 MySQL3 配置 Executor Server3.1 修改 azkaban.properties3.2 启动3.3 激活4 配置 Web Server4.1 修改 azkaban.properties4.2 修改azkaban-users.xml文件&#xff0c;添加 atguigu 用户4.3 启…...

【Python基础入门学习】Python工具Pycharm的安装与使用

一、关于Python 1.1 下载Python 在下载与安装pycharm工具前&#xff0c;一定要先安装python 打开Python官网&#xff1a;python下载打开上述网站&#xff0c;选择 Downloads -> 系统 我是Windows系统&#xff0c;点击进入后&#xff0c;找到自己要安装的安装包以及想安装的…...

【版本控制】Github同步Gitee镜像仓库自动化脚本

文章目录Github同步Gitee镜像仓库自动化脚本前言什么是Hub Mirror Action&#xff1f;1.介绍2.用法配置步骤1.生成密钥对2.GitHub私钥配置3.Gitee公钥配置4.Gitee生成私人令牌5.Github绑定Gitee令牌6.编写CI脚本7.多仓库同步推送8.定时运行脚本总结Github同步Gitee镜像仓库自动…...

索引的分类

1.唯一索引 给表中某一列设置为了唯一约束(这列不允许出现重复数据)后&#xff0c;数据库会为将这一列设置索引&#xff0c;这个索引叫做唯一索引&#xff08;主键那一列是一个特殊的唯一索引&#xff0c;不仅要满足唯一索引这一列不可以出现重复数据&#xff0c;而且这一列还…...

【整理九】

目录1.说说你对递归的理解&#xff1f;封装一个方法用递归实现树形结构封装2.Link和import有什么区别&#xff1f;3.什么是FOUC? 如何避免&#xff1f;4.说说你对预编译器的理解&#xff1f;5.shouldComponentUpdate 的作用6.概述下 React 中的事务处理逻辑7.React组件的划分业…...

钢网是SMT生产使用的一种工具,如何制作?

钢网是SMT生产使用的一种工具&#xff0c;其主要功能是将锡膏准确地涂敷在有需要焊接的PCB焊盘上。 钢网的好坏&#xff0c;直接影响印刷工作的质量&#xff0c;目前一般使用的金属钢网&#xff0c;是由薄薄的、带有小孔的金属板制作成的&#xff0c;在开孔处&#xff0c;锡膏…...

如何创建自己的gym环境

我们为什么要创建一个gym的环境呢&#xff1f;因为需要&#xff0c;哈哈哈&#xff0c;这是一句废话&#xff0c;但是也是一句真话。因为我不想自己写强化学习的算法了&#xff0c;我想用一些现成的框架&#xff0c;这些框架训练的都是gym的游戏&#xff0c;那我把我自己想要训…...

使用Marshaller 将Java对象转化为XML格式和字符串转为xml

使用Marshaller 将Java对象转化为XML格式 对象转xml内容 ①工具类 public static String convertObjectToXml(Object obj) throws Exception {StringWriter writer new StringWriter();// 创建 JAXBContext 和 MarshallerJAXBContext context JAXBContext.newInstance(obj.ge…...

NumPy 秘籍中文第二版:八、质量保证

原文&#xff1a;NumPy Cookbook - Second Edition 协议&#xff1a;CC BY-NC-SA 4.0 译者&#xff1a;飞龙 “如果您对计算机撒谎&#xff0c;它将帮助您。” – Perry Farrar&#xff0c;ACM 通讯&#xff0c;第 28 卷 在本章中&#xff0c;我们将介绍以下秘籍&#xff1a; …...

[ 应急响应篇基础 ] 日志分析工具Log Parser配合login工具使用详解(附安装教程)

&#x1f36c; 博主介绍 &#x1f468;‍&#x1f393; 博主介绍&#xff1a;大家好&#xff0c;我是 _PowerShell &#xff0c;很高兴认识大家~ ✨主攻领域&#xff1a;【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】 &#x1f389;点赞➕评论➕收藏 养成习…...

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…...

手游刚开服就被攻击怎么办?如何防御DDoS?

开服初期是手游最脆弱的阶段&#xff0c;极易成为DDoS攻击的目标。一旦遭遇攻击&#xff0c;可能导致服务器瘫痪、玩家流失&#xff0c;甚至造成巨大经济损失。本文为开发者提供一套简洁有效的应急与防御方案&#xff0c;帮助快速应对并构建长期防护体系。 一、遭遇攻击的紧急应…...

k8s从入门到放弃之Ingress七层负载

k8s从入门到放弃之Ingress七层负载 在Kubernetes&#xff08;简称K8s&#xff09;中&#xff0c;Ingress是一个API对象&#xff0c;它允许你定义如何从集群外部访问集群内部的服务。Ingress可以提供负载均衡、SSL终结和基于名称的虚拟主机等功能。通过Ingress&#xff0c;你可…...

PPT|230页| 制造集团企业供应链端到端的数字化解决方案:从需求到结算的全链路业务闭环构建

制造业采购供应链管理是企业运营的核心环节&#xff0c;供应链协同管理在供应链上下游企业之间建立紧密的合作关系&#xff0c;通过信息共享、资源整合、业务协同等方式&#xff0c;实现供应链的全面管理和优化&#xff0c;提高供应链的效率和透明度&#xff0c;降低供应链的成…...

JDK 17 新特性

#JDK 17 新特性 /**************** 文本块 *****************/ python/scala中早就支持&#xff0c;不稀奇 String json “”" { “name”: “Java”, “version”: 17 } “”"; /**************** Switch 语句 -> 表达式 *****************/ 挺好的&#xff…...

Caliper 配置文件解析:config.yaml

Caliper 是一个区块链性能基准测试工具,用于评估不同区块链平台的性能。下面我将详细解释你提供的 fisco-bcos.json 文件结构,并说明它与 config.yaml 文件的关系。 fisco-bcos.json 文件解析 这个文件是针对 FISCO-BCOS 区块链网络的 Caliper 配置文件,主要包含以下几个部…...

网络编程(UDP编程)

思维导图 UDP基础编程&#xff08;单播&#xff09; 1.流程图 服务器&#xff1a;短信的接收方 创建套接字 (socket)-----------------------------------------》有手机指定网络信息-----------------------------------------------》有号码绑定套接字 (bind)--------------…...

如何在网页里填写 PDF 表格?

有时候&#xff0c;你可能希望用户能在你的网站上填写 PDF 表单。然而&#xff0c;这件事并不简单&#xff0c;因为 PDF 并不是一种原生的网页格式。虽然浏览器可以显示 PDF 文件&#xff0c;但原生并不支持编辑或填写它们。更糟的是&#xff0c;如果你想收集表单数据&#xff…...

省略号和可变参数模板

本文主要介绍如何展开可变参数的参数包 1.C语言的va_list展开可变参数 #include <iostream> #include <cstdarg>void printNumbers(int count, ...) {// 声明va_list类型的变量va_list args;// 使用va_start将可变参数写入变量argsva_start(args, count);for (in…...

spring Security对RBAC及其ABAC的支持使用

RBAC (基于角色的访问控制) RBAC (Role-Based Access Control) 是 Spring Security 中最常用的权限模型&#xff0c;它将权限分配给角色&#xff0c;再将角色分配给用户。 RBAC 核心实现 1. 数据库设计 users roles permissions ------- ------…...