[SSM]MyBatisPlus进阶

三、进阶篇

3.1映射

3.1.1自动映射规则

  • 表名和实体类名映射 -> 表名user 实体类名User
  • 字段名和实体类属性名映射 -> 字段名name 实体类属性名name
  • 字段名下划线命名方式和实体类属性驼峰命名方式映射 -> 字段名 user_email 实体类属性名 userEmail

开启驼峰命名

mybatis-plus.configuration.map-underscore-to-camel-case=true

3.1.2表映射

  • 通过@TableName()注解指定映射的数据库表名,就会按照指定的表名进行映射
  • 如:此时将数据库的表名改为t_user,要完成表名和实体类名的映射,需要将实体类名也要指定为t_user
@Data
@NoArgsConstructor
@AllArgsConstructor
@TableName("t_user")
public class User {private Long id;private String name;private Integer age;private String email;
}
  • 如果有很多实体类,对应到数据库表中的很多表,我们不需要每个依次配置,只需要配置一个全局的设置,他都会给每个实体类名前面添加指定的前缀。
#表映射全局配置
mybatis-plus.global-config.db-config.table-prefix=t_

3.1.3字段映射

  • 什么场景下会改变字段映射呢?

场景一

  • 当数据库字段和表实体类的属性不一致时,我们可以使用@TableField()注解改变字段和属性的映射,让注解中的名称和表字段保持一致。

  • 如:此时数据库字段的名称我们改为username,在根据实体类的属性拼接SQL的使用,就会使用@TableField()中指定的名称username进行拼接,完成查询

    @TableField("username")private String name;
  • 此时的SQL语句是这样的
SELECT id,username AS name,email FROM t_user

场景二

  • 数据库字段和表实体类的属性一致,框架在拼接SQL语句的时候,会使用属性名称直接拼接SQL语句,例如:
SELECT  id,username AS name,age,email,desc  FROM t_user
  • 这条语句直接进行查询的时候,会出现错误:

Error querying database. Cause: java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘desc FROM t_user’ at line 1

  • 原因是desc属于关键字,不能直接用于SQL查询,要解决这个问题,就需要将desc字段加上符号,将他变为非关键字,才能完成查询。这个问题的根本也是改变生成的SQL语句的字段名称,也就是我们需要通过@TableField()改变实体类的属性名称,将desc变为desc,就可以解决这个问题
@TableField("`desc`")
private String desc;

3.1.4字段失效

  • 当数据库中有字段不希望被查询,我们可以通过@Table(select=false)来隐藏这个字段,拿在拼接SQL语句的时候,就不会拼接这个字段。
  • 如:如果不想显示年龄信息,那么可以在age属性上添加这个注解来隐藏这个字段
@TableField(select = false)
private Integer age;
  • 通过查询生成的SQL语句,发现并没有拼接age字段

3.1.5视图属性

  • 在实际开发中,有些字段不需要数据库存储,但是却需要展示,需要展示也就是意味着实体类中需要存在这个字段,我们称这些实体类中存在但是数据库中不存在这个字段,叫做视图字段。

  • 我们可以通过@TableField(exist=false)来去掉这个字段,不让他作为查询字段。

@TableField(exist = false)
private Integer online;
  • 通过查询生成的SQL语句,发现并没有online字段

3.2条件构造器

3.3等值查询

3.3.1eq

  • 使用QueryWrapper对象,构建查询条件
@Test
void eq() {//1.创建条件查询对象QueryWrapper<User> queryWrapper = new QueryWrapper<>();//2.设置查询条件,指定查询的字段和匹配的值queryWrapper.eq("username","Jack");//3.进行条件查询User user = userMapper.selectOne(queryWrapper);System.out.println(user);
}
  • 测试效果

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  • 如果我们每次都是自己进行字段名称的编写,有可能会出现名称写错的情况,怎么避免这种情况呢,我们可以使用LambdaQueryWrapper对象,在构建字段时,使用方法引用的方式来选择字段,这样做可以避免字段拼写错误。
@Test
void eq2() {LambdaQueryWrapper<User> lambdaQueryWrapper = new LambdaQueryWrapper<>();lambdaQueryWrapper.eq(User::getName,"Jack");User user = userMapper.selectOne(lambdaQueryWrapper);System.out.println(user);
}
  • 我们的构建条件是从哪里来的?应该是从客户端通过请求发送过来的,由服务器接收的。在网站中一般都会有多个条件入口,用户可以选择一个或多个条件进行查询,那这个时候在请求时,我们不能确定所有的条件都是有值的,部分条件可能用户没有传值,那么该条件就为null。
  • 那么null的条件,我们是不需要进行查询条件拼接的,否则就会出现如下情况,将为null的条件进行拼接,筛选后无法查询出结果。
@Test
void isNull() {LambdaQueryWrapper<User> lambdaQueryWrapper = new LambdaQueryWrapper<>();lambdaQueryWrapper.eq(User::getName,null);User user = userMapper.selectOne(lambdaQueryWrapper);System.out.println(user);
}

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  • 我们要解决这个问题,可以先判断是否为空,根据判断结果选择是否拼接该字段。
@Test
void isNUll2() {LambdaQueryWrapper<User> lambdaQueryWrapper = new LambdaQueryWrapper<>();//String username="Jone";String username=null;lambdaQueryWrapper.eq(username!=null,User::getName,username);//User user = userMapper.selectOne(lambdaQueryWrapper);List<User> user = userMapper.selectList(lambdaQueryWrapper);System.out.println(user);
}

3.3.2allEq

  • 如何通过多个eq,构建多条件查询
@Test
void allEq1() {LambdaQueryWrapper<User> lambdaQueryWrapper = new LambdaQueryWrapper<>();lambdaQueryWrapper.eq(User::getName,"Tom");lambdaQueryWrapper.eq(User::getAge,28);User user = userMapper.selectOne(lambdaQueryWrapper);System.out.println(user);
}
  • 如果此时有多个条件需要同时判断,我们可以将这多个条件放入到Map集合中,更加的方便。
@Test
void allEq2() {//1.构建条件MapHashMap<String, Object> map = new HashMap<>();map.put("username","Tom");//map.put("age",28);map.put("age",null);//2.创建QueryWrapper对象QueryWrapper<User> queryWrapper = new QueryWrapper<>();//3.使用条件完成查询queryWrapper.allEq(map,false);User user = userMapper.selectOne(queryWrapper);System.out.println(user);
}
  • 参数params:表示传递的Map集合
  • 参数null2IsNull:表示对于为null的条件是否判断为isNull

3.3.3ne

  • 不等ne
@Test
void ne() {LambdaQueryWrapper<User> lambdaQueryWrapper = new LambdaQueryWrapper<>();lambdaQueryWrapper.ne(User::getName,"Tom");List<User> users = userMapper.selectList(lambdaQueryWrapper);System.out.println(users);
}

3.4范围查询

3.4.1gt

@Test
void gt() {LambdaQueryWrapper<User> lambdaQueryWrapper = new LambdaQueryWrapper<>();lambdaQueryWrapper.gt(User::getAge,20);List<User> users = userMapper.selectList(lambdaQueryWrapper);System.out.println(users);
}

3.4.2ge

@Test
void ge() {LambdaQueryWrapper<User> lambdaQueryWrapper = new LambdaQueryWrapper<>();lambdaQueryWrapper.ge(User::getAge,20);List<User> users = userMapper.selectList(lambdaQueryWrapper);System.out.println(users);
}

3.4.3lt

@Test
void lt() {LambdaQueryWrapper<User> lambdaQueryWrapper = new LambdaQueryWrapper<>();lambdaQueryWrapper.lt(User::getAge,20);List<User> users = userMapper.selectList(lambdaQueryWrapper);System.out.println(users);
}

3.4.4le

@Test
void le() {LambdaQueryWrapper<User> lambdaQueryWrapper = new LambdaQueryWrapper<>();lambdaQueryWrapper.le(User::getAge,20);List<User> users = userMapper.selectList(lambdaQueryWrapper);System.out.println(users);
}

3.4.5between

@Test
void between() {LambdaQueryWrapper<User> lambdaQueryWrapper = new LambdaQueryWrapper<>();lambdaQueryWrapper.between(User::getAge,20,28);List<User> users = userMapper.selectList(lambdaQueryWrapper);System.out.println(users);
}

3.4.6notBetween

@Test
void notBetween() {LambdaQueryWrapper<User> lambdaQueryWrapper = new LambdaQueryWrapper<>();lambdaQueryWrapper.notBetween(User::getAge,20,28);List<User> users = userMapper.selectList(lambdaQueryWrapper);System.out.println(users);
}

3.5模糊查询

@Test
void like() {LambdaQueryWrapper<User> lambdaQueryWrapper = new LambdaQueryWrapper<>();lambdaQueryWrapper.like(User::getName,"J");List<User> users = userMapper.selectList(lambdaQueryWrapper);System.out.println(users);
}@Test
void notLike() {LambdaQueryWrapper<User> lambdaQueryWrapper = new LambdaQueryWrapper<>();lambdaQueryWrapper.notLike(User::getName,"J");List<User> users = userMapper.selectList(lambdaQueryWrapper);System.out.println(users);
}@Test
void likeLeft() {LambdaQueryWrapper<User> lambdaQueryWrapper = new LambdaQueryWrapper<>();lambdaQueryWrapper.likeLeft(User::getName,"e");List<User> users = userMapper.selectList(lambdaQueryWrapper);System.out.println(users);
}@Test
void likeRight() {LambdaQueryWrapper<User> lambdaQueryWrapper = new LambdaQueryWrapper<>();lambdaQueryWrapper.likeRight(User::getName,"J");List<User> users = userMapper.selectList(lambdaQueryWrapper);System.out.println(users);
}

3.6判空查询

Test
void isNull() {LambdaQueryWrapper<User> lambdaQueryWrapper = new LambdaQueryWrapper<>();lambdaQueryWrapper.isNull(User::getDesc);List<User> users = userMapper.selectList(lambdaQueryWrapper);System.out.println(users);
}@Test
void isNotNull() {LambdaQueryWrapper<User> lambdaQueryWrapper = new LambdaQueryWrapper<>();lambdaQueryWrapper.isNotNull(User::getName);List<User> users = userMapper.selectList(lambdaQueryWrapper);System.out.println(users);
}

3.7包含查询

3.7.1in

@Test
void in() {LambdaQueryWrapper<User> lambdaQueryWrapper = new LambdaQueryWrapper<>();lambdaQueryWrapper.in(User::getAge, 18, 20, 21);List<User> users = userMapper.selectList(lambdaQueryWrapper);System.out.println(users);
}
@Test
void in2() {LambdaQueryWrapper<User> lambdaQueryWrapper = new LambdaQueryWrapper<>();ArrayList<Integer> list = new ArrayList<>();//Collections.addAll(list,18,20,21);list.add(18);list.add(20);list.add(21);lambdaQueryWrapper.in(User::getAge, list);List<User> users = userMapper.selectList(lambdaQueryWrapper);System.out.println(users);
}

3.7.2notIn

@Test
void notIn() {LambdaQueryWrapper<User> lambdaQueryWrapper = new LambdaQueryWrapper<>();lambdaQueryWrapper.notIn(User::getAge, 18, 20, 21);List<User> users = userMapper.selectList(lambdaQueryWrapper);System.out.println(users);
}
@Test
void notIn2() {LambdaQueryWrapper<User> lambdaQueryWrapper = new LambdaQueryWrapper<>();ArrayList<Integer> list = new ArrayList<>();Collections.addAll(list,18,20,21);lambdaQueryWrapper.notIn(User::getAge,list);List<User> users = userMapper.selectList(lambdaQueryWrapper);System.out.println(users);
}

3.7.3inSql

@Test
void inSql() {LambdaQueryWrapper<User> lambdaQueryWrapper = new LambdaQueryWrapper<>();lambdaQueryWrapper.inSql(User::getAge, "18,20,21");List<User> users = userMapper.selectList(lambdaQueryWrapper);System.out.println(users);
}
@Test
void inSql2() {LambdaQueryWrapper<User> lambdaQueryWrapper = new LambdaQueryWrapper<>();lambdaQueryWrapper.inSql(User::getAge, "select age from t_user where age>=20");List<User> users = userMapper.selectList(lambdaQueryWrapper);System.out.println(users);
}

3.7.4notInSql

@Test
void notInSql() {LambdaQueryWrapper<User> lambdaQueryWrapper = new LambdaQueryWrapper<>();lambdaQueryWrapper.notInSql(User::getAge, "18,20,21");List<User> users = userMapper.selectList(lambdaQueryWrapper);System.out.println(users);
}
@Test
void notInSql2() {LambdaQueryWrapper<User> lambdaQueryWrapper = new LambdaQueryWrapper<>();lambdaQueryWrapper.notInSql(User::getAge, "select age from t_user where age>20");List<User> users = userMapper.selectList(lambdaQueryWrapper);System.out.println(users);
}

3.8分组查询

@Test
void groupBy() {QueryWrapper<User> queryWrapper = new QueryWrapper<>();//分组字段queryWrapper.groupBy("age");//查询字段queryWrapper.select("age,count(*) as field_count");List<User> users = userMapper.selectList(queryWrapper);System.out.println(users);
}

3.9聚合查询

@Test
void having() {QueryWrapper<User> queryWrapper = new QueryWrapper<>();//分组字段queryWrapper.groupBy("age");//查询字段queryWrapper.select("age,count(*) as field_count");//聚合字段queryWrapper.having("field_count>1");List<User> users = userMapper.selectList(queryWrapper);System.out.println(users);
}

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

3.10排序查询

@Test
void orderByAsc() {LambdaQueryWrapper<User> lambdaQueryWrapper = new LambdaQueryWrapper<>();lambdaQueryWrapper.orderByAsc(User::getAge,User::getId);List<User> users = userMapper.selectList(lambdaQueryWrapper);System.out.println(users);
}

@Test
void orderByDesc() {LambdaQueryWrapper<User> lambdaQueryWrapper = new LambdaQueryWrapper<>();lambdaQueryWrapper.orderByDesc(User::getAge,User::getId);List<User> users = userMapper.selectList(lambdaQueryWrapper);System.out.println(users);
}
@Test
void orderBy() {LambdaQueryWrapper<User> lambdaQueryWrapper = new LambdaQueryWrapper<>();/*** oderBy:设置排序字段和排序的方式* 参数一:如果排序字段的值为null,是否还要作为排序字段参与排序* 参数二:是否升序排序* 参数三:排序字段*/lambdaQueryWrapper.orderBy(true, true, User::getAge);lambdaQueryWrapper.orderBy(true, false, User::getId);List<User> users = userMapper.selectList(lambdaQueryWrapper);System.out.println(users);
}

3.11func查询

@Testvoid func() {LambdaQueryWrapper<User> lambdaQueryWrapper = new LambdaQueryWrapper<>();//可能会根据不同的情况来选择进行拼接不同的查询条件/*lambdaQueryWrapper.func(new Consumer<LambdaQueryWrapper<User>>() {@Overridepublic void accept(LambdaQueryWrapper<User> userLambdaQueryWrapper) {if (true){userLambdaQueryWrapper.eq(User::getId,1);}else {userLambdaQueryWrapper.ne(User::getId,1);}}});*///使用lambda表达式lambdaQueryWrapper.func(i -> {if (true) {i.eq(User::getId, 1);} else {i.ne(User::getId, 1);}});List<User> users = userMapper.selectList(lambdaQueryWrapper);System.out.println(users);}

3.12逻辑查询

3.12.1and

  • 正常拼接默认就是and,例如
@Test
void and() {LambdaQueryWrapper<User> lambdaQueryWrapper = new LambdaQueryWrapper<>();lambdaQueryWrapper.gt(User::getAge,20).lt(User::getAge,30);List<User> users = userMapper.selectList(lambdaQueryWrapper);System.out.println(users);
}
@Test
void and2() {LambdaQueryWrapper<User> lambdaQueryWrapper = new LambdaQueryWrapper<>();lambdaQueryWrapper.eq(User::getName,"Jone").and(i->i.lt(User::getAge,20).or().gt(User::getAge,30));List<User> users = userMapper.selectList(lambdaQueryWrapper);System.out.println(users);
}

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

3.12.2or

@Test
void or() {LambdaQueryWrapper<User> lambdaQueryWrapper = new LambdaQueryWrapper<>();lambdaQueryWrapper.lt(User::getAge, 20).or().gt(User::getAge, 30);List<User> users = userMapper.selectList(lambdaQueryWrapper);System.out.println(users);
}
@Test
void or2() {LambdaQueryWrapper<User> lambdaQueryWrapper = new LambdaQueryWrapper<>();lambdaQueryWrapper.likeRight(User::getName,"J").or(i->i.ge(User::getAge,20).le(User::getAge,30));List<User> users = userMapper.selectList(lambdaQueryWrapper);System.out.println(users);
}

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

3.12.3nested

@Test
void nested() {LambdaQueryWrapper<User> lambdaQueryWrapper = new LambdaQueryWrapper<>();lambdaQueryWrapper.nested(i->i.eq(User::getName,"Tom").ne(User::getAge,23));List<User> users = userMapper.selectList(lambdaQueryWrapper);System.out.println(users);
}

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

3.13自定义条件查询

@Test
void apply() {LambdaQueryWrapper<User> lambdaQueryWrapper = new LambdaQueryWrapper<>();lambdaQueryWrapper.apply("id=2");List<User> users = userMapper.selectList(lambdaQueryWrapper);System.out.println(users);
}

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

3.14last查询

@Test
void last() {LambdaQueryWrapper<User> lambdaQueryWrapper = new LambdaQueryWrapper<>();lambdaQueryWrapper.last("limit 0,2");List<User> users = userMapper.selectList(lambdaQueryWrapper);System.out.println(users);
}

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

3.15exists查询

3.15.1exists

@Test
void exists() {LambdaQueryWrapper<User> lambdaQueryWrapper = new LambdaQueryWrapper<>();lambdaQueryWrapper.exists("select id from t_user where age=18");List<User> users = userMapper.selectList(lambdaQueryWrapper);System.out.println(users);
}
  • select id from t_user where age=18语句能查询到结果,执行SELECT id,username AS name,age,email,desc FROM t_user语句,否则不执行。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

3.15.2notExists

@Test
void notExists() {LambdaQueryWrapper<User> lambdaQueryWrapper = new LambdaQueryWrapper<>();lambdaQueryWrapper.notExists("select id from t_user where age=18");List<User> users = userMapper.selectList(lambdaQueryWrapper);System.out.println(users);
}
  • 查询结果与exists相反。

3.16字段查询

@Test
void select() {LambdaQueryWrapper<User> lambdaQueryWrapper = new LambdaQueryWrapper<>();lambdaQueryWrapper.select(User::getId, User::getName);List<User> users = userMapper.selectList(lambdaQueryWrapper);System.out.println(users);
}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Unity3D赛车游戏优化篇】【九】Unity中如何让汽车丝滑漂移?

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 秩沅 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a;Uni…

CocosCreator3.8研究笔记(三)CocosCreator 项目结构说明及编辑器的简单使用

我们通过Dashboard 创建一个2d项目&#xff0c;来演示CocosCreator 的项目结构。 等待创建完成后&#xff0c;会得到以下项目工程&#xff1a; 一、assets文件夹 assets文件夹&#xff1a;为资源目录&#xff0c;用来存储所有的本地资源&#xff0c;如各种图片&#xff0c;脚本…

webpack(三)loader

定义 loader用于对模块的源代码进行转换&#xff0c;在imporrt或加载模块时预处理文件 webpack做的事情&#xff0c;仅仅是分析出各种模块的依赖关系&#xff0c;然后形成资源列表&#xff0c;最终打包生成到指定文件中。 在webpack内部&#xff0c;任何文件都是模块&#x…

健康舒适的超满意照明体验!SUKER书客SKY护眼台灯测评

健康舒适的超满意照明体验&#xff01;SUKER书客SKY护眼台灯测评 2022年全国儿童青少年总体近视率为53.6%&#xff0c;其中6岁儿童为14.5%&#xff0c;小学生为36%&#xff0c;初中生为71.6%&#xff0c;高中生为81%&#xff0c;近视已成为当下人们遇到的比较普遍的眼健康问题…

qt连接tcp通信和连接数据库

通过数据库实现学生管理系统 widget.cpp #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this);//判断数据库对象是否包含了自己使用的数据库 Studemt.dbif(!db.co…

线性表之-单向链表(无头)

目录 什么是单向链表 顺序表和链表的区别和联系 顺序表&#xff1a; 链表&#xff1a; 链表表示(单项)和实现 1.1 链表的概念及结构 1.2单链表(无头)的实现 所用文件 将有以下功能&#xff1a; 链表定义 创建新链表元素 尾插 头插 尾删 头删 查找-给一个节点的…

没有软件怎么管理固定资产

在当今数字化的世界中&#xff0c;我们已经习惯了使用各种软件来管理我们的日常生活和工作。然而&#xff0c;当我们面临一个看似简单的问题——如何管理固定资产时&#xff0c;我们可能会感到困惑。那么&#xff0c;如果没有软件&#xff0c;我们该如何进行资产管理呢&#xf…

ClickHouse配置Hdfs存储数据

文章目录 背景配置单机配置HA高可用Hdfs集群性能测试统计trait最多的10个trait term统计性状xxx minValue > 500 0000的数量结论 参考文档 背景 由于公司初始使用Hadoop这一套&#xff0c;所以希望ClickHouse也能使用Hdfs作为存储 看了下ClickHouse的文档&#xff0c;拿Hdf…

【核心复现】基于改进灰狼算法的并网交流微电网经济优化调度(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

无涯教程-Flutter - 简介

Flutter是一个由谷歌开发的开源移动应用软件开发工具包&#xff0c;用于为Android、iOS、 Windows、Mac、Linux、Google Fuchsia开发应用。 通常&#xff0c;创建移动应用程序是一个非常复杂和具有挑战性的任务。有许多框架可用&#xff0c;它提供了开发移动应用程序的出色函数…

es倒排索引深入解读

文章目录 一. Lucene二.倒排索引算法2.1 Posting List压缩算法2.1.1 FOR2.1.2 RoaringBitmap压缩 2.3 FST压缩算法2.3.1 trie前缀树原理2.3.2 FST构建过程NFADFAFSMFSAFST:有限状态转换机构建原理FST在lucene中实现原理 1.什么是搜索引擎? 全文搜索引擎: 自然语言处理(NLP)、爬…

华为OD机试 - 等和子数组最小和 - 深度优先搜索(Java 2022 Q4 100分)

目录 专栏导读一、题目描述二、输入描述三、输出描述四、解题思路五、Java算法源码六、效果展示1、输入2、输出 华为OD机试 2023B卷题库疯狂收录中&#xff0c;刷题点这里 专栏导读 本专栏收录于《华为OD机试&#xff08;JAVA&#xff09;真题&#xff08;A卷B卷&#xff09;》…

无涯教程-Android - Grid View函数

Android GridView在二维滚动网格(行和列)中显示项目&#xff0c;并且网格项目不一定是预定的&#xff0c;但它们会使用ListAdapter自动插入到布局中 Grid View - Grid view ListView 和 GridView 是 AdapterView 的子类&#xff0c;可以通过将它们绑定到 Adapter 来填充&#x…

flutter 上传图片并裁剪

1.首先在pubspec.yaml文件中新增依赖pub.dev image_picker: ^0.8.75 image_cropper: ^4.0.1 2.在Android的AndroidManifest.xml文件里面添加权限 <activityandroid:name"com.yalantis.ucrop.UCropActivity"android:screenOrientation"portrait"andro…

C#添加WebApi,配置Swagger

1、创建一个WebAPI项目 下载、安装、引入【Swashbuckle.AspNetCore】包 右击【解决方案】&#xff0c;然后点击【管理Nuget包】&#xff0c;搜索【Swashbuckle.AspNetCore】包 2、配置Swagger中间件 在【Startup.cs】文件中的【ConfigureService】类中添加如下代码。 在【Sta…

Spring AOP与静态代理/动态代理

文章目录 一、代理模式静态代理动态代理代理模式与AOP 二、Spring AOPSping AOP用来处理什么场景jdk 动态代理cglib 动态代理面试题&#xff1a;讲讲Spring AOP的原理与执行流程 总结 一、代理模式 代理模式是一种结构型设计模式&#xff0c;它允许对象提供替代品或占位符&…

肖sir__设计测试用例方法之边界值03_(黑盒测试)

设计测试用例方法之边界值 边界点定义 上点&#xff1a;边界上的点 离点&#xff1a;离上点最近的点&#xff08;即上点左右两边最邻近的点&#xff09; 内点&#xff1a;在域范围内的点 案例&#xff1a;qq号&#xff1a;5-12位 闭区间&#xff1a; 离点&#xff1a;5 位 &…

KC705开发板——MGT IBERT测试记录

本文介绍使用KC705开发板进行MGT的IBERT测试。 KC705开发板 KC705开发板的图片如下图所示。FPGA芯片型号为XC7K325T-2FFG900C。 MGT MGT是 Multi-Gigabit Transceiver的缩写&#xff0c;是Multi-Gigabit Serializer/Deserializer (SERDES)的别称。MGT包含GTP、GTX、GTH、G…

Calico IP In IP模拟组网

Calico IP In IP模拟组网 网络架构 模拟组网 先在k8s-master-1节点执行如下命令&#xff1a; # 创建veth-pair设备对ip link add veth1 type veth peer name eth0# 创建ns1网络命名空间ip netns add ns1# 将eth0网卡插入ns1网络命名空间ip link set eth0 netns ns1# 为ns1网…

CC-TDOB01 CC-TDIL01 有效地监控和管理热工设备

CC-TDOB01 CC-TDIL01 有效地监控和管理热工设备 新兴的互联工厂技术是霍尼韦尔启动其43的亮点注册营养师霍尼韦尔用户组(HUG)美洲研讨会&#xff0c;重点是向制造商展示数字化转型如何帮助他们实现更高水平的高性能。 来自石油和天然气、化工、纸浆和造纸以及金属和采矿行业的…