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

Mybatis-Plus常用的增删改查坑

添加依赖

   <!--实体类上加上@Data注解就不用写get,set,toString,equals等方法了--><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><!--mybatis-plus依赖--><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.1.0</version></dependency>

Mapper接口要继承自BaseMapper并将实体类作为泛型

public interface UserMapper extends BaseMapper<User> {
}

增 insert

User user = new User();
user.setUserName("向南");
user.setAge(32);
user.setEmail("xn@163.com");
user.setManagerId(1088248166370832385L);
int rows = userMapper.insert(user);

删 delete

deleteById

@Test
public void deleteById(){int rows = userMapper.deleteById(1152147420519170050L);System.out.println("删除的记录数:"+rows);
}

deleteByMap

/*** DELETE FROM user WHERE name = ? AND age = ? */
@Test
public void deleteByMap(){HashMap<String, Object> map = new HashMap<>();map.put("age",32);map.put("name","朱上林");int rows = userMapper.deleteByMap(map);System.out.println("删除了:"+rows+"条记录");
}

deleteBatchIds

@Test
public void deleteBatchIds(){int rows = userMapper.deleteBatchIds(
Arrays.asList(1152134491950309377L,1152138510835929090L, 1152139353765216258L));System.out.println("受影响的行数:"+rows);
}

Lambda删除

@Test
public void deleteByLambdaWrapper(){LambdaQueryWrapper<User> lambdaWrapper = new LambdaQueryWrapper<>();// DELETE FROM user WHERE age = ? OR age > ? lambdaWrapper.eq(User::getAge,32).or().gt(User::getAge,40);int rows = userMapper.delete(lambdaWrapper);System.out.println("受影响的行数:"+rows);
}

改 update

updateById

@Test
public void updateUser(){User user = new User();user.setId(1094590409767661571L);user.setAge(28);user.setEmail("zhushanglin@163.com");int rows = userMapper.updateById(user);//UPDATE user SET age=?, email=? WHERE id=? System.out.println("受影响的行数: "+rows);
}

update

@Test
public void updateByWrapper(){UpdateWrapper<User> wrapper = new UpdateWrapper<>();//where条件构造器wrapper.eq("name","朱上林");//set改变的数据设置User user = new User();user.setAge(29);user.setEmail("zhu2019@qq.com");int rows = userMapper.update(user, wrapper);//UPDATE user SET age=?, email=? WHERE name = ?System.out.println("受影响的行数: "+rows);
}

查 select

selectById

@Test
public void selectById(){User user = userMapper.selectById(1088248166370832385L);//SELECT id,name,age,email,manager_id,create_time FROM user WHERE id=?System.out.println(user);
}

selectBatchIds

@Test
public void selectBatchIds(){List<Long> idList = Arrays.asList(1087982257332887553L, 1094590409767661571L, 1152134491950309377L);List<User> userList = userMapper.selectBatchIds(idList);//SELECT id,name,age,email,manager_id,create_time FROM user WHERE id IN ( ? , ? , ? )userList.forEach(System.out::println);
}

selectByMap

@Test
public void selectByMap(){HashMap<String, Object> map = new HashMap<>();map.put("name", "朱上林");map.put("age",26);
//注意map中的key是表中的列,不是实体类中的属性List<User> userList = userMapper.selectByMap(map);//SELECT id,name,age,email,manager_id,create_time FROM user WHERE name = ? AND age = ?userList.forEach(System.out::println);
}

条件构造器查询

/**
*查询名字包含“雨”子,并且年龄小于40
*/
@Test
public void selectByWrapper(){//创建一个查询条件构造器对象QueryWrapper<User> wrapper = new QueryWrapper<>();//构造器赋予条件: WHERE name LIKE ? AND age < ?wrapper.like("name", "%雨%").lt("age",40);//执行条件构造器查询List<User> userList = userMapper.selectList(wrapper);//遍历输出结果userList.forEach(System.out::println);
}/*
查询名字包含“雨”子,并且年龄大于等于20,小于等于40,并且email不为null*/
@Test
public void selectByWrapper2(){//创建一个查询条件构造器对象QueryWrapper<User> wrapper = new QueryWrapper<>();//构造器赋予条件:WHERE name LIKE ? AND age BETWEEN ? AND ? AND email IS NOT NULLwrapper.like("name", "%雨%")
.between("age",20,40)
.isNotNull("email");//执行条件构造器查询List<User> userList = userMapper.selectList(wrapper);//遍历输出结果userList.forEach(System.out::println);
}/*
查询名字为"王"姓,或者年龄大于等于26,先按照年龄降序排列,年龄相同的按照id升序排列*/
@Test
public void selectByWrapper3(){//创建一个查询条件构造器对象QueryWrapper<User> wrapper = new QueryWrapper<>();//构造器赋予条件:WHERE name LIKE 王% OR age >= 26 ORDER BY age DESC , id ASC wrapper.likeRight("name","王").or().ge("age",26).orderByDesc("age").orderByAsc("id");//执行条件构造器查询List<User> userList = userMapper.selectList(wrapper);//遍历输出结果userList.forEach(System.out::println);
}/*
查询创建日期为2019-2-14,并且直属上级领导 姓"王"*/
@Test
public void selectByWrapper4(){//创建一个查询条件构造器对象QueryWrapper<User> wrapper = new QueryWrapper<>();//构造器赋予条件:create_time字段格式化为"年-月-日"后值为2019-02-14,并且,直属上级姓"王"(子查询)//WHERE date_format(create_time,'%Y-%m-%d') = ? AND manager_id IN (select id from user where name like '王%') wrapper.apply("date_format(create_time,'%Y-%m-%d') = {0}","2019-02-14").inSql("manager_id","select id from user where name like '王%'");//执行条件构造器查询List<User> userList = userMapper.selectList(wrapper);//遍历输出结果userList.forEach(System.out::println);
}/*
查询名字为"王"姓 且(年龄小于40或邮箱不为空)*/
@Test
public void selectByWrapper5(){//创建一个查询条件构造器对象QueryWrapper<User> wrapper = new QueryWrapper<>();//构造器赋予条件:WHERE name LIKE ? AND ( age < ? OR email IS NOT NULL )
//wrap->wrap表示将wrapper传一个到后面,前面是一个整体,后面是一个整体,两个整体再andwrapper.likeRight("name","王").and(wrap->wrap.lt("age",40).or().isNotNull("email"));//执行条件构造器查询List<User> userList = userMapper.selectList(wrapper);//遍历输出结果userList.forEach(System.out::println);
}/*
查询年龄大于40 或者(年龄大于20并且邮箱不为空)*/
@Test
public void selectByWrapper6(){//创建一个查询条件构造器对象QueryWrapper<User> wrapper = new QueryWrapper<>();//构造器赋予条件:WHERE age < ? OR ( age >= ? AND email IS NOT NULL ) wrapper.lt("age",40).or(wrap->wrap.ge("age",20).isNotNull("email"));//执行条件构造器查询List<User> userList = userMapper.selectList(wrapper);//遍历输出结果userList.forEach(System.out::println);
}/*
查询(年龄小于40或者邮箱不为空) 并且 名字为"王"姓*/
@Test
public void selectByWrapper7(){//创建一个查询条件构造器对象QueryWrapper<User> wrapper = new QueryWrapper<>();//构造器赋予条件:WHERE ( age < ? OR email IS NOT NULL ) AND name LIKE ? wrapper.nested(wq->wq.lt("age",40).or().isNotNull("email")).likeRight("name","王");//执行条件构造器查询List<User> userList = userMapper.selectList(wrapper);//遍历输出结果userList.forEach(System.out::println);
}/*
查询年龄是30,31,32,33
age in (30,31,32,33)*/
@Test
public void selectByWrapper8(){//创建一个查询条件构造器对象QueryWrapper<User> wrapper = new QueryWrapper<>();//构造器赋予条件:WHERE age IN (?,?,?,?) wrapper.in("age",Arrays.asList(30,31,32,33));//执行条件构造器查询List<User> userList = userMapper.selectList(wrapper);//遍历输出结果userList.forEach(System.out::println);
}

常用构造器

常用条件构造器:
等于 =: eq("name", "老王")--->name = '老王'
不等于 <>: ne("name", "老王")--->name <> '老王'
大于 >: gt("age", 18)--->age > 18
大于等于 >=: ge("age", 18)--->age >= 18
小于 <: lt("age", 18)--->age < 18
小于等于 <=: le("age", 18)--->age <= 18
BETWEEN1 AND2: between("age", 18, 30)
--->age between 18 and 30
NOT BETWEEN1 AND2: notBetween("age", 18, 30)
--->age not between 18 and 30
LIKE '%值%': like("name", "王")
--->name like '%王%'
NOT LIKE '%值%': notLike("name", "王")
--->name not like '%王%'
LIKE '%值': likeLeft("name", "王")
--->name like '%王'
LIKE '值%': likeRight("name", "王")
--->name like '王%'
字段 IS NULL: isNull("name")
--->name is null
字段 IS NOT NULL: isNotNull("name")
--->name is not null
字段 IN: in("age",{1,2,3})
--->age in (1,2,3)
字段NOTIN: notIn("age",{1,2,3})
--->age not in (1,2,3)
字段 IN ( sql语句 ): inSql("id", "select id from table where id < 3")
--->id in (select id from table where id < 3)
字段 NOT IN ( sql语句 ): notInSql("id", "select id from table where id < 3")
--->age not in (select id from table where id < 3)
分组:GROUP BY 字段, ...: groupBy("id", "name")
--->group by id,name
排序:ORDER BY 字段, ... ASC: orderByAsc("id", "name")
--->order by id ASC,name ASC
排序:ORDER BY 字段, ... DESC: orderByDesc("id", "name")
--->order by id DESC,name DESC
HAVING ( sql语句 ): having("sum(age) > 10")
--->having sum(age) > 10: having("sum(age) > {0}", 11)
--->having sum(age) > 11
OR 拼接
例: eq("id",1).or().eq("name","老王")
--->id = 1 or name = '老王'
OR 嵌套
例: or(i -> i.eq("name", "李白").ne("status", "活着"))
--->or (name = '李白' and status <> '活着')
AND 嵌套
例: and(i -> i.eq("name", "李白").ne("status", "活着"))
--->and (name = '李白' and status <> '活着')
apply拼接sql
例: apply("date_format(dateColumn,'%Y-%m-%d') = {0}", "2008-08-08")
--->date_format(dateColumn,'%Y-%m-%d') = '2008-08-08'")

查询部分字段

/**
*查询指定的字段
*/
@Test
public void selectByWrapperSuper(){//创建一个查询条件构造器对象QueryWrapper<User> wrapper = new QueryWrapper<>();//构造器赋予条件: SELECT id,name FROM user WHERE name LIKE ? AND age < ? wrapper.select("id","name").like("name", "%雨%").lt("age",40);//执行条件构造器查询List<User> userList = userMapper.selectList(wrapper);//遍历输出结果userList.forEach(System.out::println);
}
/*** 查询除了name和age的所有有字段,名字中包含"雨",且年龄小于40*/
@Test
public void selectByWrapperSuper2(){//创建一个查询条件构造器对象QueryWrapper<User> wrapper = new QueryWrapper<>();//构造器赋予条件: SELECT id,name FROM user WHERE name LIKE ? AND age < ?wrapper.like("name", "%雨%").lt("age",40)
.select(User.class,info->!info.getColumn().equals("name")&&!info.getColumn().equals("age"));//执行条件构造器查询List<User> userList = userMapper.selectList(wrapper);//遍历输出结果userList.forEach(System.out::println);
}

条件查询

@Test
public void testContdition(){String name = "王";String email = "";//WHERE name LIKE ? ,因为email为空,所以不加入到条件构造器中condition(name, email);
}private void condition(String name, String email){QueryWrapper<User> wrapper = new QueryWrapper<>();//当传过来的参数name,email不为空字符串时,才加入到查询构造器中wrapper.like(StringUtils.isNotEmpty(name),"name",name).like(StringUtils.isNotEmpty(email),"email",email);List<User> userList = userMapper.selectList(wrapper);userList.forEach(System.out::println);
}

创建条件构造器时,传入实体对象

 /*
创建条件构造器时,传入实体对象,就可以代替构造条件wrapper...*/@Testpublic void selectByWrapperEntity(){//创建实体对象User user = new User();user.setAge(26);//相当于WHERE age=26//创建一个查询条件构造器对象QueryWrapper<User> wrapper = new QueryWrapper<>(user);//使用实体对象,就不用构造条件了List<User> userList = userMapper.selectList(wrapper);//遍历输出结果userList.forEach(System.out::println);}

allEq

@Test
public void selectByWrapperAllEq(){//创建一个查询条件构造器对象QueryWrapper<User> wrapper = new QueryWrapper<>();//创建一个参数map对象HashMap<String, Object> params = new HashMap<>();params.put("name", "王天风");params.put("age", null);wrapper.allEq(params);//WHERE name = ? AND age IS NULLList<User> userList = userMapper.selectList(wrapper);userList.forEach(System.out::println);
}

selectMaps

@Test
public void selectByWrapperMaps(){//创建一个查询条件构造器对象QueryWrapper<User> wrapper = new QueryWrapper<>();wrapper.select("id","name").like("name", "雨").lt("age", 40);List<Map<String, Object>> maps = userMapper.selectMaps(wrapper);/*** 这样查询结果只有我们想要的字段和对应的值,没有很多没用的字段和对应的值为null* {name=张雨琪, id=1094590409767661570}* {name=刘红雨, id=1094592041087729666}*/maps.forEach(System.out::println);
}
/*** 按照直属上级分组,查询每组最大年龄,平均年龄,最小年龄,并且只取年龄总和小于500的组* select avg(age) avg_age,max(age) max_age,min(age) min_age* from user* group by manager_id* having sum(age)<500*/
@Test
public void selectByWrapperMaps02(){//创建一个查询条件构造器对象QueryWrapper<User> wrapper = new QueryWrapper<>();wrapper.select("avg(age) avg_age", "max(age) max_age", "min(age) min_age").groupBy("manager_id").having("sum(age)<{0}", 500);List<Map<String, Object>> maps = userMapper.selectMaps(wrapper);/*** {max_age=40, avg_age=40.0000, min_age=40}* {max_age=25, avg_age=25.0000, min_age=25}* {max_age=33, avg_age=29.6250, min_age=26}*/maps.forEach(System.out::println);
}

selectCount

/*** 查询名字中有"雨"子的记录数量
* 注意查询记录数量,不能查询具体的列名*/
@Test
public void selectCount(){QueryWrapper<User> wrapper = new QueryWrapper<>();wrapper.like("name","雨");Integer count = userMapper.selectCount(wrapper);System.out.println(count);
}

Lambda条件构造器

好处:可以放置列名写错,写错编译就不通过

VehicleBO one = vehicleService.getOne(Wrappers.<VehicleBO>lambdaQuery().eq(VehicleBO::getVin, reqVo.getVin()));
/*** Lambda条件构造器* 查询王姓,年龄小于40*/
@Test
public void selectLambdaWrapper(){// 创建Lambda条件构造器LambdaQueryWrapper<User> lambdaWrapper = new LambdaQueryWrapper<>();//设置Lambda条件:WHERE name LIKE ? AND age < ? lambdaWrapper.like(User::getName,"雨").lt(User::getAge, 40);List<User> userList = userMapper.selectList(lambdaWrapper);userList.forEach(System.out::println);
}
/*** Lambda条件构造器* name like '王%' and (age<40or email is not null)*/
@Test
public void selectLambdaWrapper2(){// 创建Lambda条件构造器LambdaQueryWrapper<User> lambdaWrapper = new LambdaQueryWrapper<>();//设置Lambda条件:WHERE name LIKE ? AND ( age < ? OR email IS NOT NULL ) lambdaWrapper.likeRight(User::getName,"王").and(lwq->lwq.lt(User::getAge,40)//and(lwq->lwq)嵌套
.or().isNotNull(User::getEmail));//or()拼接List<User> userList = userMapper.selectList(lambdaWrapper);userList.forEach(System.out::println);
}

分页查询

配置分页插件类
在这里插入图片描述
分页查询selectPage

 /*分页查询:年龄大于26岁
*/@Testpublic void selectPage(){//创建一个查询条件构造器对象QueryWrapper<User> wrapper = new QueryWrapper<>();wrapper.gt("age",26);//创建一个Page对象:从第一页开始查询,每页5条数据Page<User> page = new Page<>(1, 5);
/***  Page<User> page = new Page<>(1, 5,false);
*  这样表示不查询总记录数*///selectPage返回一个Ipage对象IPage<User> iPage = userMapper.selectPage(page, wrapper);//Ipage对象中有总页数,总记录条数,所有记录的get方法System.out.println("总页数"+iPage.getPages());System.out.println("总记录条数"+iPage.getTotal());List<User> userList = iPage.getRecords();userList.forEach(System.out::println);}
 /*分页查询:年龄大于26岁的姓名和年龄
*/@Testpublic void selectMapPage(){//创建一个查询条件构造器对象QueryWrapper<User> wrapper = new QueryWrapper<>();wrapper.select("name", "age").gt("age",26);//创建一个Page对象:从第一页开始查询,每页5条数据Page<User> page = new Page<>(1, 5);//selectPage返回一个Ipage对象IPage<Map<String, Object>> iPage = userMapper.selectMapsPage(page, wrapper);//Ipage对象中有总页数,总记录条数,所有记录的get方法System.out.println("总页数"+iPage.getPages());System.out.println("总记录条数"+iPage.getTotal());List<Map<String, Object>> userList = iPage.getRecords();userList.forEach(System.out::println);}

Cause: java.sql.SQLIntegrityConstraintViolationException: ORA-01400: 无法将 NULL 插入 (“ZHXY_RSW_LOCAL”.“T_EXAM_SUBJECT”.“ID”)
使用mybatis-plus插入时,明明设置了id的值,还报这个错
在id字段上,添加 @TableId(type = IdType.INPUT)
在这里插入图片描述

相关文章:

Mybatis-Plus常用的增删改查坑

添加依赖 <!--实体类上加上Data注解就不用写get&#xff0c;set&#xff0c;toString&#xff0c;equals等方法了--><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional…...

初识指针(4)<C语言>

前言 前面的文章&#xff0c;已经对指针的基础概念以及运用有了初步了解&#xff0c;我们可以进一步探究指针比较深入的知识&#xff0c;下文将主要介绍&#xff1a;使用指针数组模拟二维数组、字符指针变量、数组指针、二维数组传参的本质、函数指针、typedef关键字等。 目录…...

pyqt 工具栏QToolBar控件

pyqt 工具栏QToolBar控件 QToolBar控件介绍效果代码 QToolBar控件介绍 QToolBar 是 PyQt&#xff08;中的一个控件&#xff0c;它提供了一个工具栏&#xff0c;通常包含一系列的工具按钮或下拉菜单&#xff0c;用于提供对应用程序功能的快速访问。 QToolBar 通常与 QMainWind…...

SystemVerilog/Verilog中的仿真延时建模之模块路径延时

一 概要 模块路径延迟,描述的是模块中信号从源端到目的端传输的延迟。 路径以及对应的延迟是在模块中的specify块中指定的,其中信号源端一般为input或者inout,而目的端则只能为output或者inout.在specify中指定的模块路径,常见的形式主要三种,分别是: 简单路径(Simple Path…...

代码随想录算法训练营Day36 | 738.单调递增的数字、968.监控二叉树、贪心算法总结 | Python | 个人记录向

本文目录 738.单调递增的数字做题看文章 968.监控二叉树做题看文章 贪心算法总结以往忽略的知识点小结个人体会 738.单调递增的数字 代码随想录&#xff1a;738.单调递增的数字 Leetcode&#xff1a;738.单调递增的数字 做题 无思路。 看文章 例如&#xff1a;98&#xff…...

FME学习之旅---day26

我们付出一些成本&#xff0c;时间的或者其他&#xff0c;最终总能收获一些什么。 【由于上周&#xff0c;上班状态不是很好&#xff0c;事情多又杂&#xff0c;没有学习的劲头&#xff0c;就短暂的休息了一下下。双休爬山&#xff0c;给自己上了强度&#xff0c;今天才缓过来…...

JAVA学习-练习试用Java实现电话号码的字母组合

问题: 给定一个仅包含数字 2-9 的字符串&#xff0c;返回所有它能表示的字母组合。答案可以按 任意顺序 返回。 给出数字到字母的映射如下&#xff08;与电话按键相同&#xff09;。注意 1 不对应任何字母。 示例 1&#xff1a; 输入&#xff1a;digits "23" 输…...

js代码中关于async await的滥用 async await的滥用

概念&#xff1a; 返回值&#xff1a; async返回一个promise---这个返回值是默认自发行为 async function name1(params) {console.log(params) } let result name1(lion) console.log(result) // Promise { undefined } result.then(res > console.log(res)) // undefin…...

基础算法,贪心算法,贪心策略,OJ练习

文章目录 一、概念二、OJ练习2.1 区间选点2.2 区间合并2.3 区间2.4 合并果子2.5 排队接水2.6 货仓选址2.7 防晒2.8 畜栏预定2.9 雷达设备2.10 国王游戏2.11 耍杂技的牛2.12 给树染色2.13 任务2.14 能量石 三、总结 一、概念 贪心是一种在每次决策时采取当前意义下最优策略的算…...

一文讲透亚马逊云三层架构

关于三层架构&#xff0c;我们有很多想说的话&#xff1a; &#xff08;以下内容以下都在VPC中&#xff09; cloudfront做CDN加速网关规划S3做静态网站托管APIGateway作为统一网关入口认证/限流Lambda 作为传统后端&#xff0c;并发&#xff0c;底层架构Redis缓存DDB作为持久化…...

只需3步,使用Stable Diffusion无限生成AI数字人视频(附安装包)

基本方法 搞一张照片&#xff0c;搞一段语音&#xff0c;合成照片和语音&#xff0c;同时让照片中的人物动起来&#xff0c;特别是头、眼睛和嘴。 语音合成 语音合成的方法很多&#xff0c;也比较成熟了&#xff0c;大家可以选择自己方便的&#xff0c;直接录音也可以&#…...

RustGUI学习(iced)之小部件(七):如何使用图像image部件来显示图片?

前言 本专栏是学习Rust的GUI库iced的合集,将介绍iced涉及的各个小部件分别介绍,最后会汇总为一个总的程序。 iced是RustGUI中比较强大的一个,目前处于发展中(即版本可能会改变),本专栏基于版本0.12.1. 概述 这是本专栏的第七篇,主要讲述图像Image部件的使用,会结合实例…...

Substrate 入门课第 14 期圆满结束,岗位内推直达知名 Web3 项目!

Substrate&#xff0c;一个完全免费且开源的框架&#xff0c;利用 Rust 语言的强大功能和安全性&#xff0c;为全球开发者提供了一个高效和灵活的开发环境。借助其模块化的设计&#xff0c;即使是新手开发者也能在短短 15 分钟内搭建起定制化的区块链。自 2020 年以来&#xff…...

android进阶-AIDL

参考&#xff1a;Android进阶——AIDL详解_android aidl-CSDN博客 AIDL&#xff08;Android 接口定义语言&#xff09;&#xff0c;可以使用它定义客户端与服务端进程间通信&#xff08;IPC&#xff09;的编程接口&#xff0c;在 Android 中&#xff0c;进程之间无法共享内存&…...

贪心算法-活动选择问题背包问题

目录 活动选择问题 无重叠区间-Leetcode 435 分数背包问题--贪心解法 贪心法 0-1 背包问题 贪心法 贪心算法的局限 Set cover problem 活动选择问题 分析: /* 要在一个会议室举办n个活动 - 每个活动有它们各自的起始和结束时间 - 找出在时间上互不冲突的活动组合,能…...

Web3工具集合 - 00

使用 React 和 Material-UI 构建的 Web3 工具集合 大家好&#xff01; 我很高兴向大家介绍我最近刚启动了一个项目&#xff1a;Web3 工具集合。 这个项目的目的是一个集成各种 Web3 工具的网站&#xff0c;旨在为开发人员和加密货币爱好者提供便捷的工具和资源。 特点&#…...

分布式与集群的区别

先说区别&#xff1a; 分布式是并联工作的&#xff0c;集群是串联工作的。 分布式中的每一个节点都可以做集群。而集群并不一定就是分布式的。 集群举例&#xff1a;比如新浪网&#xff0c;访问的人很多&#xff0c;他可以做一个集群&#xff0c;前面放一个相应的服务器&…...

学习心得:如何开始学习一款MCU

一、MCU简介 任何一款MCU&#xff0c;其基本原理和功能都是大同小异&#xff0c;所不同的只是其外围功能模块的配置及数量、指令系统等。对于指令系统&#xff0c;虽然形式上看似千差万别&#xff0c;但实际上只是符号的不同&#xff0c;其所代表的含义、所要完成的功能和寻址…...

顺序表的实现(迈入数据结构的大门)(1)

上一节我们认识到了什么是数据结构 这一节我们就来实现第一个数据结构的实现 思考一个问题&#xff1a; 假定一个数组&#xff0c;空间为10&#xff0c;已经使用了5个&#xff0c;向其中插入数据的步骤&#xff1a; 1.插入数据&#xff0c;我们先要求数组长度&#xff0c;其…...

RERCS系统-WDA+BOPF框架实战例子 PART 1-新建List UIBB(列表组件)并分配Feeder Class和Node Element

需求背景&#xff1a; 已有的项目主数据功能&#xff0c;新增一个列表UIBB显示主数据额外的关联数据明细。 1、Fiori页面通过右键-技术帮助打开对应的组件配置&#xff1b; 2、双击对应的组件配置&#xff0c;调整对应的页面新建UIBB&#xff1b; 3、填写对应的UIBB属性字段&a…...

如何从 iPhone 恢复已删除或丢失的联系人?

不小心删除了您的 iPhone 联系人&#xff1f;不用担心。我们将向您展示如何从 iPhone或 iPad恢复已删除或丢失的联系人。当您从 iPhone 中删除联系人时&#xff0c;您可能认为无法将其恢复。但事实是&#xff0c;您可以从 iPhone 或 iPad 恢复已删除的联系人&#xff0c;因为它…...

RISCV 外部GCC 工具链安装@FreeBSD15

在交叉编译的时候&#xff0c;可以使用FreeBSD15默认的工具链&#xff1a;LLVM 也可以使用GCC工具链&#xff0c;GCC可以使用现成pkg包安装&#xff0c;也可以编译安装。 LLVM的特点是高移植性和高效&#xff0c;但学习成本高。GCC的特点是成熟稳定&#xff0c;但优化能力有限…...

全栈开发之路——前端篇(9)插槽、常用api和全局api

全栈开发一条龙——前端篇 第一篇&#xff1a;框架确定、ide设置与项目创建 第二篇&#xff1a;介绍项目文件意义、组件结构与导入以及setup的引入。 第三篇&#xff1a;setup语法&#xff0c;设置响应式数据。 第四篇&#xff1a;数据绑定、计算属性和watch监视 第五篇 : 组件…...

减瘦误区、雷点、陷阱和挑战怎么应对

在减瘦过程中&#xff0c;很多肥胖人群都容易踩到坑。比如陷入误区&#xff0c;认为只有短期快速的减调方式方法&#xff0c;才值得尝试&#xff0c;而忽视身体健康&#xff1b;或是踩到雷点&#xff0c;轻信强速方剂或方法&#xff0c;结果身体产生了排斥或根本没效用白花钱&a…...

Leetcode—946. 验证栈序列【中等】

2024每日刷题&#xff08;133&#xff09; Leetcode—946. 验证栈序列 实现代码 class Solution { public:bool validateStackSequences(vector<int>& pushed, vector<int>& popped) {int left 0;for(int i 0; i < popped.size(); i) {while(left &…...

Selenium定位方法及代码

天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物。 每个人都有惰性&#xff0c;但不断学习是好好生活的根本&#xff0c;共勉&#xff01; 文章均为学习整理笔记&#xff0c;分享记录为主&#xff0c;如有错误请指正&#xff0c;共同学习进步。…...

GitHub搭建免费博客

一、GitHub仓库准备 ​ 搭建博客需要准备两个仓库。一个存放博客图床的仓库&#xff0c;另一个存放博客网站的仓库。 1.1、图床创建 新建仓库 第一步&#xff1a; ​ 第二步&#xff1a; 生成Token令牌 点击右上角头像->Settings->下拉&#xff0c;直到左侧到底&#…...

开源代码分享(28)-含分布式光伏的配电网集群划分和集群电压协调控制

参考文献&#xff1a; [1] Chai Y , Guo L , Wang C ,et al.Network Partition and Voltage Coordination Control for Distribution Networks With High Penetration of Distributed PV Units[J].IEEE Transactions on Power Systems, 2018:3396-3407.DOI:10.1109/TPWRS.2018…...

idea-自我快捷键-2

1. 书签 创建书签&#xff1a; 创建书签&#xff1a;F11创建特色标记书签&#xff1a;Ctrl F11快速添加助记符书签&#xff1a;ctrl shift 数字键 查看书签&#xff1a; shift F11快速定位到助记符书签&#xff1a;Ctrl 数字键 删除书签&#xff1a; delete 2. 自动…...

深入学习指针3

目录 前言 1.二级指针 2.指针数组 3.指针数组模拟二维数组 前言 Hello,小伙伴们我又来了&#xff0c;上期我们讲到了数组名的理解&#xff0c;指针与数组的关系等知识&#xff0c;那今天我们就继续深入到学习指针域数组的练联系&#xff0c;如果喜欢作者菌生产的内容还望不…...