- 分 类
- IP与多媒体
- 查询命令
- query user
- 中文名
- Query
- 中文译名
- 查询
-
(五)springboot + mybatis plus强大的条件构造器queryWrapper、updateWrapper
2018-10-02 15:23:04注明:上篇文章介绍了...条件构造器咱们讲述queryWrapper和updateWrapper的用法、关系、以及强大之处。 首先在这里写下官方文档的链接位置,官方文档说的很详细。如果还想知道在项目中的具体用法请往下看。 ...注明:上篇文章介绍了springboot+mybatis-plus通用CRUD的用法,这篇文章我们来介绍一下mybatis-plus强大的条件构造器。mybatis-plus的版本为最新版3.0.3 。条件构造器咱们讲述queryWrapper和updateWrapper的用法、关系、以及强大之处。
首先在这里写下官方文档的链接位置,官方文档说的很详细。如果还想知道在项目中的具体用法请往下看。
一、条件构造器关系介绍
介绍 :
- 上图绿色框为抽象类abstract
- 蓝色框为正常class类,可new对象
- 黄色箭头指向为父子类关系,箭头指向为父类
wapper介绍 :
- Wrapper : 条件构造抽象类,最顶端父类,抽象类中提供4个方法西面贴源码展示
- AbstractWrapper : 用于查询条件封装,生成 sql 的 where 条件
- AbstractLambdaWrapper : Lambda 语法使用 Wrapper统一处理解析 lambda 获取 column。
- LambdaQueryWrapper :看名称也能明白就是用于Lambda语法使用的查询Wrapper
- LambdaUpdateWrapper : Lambda 更新封装Wrapper
- QueryWrapper : Entity 对象封装操作类,不是用lambda语法
- UpdateWrapper : Update 条件封装,用于Entity对象更新操作
二、项目实例
在这里我以QueryWrapper和UpdateWrapper为例,进行测试讲解。我会在上篇博客原有的基础上进行测试,如果不喜欢搭建项目的可直接下载我上个项目,上个项目的博客对应上个项目的讲解
上图表格为条件构造器使用中的各个方法格式和说明,如有不懂可参考官方文档内容
构造器条件
package com.lqf.crud; import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Constants; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.lqf.crud.bean.crm.User; import com.lqf.crud.dao.crm.UserMapper; import com.sun.org.apache.xerces.internal.util.EntityResolverWrapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.session.RowBounds; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; import org.springframework.web.jsf.el.WebApplicationContextFacesELResolver; import javax.naming.Name; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @RunWith(SpringRunner.class) @SpringBootTest public class QueryWrapperTests { @Autowired private UserMapper mapper; /** * <p> * 根据根据 entity 条件,删除记录,QueryWrapper实体对象封装操作类(可以为 null) * 下方获取到queryWrapper后删除的查询条件为name字段为null的and年龄大于等于12的and email字段不为null的 * 同理写法条件添加的方式就不做过多介绍了。 * </p> */ @Test public void delete() { QueryWrapper<User> queryWrapper = new QueryWrapper<>(); queryWrapper .isNull("name") .ge("age", 12) .isNotNull("email"); int delete = mapper.delete(queryWrapper); System.out.println("delete return count = " + delete); } /** * <p> * 根据 entity 条件,查询一条记录, * 这里和上方删除构造条件一样,只是seletOne返回的是一条实体记录,当出现多条时会报错 * </p> */ @Test public void selectOne() { QueryWrapper<User> queryWrapper = new QueryWrapper<>(); queryWrapper.eq("name", "lqf"); User user = mapper.selectOne(queryWrapper); System.out.println(user); } /** * <p> * 根据 Wrapper 条件,查询总记录数 * </p> * * @param queryWrapper 实体对象 */ @Test public void selectCount() { QueryWrapper<User> queryWrapper = new QueryWrapper<>(); queryWrapper.eq("name", "lqf"); Integer count = mapper.selectCount(queryWrapper); System.out.println(count); } /** * <p> * 根据 entity 条件,查询全部记录 * </p> * * @param queryWrapper 实体对象封装操作类(可以为 null)为null查询全部 */ @Test public void selectList() { List<User> list = mapper.selectList(null); System.out.println(list); } /** * <p> * 根据 Wrapper 条件,查询全部记录 * </p> * * @param queryWrapper 实体对象封装操作类(可以为 null) */ @Test public void selectMaps() { QueryWrapper<User> queryWrapper = new QueryWrapper<>(); queryWrapper.isNotNull("name"); List<Map<String, Object>> maps = mapper.selectMaps(queryWrapper); for (Map<String, Object> map : maps) { System.out.println(map); } } /** * 打印结果 * {name=lqf, id=1046282328366391406, age=12, email=lqf@163.com, status=false} * {name=lqf, id=1046282328366391407, age=12, email=lqf@163.com, status=false} * {name=lqf, id=1046282328366391408, age=12, email=lqf@163.com, status=false} * {name=lqf, id=1046282328366391409, age=12, email=lqf@163.com, status=false} * {name=lqf, id=1046282328366391410, age=12, email=lqf@163.com, status=false} * {name=lqf, id=1046282328366391411, age=12, email=lqf@163.com, status=false} * {name=lqf, id=1046282328366391412, age=12, email=lqf@163.com, status=false} * {name=lqf, id=1046282328366391413, age=12, email=lqf@163.com, status=false} * {name=lqf, id=1046282328366391414, age=12, email=lqf@163.com, status=false} * {name=lqf, id=1046282328366391415, age=12, email=lqf@163.com, status=false} * {name=lqf, id=1046282328366391416, age=12, email=lqf@163.com, status=false} * {name=lqf, id=1046282328366391417, age=12, email=lqf@163.com, status=false} * {name=lqf, id=1046282328366391418, age=12, email=lqf@163.com, status=false} * json类型的键值对模式 */ /** * <p> * 根据 entity 条件,查询全部记录(并翻页) * </p> * * @param page 分页查询条件(可以为 RowBounds.DEFAULT) * @param queryWrapper 实体对象封装操作类(可以为 null) */ @Test public void selectPage() { Page<User> page = new Page<>(1, 5); QueryWrapper<User> queryWrapper = new QueryWrapper<>(); IPage<User> userIPage = mapper.selectPage(page, queryWrapper); System.out.println(userIPage); } /** * 打印结果 * ==> Preparing: SELECT COUNT(1) FROM user * ==> Parameters: * <== Columns: COUNT(1) * <== Row: 100 * ==> Preparing: SELECT id,name,age,email,status FROM user LIMIT 0,5 * ==> Parameters: * <== Columns: id, name, age, email, status * <== Row: 1046282328366391319, lqf, 12, lqf@163.com, 0 * <== Row: 1046282328366391320, lqf, 12, lqf@163.com, 0 * <== Row: 1046282328366391321, lqf, 12, lqf@163.com, 0 * <== Row: 1046282328366391322, lqf, 12, lqf@163.com, 0 * <== Row: 1046282328366391323, lqf, 12, lqf@163.com, 0 * <== Total: 5 * * * 这里需要在项目中加入分页插件 * @Bean * public PaginationInterceptor paginationInterceptor() { * return new PaginationInterceptor(); * } */ /** * <p> * 根据 Wrapper 条件,查询全部记录(并翻页) * </p> * * @param page 分页查询条件 * @param queryWrapper 实体对象封装操作类 */ @Test public void selectMapsPage() { Page<User> page = new Page<>(1, 5); QueryWrapper<User> queryWrapper = new QueryWrapper<>(); IPage<Map<String, Object>> mapIPage = mapper.selectMapsPage(page, queryWrapper); System.out.println(mapIPage); } /** * 和上个分页同理只是返回类型不同 */ /** * <p> * 根据 whereEntity 条件,更新记录 * </p> * * @param entity 实体对象 (set 条件值,不能为 null) * @param updateWrapper 实体对象封装操作类(可以为 null,里面的 entity 用于生成 where 语句) */ @Test public void update() { //修改值 User user = new User(); user.setStatus(true); user.setName("zhangsan"); //修改条件s UpdateWrapper<User> userUpdateWrapper = new UpdateWrapper<>(); userUpdateWrapper.eq("name", "lqf"); int update = mapper.update(user, userUpdateWrapper); System.out.println(update); } /** * 打印结果 * ==> Preparing: UPDATE user SET name=?, status=? WHERE name = ? * ==> Parameters: zhangsan(String), true(Boolean), lqf(String) * <== Updates: 100 * Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@56a4f272] * 100 * 2018-10-02 15:08:03.928 INFO 7972 --- [ Thread-2] o.s.w.c.s.GenericWebApplicationContext : Closing org.springframework.web.context.support.GenericWebApplicationContext@37313c65: startup date [Tue Oct 02 15:08:00 CST 2018]; root of context hierarchy * 2018-10-02 15:08:03.937 INFO 7972 --- [ Thread-2] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown initiated... * 2018-10-02 15:08:04.053 INFO 7972 --- [ Thread-2] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown completed. * * Process finished with exit code 0 */ }
上方代码对通过构造器条件进行的查询、删除、修改进行是演示,构造器方法没有做过多演示,但是所有的构造器方法同理使用,如果还有不会用的点开看官方文档查看并按照上方例子使用即可。
上一篇 :(四) springboot + mybatis plus详细拆解CRUD
下一篇 : (六)springboot + mybatis plus实现多表联查分页3.X版本 -
Hibernate07_Hibernate Query Language
2020-08-06 18:09:54Hibernate07_Hibernate Query Language 例1: String hql = "from People"; Query query = session.createQuery(hql); List<People> list = query.list(); for(People people : list) { System.out.println...Hibernate07_Hibernate Query Language
例1:
String hql = "from People"; Query query = session.createQuery(hql); List<People> list = query.list(); for(People people : list) { System.out.println(people); }
People(id=1, name=张三, money=1000.0) People(id=2, name=李四, money=2000.0) People(id=3, name=王五, money=3000.0) People(id=4, name=小明, money=4000.0) People(id=5, name=小红, money=3000.0) People(id=6, name=小李, money=2000.0) People(id=7, name=BLU, money=3500.0) People(id=8, name=lily, money=4500.0) People(id=9, name=mary, money=5500.0)
例2(分页查询):
分页查询可以通过调用query的方法来完成:setFirstResult() 设置起始下标(从0开始) setMaxResult() 设置截取长度
String hql = "from People"; Query query = session.createQuery(hql); query.setFirstResult(1); query.setMaxResults(3); List<People> list = query.list(); for(People people : list) { System.out.println(people); }
People(id=2, name=李四, money=2000.0) People(id=3, name=王五, money=3000.0) People(id=4, name=小明, money=4000.0)
例3(where条件查询):
String hql = "from People where id = 7"; Query query = session.createQuery(hql); People people = (People) query.list().get(0); System.out.println(people);
People(id=7, name=BLU, money=3500.0)
注:通过以下两种方式都可以查出一条结果的值,但是用 list() 方法查出来的值不能为空,否则会报数组越界异常:java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
People people = (People) query.list().get(0);
People people = (People) query.uniqueResult();
例4(模糊查询):
String hql = "from People where name like '%小%'"; Query query = session.createQuery(hql); List<People> list = query.list(); for(People people : list) { System.out.println(people); }
People(id=4, name=小明, money=4000.0) People(id=5, name=小红, money=3000.0) People(id=6, name=小李, money=2000.0)
例5(order by)asc/desc:
String hql = "from People order by id desc"; Query query = session.createQuery(hql); List<People> list = query.list(); for(People people : list) { System.out.println(people); }
People(id=9, name=mary, money=5500.0) People(id=8, name=lily, money=4500.0) People(id=7, name=BLU, money=3500.0) People(id=6, name=小李, money=2000.0) People(id=5, name=小红, money=3000.0) People(id=4, name=小明, money=4000.0) People(id=3, name=王五, money=3000.0) People(id=2, name=李四, money=2000.0) People(id=1, name=张三, money=1000.0)
例6(查询实体属性):
String hql = "select name from People where id = 7"; Query query = session.createQuery(hql); String name = (String) query.uniqueResult(); System.out.println(name);
BLU
例7(占位符):
String hql = "from People where name = :name"; Query query = session.createQuery(hql); query.setString("name", "BLU"); People people = (People) query.uniqueResult(); System.out.println(people);
People(id=7, name=BLU, money=3500.0)
例8(级联查询):
String hql1 = "from Customer where name = :name"; Query query1 = session.createQuery(hql1); query1.setString("name", "张三"); Customer customer = (Customer) query1.uniqueResult(); String hql2 = "from Orders where customer = :customer"; Query query2 = session.createQuery(hql2); query2.setEntity("customer", customer); List<Orders> list = query2.list(); for(Orders orders : list) { System.out.println(orders); }
Orders [id=1, name=订单1] Orders [id=2, name=订单2] Orders [id=4, name=订单3]
-
QueryWrapper用法
2020-04-29 17:14:09QueryWrapper用法1: public IPage initAppEvaluateInfoBaseInfoIdVO(String elderId){ List evaluateInfoBaseInfoIdVOList = new ArrayList(); QueryWrapper queryWrapper = new QueryWrapper(); queryWrapper.eq...QueryWrapper用法1:
public IPage<EvaluateInfoBaseInfoIdVO> initAppEvaluateInfoBaseInfoIdVO(String elderId){ List<EvaluateInfoBaseInfoIdVO> evaluateInfoBaseInfoIdVOList = new ArrayList<EvaluateInfoBaseInfoIdVO>(); QueryWrapper<EvaluateBaseInfo> queryWrapper = new QueryWrapper<EvaluateBaseInfo>(); queryWrapper.eq("del_flag",0); queryWrapper.eq("elder_id",elderId); List<EvaluateBaseInfo> evaluateBaseInfoList = this.baseMapper.selectList(queryWrapper); //处理一个老人多次评估 for (EvaluateBaseInfo base :evaluateBaseInfoList){ evaluateInfoBaseInfoIdVOList.add(this.initOne(base.getId())); } Page<EvaluateInfoBaseInfoIdVO> page = new Page<EvaluateInfoBaseInfoIdVO>(); page.setRecords(evaluateInfoBaseInfoIdVOList); return page; }
用法2:
List<SysUserRole> userRole = sysUserRoleService.list(new QueryWrapper<SysUserRole>().lambda().eq(SysUserRole::getUserId, userid));
-
ES删除全部数据的方法(Delete By Query)
2018-10-11 18:00:47https://www.elastic.co/guide/en/elasticsearch/reference/5.2/docs-delete-by-query.html 之前在 2.X版本里 这个Delete By Query功能被去掉了,因为官方认为会引发一些错误,如需使用 ...参考:https://blog.csdn.net/wwd0501/article/details/78812873
https://www.elastic.co/guide/en/elasticsearch/reference/5.2/docs-delete-by-query.html之前在 2.X版本里 这个Delete By Query功能被去掉了,因为官方认为会引发一些错误,如需使用 ,需要自己安装插件。
安装
bin/plugin install delete-by-query
使用
DELETE /索引名/需要清空的type/_query { "query": { "match_all": {} } }
在5.x版本中 这个api又被官方重新加回自带功能。
Delete-by-query 和 Update-by-query 重新回到 core ,以前是插件,现在可以直接使用了,
也是构建在 Reindex 机制之上。
(es1.x版本是直接支持,在es2.x中提取为插件,5.x继续回归直接支持)使用
POST indexName/_delete_by_query { "query": { "match_all": { } } }
有时候因为数据量较大删除到一半就返回结果了,不要慌,继续发送命令,多执行几次就好了。
之后删除索引
DELETE /indexName
-
Power Query 自学教程
2019-05-31 17:01:11挖坑很久都没填,突然发现这篇文章阅读量很高,大半年过去了,虽然距离Power Query大神还有很远很远,但是通过学习和摸索,勉强算得上能够熟练操作80%+常用功能。 在使用Power Query半年后,我个人觉得PowerQuery有... -
QueryRunner中query方法
2018-07-17 11:42:07commons.dbutils.QueryRunner query方法中RequestSetHandler 参数对应的返回类型: AbstractListHandler -- 返回多行List的抽象类 ArrayHandler -- 返回一行的Object[] ArrayListHandler -- 返回List,每行是... -
query语法
2019-09-20 16:51:29一、DSL方式的query语法 查询常用的关键字如下: 1 query (基于文档相关性的全文搜索) term:精确匹配,不会对查询词进行分析。下面的示例返回message="loadUserByUsername error"的文档。 GET xxx/_search ... -
queryRunner.query 方法
2017-07-21 09:47:29public Map getUserByUserId_MAP(int userId){ Map map = null; //获取连接 Connection conn = DBConnectionUtil.getConnection();...QueryRunner queryRunner = new QueryRunner(); //拼接SQL String s -
Pandas query 的用法, df.query
2019-03-28 18:03:54df.query 今天看到了query的用法,被这个函数的简洁所折服… df.query(expr,inplace = False,** kwargs )# 使用布尔表达式查询帧的列 参数: # expr:str要评估的查询字符串。你可以在环境中引用变量,在它们.... -
Query对象
2016-09-15 20:37:54Query对象 -
Elasticsearch Query String Query
2015-11-12 17:06:21Query String Queryedit On this page Query string syntax Elasticsearch Reference: master2.x 2.12.0 (current) 1.71.6 1.51.4 1.30.90 Getting Started Setup ... -
QueryRunner query返回int类型
2018-12-20 10:49:22return ((Long) runner.query(sql, new ScalarHandler())).intValue(); -
Jpa @Query nativeQuery=true
2020-04-01 16:50:28"message":"Noconverterfoundcapableofconvertingfromtype[org.springframework.data.jpa.repository.query.AbstractJpaQuery$TupleConverter$TupleBackedMap]totype[com.cocabit.jwtdemo.vo.StudentVo]... -
power query
2018-10-15 13:59:33大道至简的数据处理工具-Microsoft Power Query 告别复杂的excel函数,excel VBA编程,让一切回归简单与职能。 什么样的人群适合这样的一个工具: 1、出纳、会计、统计、仓管、数据分析等与数据打交道的的岗位。 2、... -
Power Query
2016-12-23 14:04:36查询增强版(Power Query)是一个Excel插件,是Power BI的一个组件。 Power Query 在Excel中通过简化数据发现、访问和合作的操作,从而增强了商业智能自助服务体验。 查询增强版(Power Query)是一个... -
Power Query 系列 (01) - Power Query 介绍
2019-08-26 16:59:34Power Query 介绍 Power Query 是微软提供的工具,Excel 2013 版作为插件加载使用,Excel 2016 版开始,Power Query 的功能集成到 Excel 中,可以直接使用。微软推出 Power BI Desktop 后,一系列的工具,比如 Power... -
Query类详解
2018-02-22 14:21:48本篇介绍Query类,Query是一个查询参数类,封装了查询条件,分页,排序等功能。参数介绍Query里面封装了一系列查询参数,主要分为以下几类: 分页参数:设置分页 排序参数:设置排序字段 条件参数:设置查询条件 ... -
“queryrunner query报错 创建不了bean
2016-09-13 07:11:31at org.apache.commons.dbutils.QueryRunner.query(QueryRunner.java:349) at org.apache.commons.dbutils.QueryRunner.query(QueryRunner.java:305) at com.cciot.dao.Impl.UserDaoImpl.findAllUser(UserDaoImpl... -
QueryWrapper高级使用示例
2020-06-08 17:49:07QueryWrapper queryWrapper = new QueryWrapper<>(); 查询指定字段 通过select()查询指定字段,同时可对字段进行Mysql函数处理 queryWrapper.select("service_code as serviceCode", "sum(num) as num"); ... -
deviceQuery
2015-10-14 13:36:25C:\ProgramData\NVIDIA Corporation\CUDA Samples\v7.5\1_Utilities\deviceQuery\../. ./bin/win64/Debug/deviceQuery.exe Starting... CUDA Device Query (Runtime API) version (CUDART static linking) -
Query DSL for elasticsearch Query
2014-11-06 17:24:24Query DSL Query DSL (资料来自: http://www.elasticsearch.cn/guide/reference/query-dsl/) --简介-- elasticsearch 提供基于JSON的完整的Query DSL查询表达式(DSL即领域专用语言). 一般来说, 普通的查询如 term ... -
query 报No entity found for query 异常
2018-06-06 10:40:07getSingleResult()getSingleResult的源码有一句: @throws EntityNotFoundException if there is no result 查不到结果时,它是抛异常的,...Query query = em.createNativeQuery(sql.toString()); obj = query... -
MyBatis-Plus QueryWrapper及LambdaQueryWrapper的使用
2020-06-05 15:44:53假如我们有一张banner_item表,现需要通过banner_id查出所有数据 @Data public class BannerItem { private Long id; private String name; ... private String img;...QueryWrapper 最基础的使用方式 -
Hibernate的SQLQuery与Query占位符传参
2017-04-20 10:20:08Hibernate支持SQLQuery(特定数据库平台有关的sql语句)和Query(hql)查询方式,当然还有Criteria对象查询方式;本文介绍SQLQuery和Query的几种传参的方式和注意事项; -
@Query注解
2019-08-11 14:23:47Query注解 有的时候,提供的查询关键字并不能满足我们的查询需求,这个时候就可以使用 @Query 关键字,来自定义查询 SQL,例如查询Id最大的User: @Query("select u from t_user u where id=(select max(id) ... -
有nativeQuery = true和没有的区别
2018-11-16 17:51:15有nativeQuery = true时,是可以执行原生sql语句,所谓原生sql,也就是说这段sql拷贝到数据库中,然后把参数值给一下就能运行了,比如: @Query(value = "select * from product_rel where audit_id=?1 and ... -
No query(s)were executed.Please enter a query in the SQL window or place the cursor inside a query.
2020-05-26 00:02:26No query(s)were executed. Please enter a query in the SQL window or place the cursor inside a query.(没有执行查询(s)。请在SQL窗口中输入查询或将光标放在查询中。) 初学mysql数据库,出现这条错误,是因为... -
solr query
2015-09-01 16:52:26封装了查询的关键字,查询过滤条件, 查询排序, or查询 ... //solrQuery.setQuery("status:1"); solrQuery.set("q", "storeName:" + "麦兜"); solrQuery.addFilterQuery("status:" + BaseConstant. -
Query意图识别分析
2019-07-02 15:05:55outline 近段时间在研究搜索的相关技术,在工作中主要涉及到资讯搜索功能的实现。我们采用了elasticsearch...query改写 什么是搜索 一个搜索引擎的技术构建主要包含三大部分: (1) 对query的理解 (2) 对内容(文档)... -
JPA Query
2013-03-15 17:25:161.1. Query Basics1.2. Relation Traversal1.3. Fetch Joins1.4. JPQL Functions1.5. Polymorphic Queries1.6. Query Parameters1.7. Query Hints 1.7.1. Locking Hints1.7.2. Result Set Size
-
2021-02-23-mqtt-使用paho.mqtt.c库MQTTAsync_sendMessage发送消息时产生Segment Fault错误
-
各种格式测试视频(.avi.wmv.mkv.mp4.mov.rm)
-
ROSv6.48.zip
-
qengine:基于查询的处理引擎-源码
-
凡客诚品 微博营销实践暨品牌创新.ppt
-
Mysql数据库面试直通车
-
mysql8.0.23:Access denied for user ‘root‘@‘localhost‘
-
多少个电信号算一组?每个信号位有何意义?
-
linux ubuntu18.04 英伟达驱动 实测能装上 识别1080ti 1070ti显卡 NVIDIA-Linux-x86_64-460.39.run
-
动车组轴温检测系统仿真设计.zip
-
MySQL中的DDL语句
-
佳能打印机G2800不需要软件的清零方法.txt
-
ubuntu20.04上安装mysql8.0.23问题总结
-
参数列表 是调用方给予方法的参数用于方法内的使用
-
基于电商业务的全链路数据中台落地方案(全渠道、全环节、全流程)
-
华为1+X——网络系统建设与运维(中级)
-
mybatisplus代码生成器
-
Python中__new__()方法的作用,举例说明,简单易懂
-
注册商标需要什么条件呢?
-
Windows系统管理