Mybatis 框架 ( 四 ) QueryWrapper
4.5.Wrapper条件构造器
Wrapper
: 条件构造抽象类,最顶端父类
AbstractWrapper
: 用于查询条件封装,生成 sql 的 where 条件
QueryWrapper
: Entity 对象封装操作类,不是用lambda语法
UpdateWrapper
: Update 条件封装,用于Entity对象更新操作
AbstractLambdaWrapper
: Lambda 语法使用 Wrapper统一处理解析 lambda 获取 column。
LambdaQueryWrapper
:看名称也能明白就是用于Lambda语法使用的查询Wrapper
LambdaUpdateWrapper
: Lambda 更新封装Wrapper
具体方法可以参考官网 条件构造器 | MyBatis-Plus (baomidou.com)
4.5.1.基本结构
queryWrapper.方式( 判断标识, 实体类属性(对应字段), 查询值)
第一个参数 判断标识 : 是根据查询值的有效性来判断是否增加这条查询条件, boolean类型, false 不增加这条查询
第二个参数 实体类属性(对应字段) : 可以使用lambda表达式指明字段 如: RepositoryInfo::getRepositoryName
第三个参数 查询值 : 外部传来的用于查询的值
queryWrapper.like( true, RepositoryInfo::getRepositoryName, "西部");
生成 sql 为
select repository_id, repository_name, repository_code, repository_phone, repository_state, repository_address, repository_start_date
from repository_info
where repository_name like '%西部%'
4.5.2. 常见用法 ( 一 )
模糊查询
.like()
LIKE ‘%值%’.likeLeft()
LIKE ‘%值’.likeRight()
LIKE ‘值%’精确查询
.eq()
= 值.ne()
!= 值范围查询
.gt()
>值.ge()
>= 值.lt()
<值.le()
<= 值.between()
BETWEEN 值1 AND 值2排序
.orderByAsc()
ORDER BY 字段, … ASC.orderByDesc()
ORDER BY 字段, … DESC
实例:
封装查询条件 page类
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;import java.util.Date;@Data
public class RepositoryInfoPage {/*** 仓库名称 模糊查询 like*/private String repositoryName;/*** 仓库代号 精确查询 eq*/private String repositoryCode;/*** 启动时间* 范围查询 gt lt*/@DateTimeFormat(pattern = "yyyy-MM-dd")private Date repositoryStartDateFrom;@DateTimeFormat(pattern = "yyyy-MM-dd")private Date repositoryStartDateTo;/*** 仓库状态#state#0=停用, 1=可用 -1 = 全部* 精确查询 eq*/private Integer repositoryState = -1;}
通过 LambdaQueryWrapper
组织条件进行查询, 根据 RepositoryInfoPage
接收到查询信息, 并对repository_phone 进行排序
使用 链式写法
// 组织条件
LambdaQueryWrapper<RepositoryInfo> queryWrapper = new LambdaQueryWrapper<RepositoryInfo>().like(page.getRepositoryName() != null, RepositoryInfo::getRepositoryName, page.getRepositoryName()).eq(!StringUtils.isEmpty(page.getRepositoryCode()), RepositoryInfo::getRepositoryCode, page.getRepositoryCode()).ge(page.getRepositoryStartDateFrom() != null, RepositoryInfo::getRepositoryStartDate, page.getRepositoryStartDateFrom()).le(page.getRepositoryStartDateTo() != null, RepositoryInfo::getRepositoryStartDate, page.getRepositoryStartDateTo()).eq(page.getRepositoryState() != null && page.getRepositoryState() != -1, RepositoryInfo::getRepositoryState, page.getRepositoryState()).orderByAsc(RepositoryInfo::getRepositoryPhone);// 进行查询
List<RepositoryInfo> list = repositoryInfoService.list(queryWrapper);
生成 SQL
SELECT repository_id,repository_name,repository_code,repository_phone,repository_state,repository_address,repository_start_date FROM repository_info WHERE (repository_name LIKE ? AND repository_code = ? AND repository_start_date >= ? AND repository_start_date <= ? AND repository_state = ?) ORDER BY repository_phone ASC
4.5.3.常见用法 ( 二 )
空值查询
.isNull()
字段 IS NULL.isNotNull()
字段 IS NOT NULL筛选查询
.in()
字段 IN (values.get(0), values.get(1), …).notIn()
字段 NOT IN (values.get(0), values.get(1), …)
.inSql()
字段 NOT IN ( sql语句 )追加SQL
.last( sql 语句 )
将 sql 语句 拼接到 sql 的最后
实例:
page.getNums() 是 [1, 3, 5 ] 的集合
// 组织条件
LambdaQueryWrapper<BrandInfo> queryWrapper = new LambdaQueryWrapper<BrandInfo>().isNotNull( BrandInfo::getBrandCnName).in(page.getNums() != null && page.getNums().size() > 0, BrandInfo::getBrandNum, page.getNums()).last( " limit 10 " );
// 进行查询
List<BrandInfo> list = brandInfoService.list(queryWrapper) ;
生成 SQL
SELECT brand_id,brand_cn_name,brand_en_name,brand_logo_path,brand_web_url,brand_num,brand_info,brand_founded_date
FROM brand_info WHERE (brand_cn_name IS NOT NULL AND brand_num IN (?,?,?)) limit 10
4.5.4.常见用法( 三 ) 嵌套
.and() : 相连的条件必须同时满足, 默认都是 and 相连
.or() : 主动调用
or
表示紧接着下一个方法不是用and
连接!(不调用or
则默认为使用and
连接)两个配合通常可以 建立比较 复杂的查询
.nested() : 正常嵌套 不带 AND 或者 OR
实例 1:
BrandNum = 2 同时( and ) BrandCnName like ‘hua’ 或者 BrandCnName like ‘hua’
// 组织条件
LambdaQueryWrapper<BrandInfo> queryWrapper = new LambdaQueryWrapper<BrandInfo>().eq( num != null, BrandInfo::getBrandNum, num ).like( !StringUtils.isEmpty(name), BrandInfo::getBrandCnName, name).or().like( !StringUtils.isEmpty(name), BrandInfo::getBrandEnName, name);
// 进行查询
List<BrandInfo> list = brandInfoService.list(queryWrapper);
生成 SQL
SELECT brand_id,brand_cn_name,brand_en_name,brand_logo_path,brand_web_url,brand_num,brand_info,brand_founded_date
FROM brand_info
WHERE (brand_num = ? AND brand_cn_name LIKE ? OR brand_en_name LIKE ?)Parameters: 2(Integer), %hua%(String), %hua%(String)Row: 1, 华为, huawei, /images/brand/huawei.png, https://www.vmall.com/, 2, 中华有为,华为是一家全球领先的信息通信技术解决方案提供商,致力于推动数字化智能化的时代发展。, 2003-11-13
Row: 35, 施华洛世奇, shihua, /images/brand/shihua.png, https://shihua.com/, 2, 施华洛世奇是一家奢侈品和珠宝品牌,以其精美的水晶产品和精湛的工艺而享誉全球。, 1972-07-14
Total: 2
实例 2:
BrandNum = 2 或者( or ) BrandCnName like ‘hua’ 或者 BrandCnName like ‘hua’
// 组织条件
LambdaQueryWrapper<BrandInfo> queryWrapper = new LambdaQueryWrapper<BrandInfo>().eq(num != null, BrandInfo::getBrandNum, num ).or(i->i.like( !StringUtils.isEmpty(name), BrandInfo::getBrandCnName, name).or().like( !StringUtils.isEmpty(name), BrandInfo::getBrandEnName, name));
// 进行查询
List<BrandInfo> list = brandInfoService.list(queryWrapper);
生成 SQL
SELECT brand_id,brand_cn_name,brand_en_name,brand_logo_path,brand_web_url,brand_num,brand_info,brand_founded_date
FROM brand_info
WHERE (brand_num = ? OR (brand_cn_name LIKE ? OR brand_en_name LIKE ?))Parameters: 2(Integer), %hua%(String), %hua%(String)Row: 1, 华为, huawei, /images/brand/huawei.png, https://www.vmall.com/, 2, 中华有为,华为是一家全球领先的信息通信技术解决方案提供商,致力于推动数字化智能化的时代发展。, 2003-11-13
Row: 2, 小米, mi, /images/brand/xiaomi.png, https://www.mi.com/, 2, 性价比高,小米是一家中国智能手机和消费电子产品制造商,以其高性价比和创新设计而闻名。, 1999-11-08
Row: 6, 佳能, canon, /images/brand/jianeng.png, http://www.canon.com.cn/, 2, 佳能是一家知名的相机和打印机制造商,专注于提供优质的影像解决方案和设备。, 1955-06-15
...
Total: 11
实例 3:
// 组织条件
LambdaQueryWrapper<BrandInfo> queryWrapper = new LambdaQueryWrapper<BrandInfo>().eq(num != null, BrandInfo::getBrandNum, num ).and(i->i.like( !StringUtils.isEmpty(name), BrandInfo::getBrandCnName, name).or().like( !StringUtils.isEmpty(name), BrandInfo::getBrandEnName, name));
// 进行查询
List<BrandInfo> list = brandInfoService.list(queryWrapper);
生成 SQL
SELECT brand_id,brand_cn_name,brand_en_name,brand_logo_path,brand_web_url,brand_num,brand_info,brand_founded_date
FROM brand_info
WHERE (brand_num = ? AND (brand_cn_name LIKE ? OR brand_en_name LIKE ?))Parameters: 2(Integer), %hua%(String), %hua%(String)Row: 1, 华为, huawei, /images/brand/huawei.png, https://www.vmall.com/, 2, 中华有为,华为是一家全球领先的信息通信技术解决方案提供商,致力于推动数字化智能化的时代发展。, 2003-11-13
Row: 35, 施华洛世奇, shihua, /images/brand/shihua.png, https://shihua.com/, 2, 施华洛世奇是一家奢侈品和珠宝品牌,以其精美的水晶产品和精湛的工艺而享誉全球。, 1972-07-14Total: 2
实例4:
使用 .nested()
String name = "hua";
Integer num = 2;
// 组织条件
LambdaQueryWrapper<BrandInfo> queryWrapper = new LambdaQueryWrapper<BrandInfo>().nested(i->i.eq( BrandInfo::getBrandNum, num).like(BrandInfo::getBrandCnName, name)).or().nested(i->i.like(BrandInfo::getBrandEnName, name));// 进行查询
List<BrandInfo> list = brandInfoService.list(queryWrapper);
生成 SQL
SELECT brand_id,brand_cn_name,brand_en_name,brand_logo_path,brand_web_url,brand_num,brand_info,brand_founded_date
FROM brand_info
WHERE ((brand_num = ? AND brand_cn_name LIKE ?) OR (brand_en_name LIKE ?))
4.5.5.常见用法( 四 ) 分组
.select() : 相当于定义 select 查询的字段
.lambda() : 将 QueryWrapper() 转换成 LambdaQueryWrapper() , 就可以使用 Lambda 语法
.groupBy() : 分组
.having( sql ) : 对 分组结果 进行筛选, 可以使用 SQL 调用 聚合函数
实例 1:
new 时 是 QueryWrapper 为了使用 select() 自定义字段
通过 lambda() 转成 LambdaQueryWrapper()
// 组织条件
LambdaQueryWrapper<BrandInfo> queryWrapper = new QueryWrapper<BrandInfo>().select("brand_num", " count(0) count").lambda().groupBy(BrandInfo::getBrandNum).having( " count(0) > 2");
// 进行查询
List<BrandInfo> list = brandInfoService.list(queryWrapper);
System.out.println("list = " + list);
生成 SQL
SELECT brand_num, count(0) count FROM brand_info GROUP BY brand_num HAVING count(0) > 2Row: 2, 11
Row: 3, 14
Row: 4, 9
Row: 1, 9Total: 4list = [BrandInfo(brandId=null, brandCnName=null, brandEnName=null, brandLogoPath=null, brandWebUrl=null, brandNum=2, brandInfo=null, brandFoundedDate=null, count=11), BrandInfo(brandId=null, brandCnName=null, brandEnName=null, brandLogoPath=null, brandWebUrl=null, brandNum=3, brandInfo=null, brandFoundedDate=null, count=14), BrandInfo(brandId=null, brandCnName=null, brandEnName=null, brandLogoPath=null, brandWebUrl=null, brandNum=4, brandInfo=null, brandFoundedDate=null, count=9), BrandInfo(brandId=null, brandCnName=null, brandEnName=null, brandLogoPath=null, brandWebUrl=null, brandNum=1, brandInfo=null, brandFoundedDate=null, count=9)]
4.5.6.常见用法 ( 五 ) 动态判断
.func(i->{ if(条件) { i.条件(); } else{ i.条件(); } }) : 根据 条件 动态调整SQL 结构
实例:
根据 num 值 判断 执行哪条语句, 因为 num > 2 为 false 所以执行 else 语句
String name = "hua";
Integer num = 2;
// 组织条件
LambdaQueryWrapper<BrandInfo> queryWrapper = new LambdaQueryWrapper<BrandInfo>().func(i->{if( num > 2 ){i.like(BrandInfo::getBrandCnName, name);}else{i.like(BrandInfo::getBrandEnName, name);}});// 进行查询
List<BrandInfo> list = brandInfoService.list(queryWrapper);
生成SQL
SELECT brand_id,brand_cn_name,brand_en_name,brand_logo_path,brand_web_url,brand_num,brand_info,brand_founded_date
FROM brand_info WHERE (brand_en_name LIKE ?)
4.5.7.常见用法 ( 六 ) 函数 apply
.apply( sql , params ) : sql 包含 函数 , 可以使用 {index} 进行占位 , params 为 传入的值
实例 1:
String date = "2020-09-08";
// 组织条件
LambdaQueryWrapper<BrandInfo> queryWrapper = new LambdaQueryWrapper<BrandInfo>().apply( "date_format(brand_founded_date,'%Y-%m-%d') = {0} " , date );// 进行查询
List<BrandInfo> list = brandInfoService.list(queryWrapper);
生成 SQL
SELECT brand_id,brand_cn_name,brand_en_name,brand_logo_path,brand_web_url,brand_num,brand_info,brand_founded_date
FROM brand_info
WHERE (date_format(brand_founded_date,'%Y-%m-%d') = ? )Parameters: 2020-09-08(String)
相关文章:
Mybatis 框架 ( 四 ) QueryWrapper
4.5.Wrapper条件构造器 Wrapper : 条件构造抽象类,最顶端父类 AbstractWrapper : 用于查询条件封装,生成 sql 的 where 条件 QueryWrapper : Entity 对象封装操作类,不是用lambda语法 UpdateWrapper &am…...
数据结构和算法之二分法查找
二分法查找,也称作二分查找或折半查找,是一种在有序数组中快速查找特定元素的算法。它采用分治法思想,通过将问题划分为规模更小的子问题,并且通过对子问题的查找来解决原问题。 二分法查找的思路是不断地将数组一分为二…...
系统日期如何在页面展示,框架是react或者vue3
安装插件dayjs或者moment.js 2.使用setInterval(useInterval)或者requestAnimationFrame react项目中useInterval的代码示例: import React, {useState } from react; import { useInterval } from "ahooks"; import moment fro…...
(二十二)大数据实战——Flume数据采集之故障转移案例实战
前言 本节内容我们完成Flume数据采集的故障转移案例,使用三台服务器,一台服务器负责采集nc数据,通过使用failover模式的Sink处理器完成监控数据的故障转移,使用Avro的方式完成flume之间采集数据的传输。整体架构如下:…...
前端小案例3:Flex弹性布局行内元素宽度自适应
前端小案例3:Flex弹性布局行内元素宽度自适应 项目背景:需要在一行上展示空调设备的三个模式(制冷、制热、通风)或者两个模式(制冷、制热);因为不同产品的模式数量不同,因此需要让模…...
纳尼?小说还要用看的?这可以听!无广!
这是一款听书软件,可以自定义书源,自己设置书架,页面简单易操作,无广告。 支持直接搜索书名,链接,图文,本地文件等方式听书 拥有30多主播声音,分类细致 支持倍速、添加BGM等...
【微服务部署】四、Jenkins一键打包部署NodeJS(Vue)前端项目步骤详解
本文介绍使用Jenkins一键将NodeJS(Vue)前端项目打包并上传到生产环境服务器,这里使用的是直接打包静态页面,发送到远程服务器Nginx配置目录的方式,首先确保服务器环境配置好,安装Nginx,运行目录…...
【前端】禁止别人调试自己的前端页面代码
无限debugger 前端页面防止调试的方法主要是通过不断 debugger 来疯狂输出断点,因为 debugger 在控制台被打开的时候就会执行由于程序被 debugger 阻止,所以无法进行断点调试,所以网页的请求也是看不到的代码如下: /** * 基础禁止…...
UDP的可靠性传输
UDP系列文章目录 第一章 UDP的可靠性传输-理论篇(一) 第二章 UDP的可靠性传输-理论篇(二) 文章目录 UDP系列文章目录前言1.TCP 和UDP格式对比2.UDP分片原理3.UDP 传输层应该注意问题4.MTU5.UDP 分片机制设计重点 一、ARQ协议什么…...
科研笔记:TPAMI submission guideline
1 author information Author Information - IEEE Transactions on Pattern Analysis and Machine Intelligence | IEEE Computer Society Digital Library 1.1 会议期刊extension 当一个TPAMI的提交基于之前的会议论文时,IEEE要求期刊论文是之前出版物的“实质…...
Python文件操作(02):打开文件、读文件、关闭文件
一、读文本文件 打开文件读文件内容关闭文件 1、在读取文件内容后进行解码操作 """ 1. 打开文件- 路径:相对路径:当前项目(读文件.py)所在的目录下查找需要读取的文件绝对路径:文件--右键--Copy Pat…...
C语言访问Mysql
文章目录 C语言访问Mysql1. 环境设置2. mysql接口介绍(1) 初始化mysql_init()(2) 链接数据库mysql_real_connect(3) 下发mysql命令mysql_query()(4) 获取执行结果mysql_store_result(5) 释放结果集mysql_free_result()(6) 获取结果行数mysql_num_rows(7) 获取结果列数mysql_num…...
软件设计师(十)网络与信息安全基础知识
计算机网络是由多台计算机组成的系统,与传统的单机系统、多机系统相比有很大的区别。 一、网络概述 计算机网络是计算机技术与通信技术相结合的产物,它实现了远程通信、远程信息处理和资源共享。 1、计算机网络的概念 计算机网络的定义是利用通信设备…...
蓝桥杯官网填空题(换零钞)
题目描述 本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。 X 星球的钞票的面额只有:100 元,5 元,2 元,1 元,共 4 种。 小明去 X 星旅游,他手里只有 2 张…...
JavaFX之Stage
Stage(舞台),它代表了一个顶级窗口,是JavaFX应用程序的主要容器。Stage可以包含多个场景(Scene),每个场景可以包含各种用户界面元素(如按钮、文本框等)。Stage提供了许多…...
深度翻页导出导致慢SQL,mysqlCPU飙升优化方案
慢SQL原因分析: 1.深度翻页 2.多表JOIN 3. 大IN 4. id倒排序 本文针对深度翻页的优化进行探讨 方案1: 将limit offset, pageSize的方式改成 id > xx limit pageSize. 这样能走Id索引,提高速度。 缺点:不能使用多线程…...
小谈设计模式(1)—总序
小谈设计模式(1)—总序 开始操作设计模式总论设计模式是什么组成要素模式名称问题描述解决方案效果描述 设计模式有什么作用提供可重用的解决方案提高代码的可读性和可维护性促进代码的可扩展性提高代码的灵活性和可重用性促进团队合作和沟通作用总结 为…...
【c++】stringstream基础:实现数据类型转换和字符串分割
传统实现整型转换为字符串需要使用itoa或者sprintf,对于itoa和atoi的使用可以看文章: atoi和itoa极简无废话概述 但是用这两个函数进行转换时,所需要的空间事先不确定,所以可能造成程序崩溃,今天介绍的stringstream可…...
Java基础学习笔记-5
前言 Java编程语言是一门广泛应用于软件开发领域的高级编程语言。它的强大特性和跨平台性使其成为许多开发者的首选语言。本文将介绍一些Java编程的关键概念,包括函数重载、可变参数、值传递、递归等,这些概念是Java编程的基础,对于理解和掌…...
合同交付类项目如何高效管理?
美国项目管理协会(PMI)保罗格蕾斯曾说:“当今社会,一切都是项目,一切也将成为项目。”在“万事皆项目”的背景下,企业在运营过程中会产生大量的项目型业务活动,例如:举办市场活动、产品研发、进行企业内训、采购招标、工程建设等等。那么按照…...
两性养生网站源码 生活类减肥网站源码 健康网模板源码 支持QQ登录和百度主动推送
本套模板非常适合生活类,两性类,减肥类等等类型的网站,这类型网站比较好做流量,因为客户群体众多, 可以自行改内容为其他类型网站模板总体非常简洁漂亮,配色合理,视觉舒服,并且配合…...
CentOS7安装Jenkins(更改默认运行的端口号8080->16060)
第一步: 端口号为默认8080 的安装是:Jenkins安装配置 第二步:将默认运行端口8080—>16060 首先修改配置文件 修改配置文件:vi /etc/sysconfig/jenkins修改内容:# 服务监听端口JENKINS_PORT"16060"然后…...
Java开发之Mysql【面试篇 完结版】
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、知识体系二、Mysql-优化1. 优化-如何定位慢查询① 问题引入② 解决方案③ 问题总结④ 实战面试 2. 优化-sql执行很慢,如何解决① 问题引入② 解…...
【实战】十二、自动化测试 —— React17+React Hook+TS4 最佳实践,仿 Jira 企业级项目(二十九)
文章目录 一、项目起航:项目初始化与配置二、React 与 Hook 应用:实现项目列表三、TS 应用:JS神助攻 - 强类型四、JWT、用户认证与异步请求五、CSS 其实很简单 - 用 CSS-in-JS 添加样式六、用户体验优化 - 加载中和错误状态处理七、Hook&…...
【人月神话】重新探索人月神话:软件工程的现实与挑战
人月神话是一篇由美国软件工程师弗雷德里克布鲁克斯所写的软件工程经典之作,最早发表于1975年。这篇文章的全名是《人月神话:软件工程的神话与现实》(The Mythical Man-Month: Essays on Software Engineering),它涵盖…...
电阻和电容
目录 1、常见的电阻器 2、电容 编辑 1、常见的电阻器 对于电阻需要了解三个参数(查询电阻的数据手册): 1、封装:就是电阻的尺寸或者大小,看焊在你的pcb板上是否合适。 2、标称:电阻的电阻大小、精度、…...
01-Java-日志框架
1 日志技术概述 1.1 什么是日志技术 日志技术是一种记录和存储应用程序运行时信息的技术。它可以捕获应用程序的状态、事件、错误和警告等信息,并将其保存到日志文件或其他存储介质中。日志技术可以帮助开发人员和运维团队了解应用程序的运行情况,进…...
【js】map、filter、reduce、fill(待补充...)
const arr [{ id: 1, flag: true },{ id: 2, flag: true },{ id: 3, flag: false },{ id: 4, flag: true }, ]map:返回的是对每个元素进行操作后的结果数组,这个数组的长度和原数组相同 const result arr.map((item: any) > {return item.flag fa…...
【JPC出版】第二届能源与电力系统国际学术会议 (ICEEPS 2023)
第二届能源与电力系统国际学术会议 (ICEEPS 2023) 2023 2nd International Conference on Energy and Electrical Power Systems 第二届能源与电力系统国际学术会议 (ICEEPS 2023)将于2023年10月27日至29日在中国厦门举行。ICEEPS 将汇集能源科学、电气工程和电力系统领域的…...
51单片机的简易篮球计分器倒计时仿真设计( proteus仿真+程序+原理图+报告+讲解视频)
51单片机的简易篮球计分器倒计时仿真设计( proteus仿真程序原理图报告讲解视频) 1.主要功能:2.仿真3. 程序代码4. 原理图5. 设计报告6. 设计资料内容清单&&下载链接 51单片机的简易篮球计分器倒计时仿真设计( proteus仿真程序原理图报告讲解视频…...
网站建设推广平台/百度推广客户端电脑版
/*使用PrepareStatement数据批量操作 * update、delete本身就具有批量操作的效果。 * 此时的批量操作,主要指的是批量插入。使用PreparedStatement如何实现更高效的批量插入?* 题目:向goods表中插入20000条数据* CREATE TABLE goods(id INT P…...
外贸营销网站建设方案/seo快速排名多少钱
不论是典型的注册开发商,还是运营商管理的CP/SP,都可以通过开发商互联网或者运营商互联网使用另外的两个在线工具:ClassID生成器和测试签名生成器。 通过ClassID生成器可以为应用生成一个全球唯一的ClassID,在线工具的主要功能部分…...
电子商务网站建设收获/湖南网站建设工作室
原文网址:http://blog.sina.com.cn/s/blog_5bdee3020101pvgy.html 市面上,经常充斥着,大量双卡双待手机,而许多消费者只是知道这种手机可以插入两个卡,直接打电话,而你真正的理解其中的含义吗? …...
wordpress手机速度插件/湖南seo推广系统
1、SortedList定义 System.Collections.SortedList类表示键/值对的集合,这些键值对按键排序并可按照键和索引访问。SortedList 在内部维护两个数组以存储列表中的元素;即,一个数组用于键,另一个数组用于相关联的值。每个元素都是一…...
做网站的研究生专业/windows优化大师官方
1、TinyMCE下载 官方下载网址:http://www.tinymce.com/ 简体中文语言包下载:http://www.tinymce.com/i18n/index.php?ctrllang&actdownload&pr_id1 2、下载包中示例 代码: <!DOCTYPE html> <html> <head><titl…...
济南正规网站建设公司/大一网页设计作业成品免费
图论学习:https://blog.csdn.net/Fire_to_cheat_/article/details/80028763 关于图的几个概念定义: 连通图: 在无向图中,若任意两个顶点vivi与vjvj都有路径相通,则称该无向图为连通图。强连通图: 在有向图…...