Mybatis-Plus常用的增删改查坑

news2024/10/7 4:55:29

添加依赖

   <!--实体类上加上@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 NULL
    wrapper.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传一个到后面,前面是一个整体,后面是一个整体,两个整体再and
    wrapper.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...
  */
 @Test
 public 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 NULL
    List<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岁
*/
 @Test
 public 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岁的姓名和年龄
*/
 @Test
 public 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)
在这里插入图片描述

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

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

相关文章

机器学习算法应用——K近邻分类器(KNN)

K近邻分类器&#xff08;KNN&#xff09;&#xff08;4-2&#xff09; K近邻分类器&#xff08;K-Nearest Neighbor&#xff0c;简称KNN&#xff09;是一种基本的机器学习分类算法。它的工作原理是&#xff1a;在特征空间中&#xff0c;如果一个样本在特征空间中的K个最相邻的样…

docker端口映射成功,docker端口不生效的问题解决,外界无法访问docker映射端口

docker端口映射不生效的问题解决 问题 使用docker run -p 88848:8848后&#xff0c;显示容器启动正常&#xff0c;并且使用docker logs –f xxx能够看到容器可以正常启用&#xff0c;docker ps 可以看到容器启动成功&#xff0c;并且端口已经映射,但是在浏览器访问相关地址&am…

05_SpringCloud

文章目录 SpringCloud服务调用的负载均衡Ribbon负载均衡 面向接口的服务调用OpenFeign 客户端FeignClient日志输出服务调用的超时设置 配置中心Nacos配置中心Nacos配置中心的使用Nacos配置的持久化 SpringCloud 服务调用的负载均衡 问题引出 // 服务发现List<ServiceInstan…

第十二届蓝桥杯省赛真题 Java C 组【原卷】

文章目录 发现宝藏【考生须知】试题 A: ASC试题 B: 空间试题 C: 卡片试题 D: 相乘试题 E: 路径试题 F: 时间显示试题 G: 最少砝码试题 H : \mathrm{H}: H: 杨辉三角形试题 I: 左孩子右兄弟试题 J : \mathrm{J}: J: 双向排序 发现宝藏 前些天发现了一个巨牛的人工智能学习网站…

【SpringBoot篇】基于Redis分布式锁的 误删问题 和 原子性问题

文章目录 &#x1f354;Redis的分布式锁&#x1f6f8;误删问题&#x1f388;解决方法&#x1f50e;代码实现 &#x1f6f8;原子性问题&#x1f339;Lua脚本 ⭐利用Java代码调用Lua脚本改造分布式锁&#x1f50e;代码实现 &#x1f354;Redis的分布式锁 Redis的分布式锁是通过利…

傻傻分不清楚:JDK/JRE/JVM的区别和联系

在Java开发的世界里&#xff0c;JDK、JRE和JVM是三个经常听到的术语。 对于初学者来说&#xff0c;它们的概念和区别可能会让人感到困惑。 这篇文章详细解释下三个组件的含义、它们之间的区别和联系。 一&#xff0c;JDK&#xff1a;Java Development Kit JDK是Java开发工具…

umi6.x + react + antd的项目增加403(无权限页面拦截),404,错误处理页面

首先在src/pages下创建403&#xff0c;404&#xff0c;ErrorBoundary 403 import { Button, Result } from antd; import { history } from umijs/max;const UnAccessible () > (<Resultstatus"403"title"403"subTitle"抱歉&#xff0c;您无权…

shell-for循环语句练习题

1.计算从1到100所有整数的和 [rootlocalhost ~]# vim 1.sh #!/bin/bash sum0 #定义变量sum初始值为0 for i in {1..100} #for循环 i取值从1到100 do sum$[ isum ] #在每次循环中&#xff0c;变量i的值会依次取1到100的整数值。 #sum是一个累加器&#xff0c;初始值…

2024数维杯C题24页完整解题思路+1-4问代码解题+运行高清结果图

C题天然水合物资源量评价 点击链接加入群聊【2024数维杯数学建模ABC题资料汇总】&#xff1a; 2024数维杯C题完整思路24页配套代码1-4问后续参考论文https://www.jdmm.cc/file/2710638 下面内容是持续更新的 根据勘探数据确定天然气水合物资源的分布范围。 假设勘探区域内的…

Python深度学习基于Tensorflow(4)Tensorflow 数据处理和数据可视化

文章目录 构建Tensorflow.data数据集TFRecord数据底层生成TFRecord文件数据读取TFRecord文件数据图像增强 数据可视化 构建Tensorflow.data数据集 tf.data.Dataset表示一串元素&#xff08;element&#xff09;&#xff0c;其中每个元素包含一个或多个Tensor对象。例如&#xf…

【SVN-TortoiseSVN】SVN 的简介与TortoiseSVN 安装使用教程

目录 &#x1f31e;前言 &#x1f30a;1. SVN 的简介 &#x1f30d;1.1 SVN是什么 &#x1f30d;1.2 SVN 工作原理 &#x1f30d;1.3 TortoiseSVN 术语及定义 &#x1f30a;2. TortoiseSVN 安装与汉化 &#x1f30a;3. SVN 基本操作-TortoiseSVN &#x1f30d;3.1 浏览…

35个矩阵账号,如何通过小魔推打造2704万+视频曝光?

在如今的短视频时代&#xff0c;矩阵发布的作用被发挥到极致&#xff0c;通过各个短视频平台的流量分发&#xff0c;虽然视频质量不如那些头部的IP&#xff0c;但是在视频数量上却能做到轻松碾压&#xff0c;让自己的品牌与门店有更多的声量&#xff0c;这就是如今短视频平台对…

sbt安装

一、sbt介绍 在Spark中&#xff0c;sbt&#xff08;Scala Build Tool&#xff09;是一个用于构建Scala项目的工具。它是Spark项目的主要构建工具之一&#xff0c;用于编译Scala代码、管理依赖项、打包应用程序以及执行其他与项目构建相关的任务。 sbt的用途在Spark开发中主要…

云管平台-助力企业云管理飞跃发展!

随著信息技术的快速发展&#xff0c;以及企业数字化的快速改革&#xff0c;云计算已经成为企业信息化建设的重要基石。随着企业云计算的快速应用&#xff0c;以及业务的快速发展&#xff0c;如何快速管理各种云&#xff0c;降低云成本等迫在眉睫。在这个背景下&#xff0c;云管…

使用flutter开发一个U盘文件管理APP,只解析图片文件

今天教大家用flutter撸一个U盘文件管理APP,需求是这样的: 当我在Android设备上插入U盘后,我能在APP中打开U盘的文件目录,并且能进入对应目录的下一级目录,如果下级目录下有图片文件,我就对这个图片文件进行解析,并展示出来。 需求了解后,先上个效果图: 效果图看完后,…

springboot如何查看版本号之间的相互依赖

第一种&#xff1a; 查看本地项目maven的依赖&#xff1a; ctrl鼠标左键&#xff1a;按下去可以进入maven的下一层&#xff1a; ctrl鼠标左键&#xff1a;按下去可以进入maven的再下一层&#xff1a; 就可以查看springboot的一些依赖版本号了&#xff1b; 第二种&#xff1a; 还…

# 从浅入深 学习 SpringCloud 微服务架构(十五)

从浅入深 学习 SpringCloud 微服务架构&#xff08;十五&#xff09; 一、SpringCloudStream 的概述 在实际的企业开发中&#xff0c;消息中间件是至关重要的组件之一。消息中间件主要解决应用解耦&#xff0c;异步消息&#xff0c;流量削锋等问题&#xff0c;实现高性能&…

经开区创维汽车车辆交接仪式顺利举行,守护绿色出行助力低碳发展

5月10日&#xff0c;“创维新能源汽车进机关”交车仪式于徐州顺利举行&#xff0c;20辆创维EV6 II正式交付经开区政府投入使用。经开区陈琳副书记、党政办公室副主任张驰主任、经开区公车管理平台苑忠民科长、创维汽车总裁、联合创始人吴龙八先生、创维汽车营销公司总经理饶总先…

【计算机毕业设计】基于SSM++jsp的蜀都天香酒楼网站【源码+lw+部署文档+讲解】

目录 摘要 Abstract 目 录 1绪论 1.1研究背景与意义 1.2国内外研究现状 1.3研究内容 1.4论文结构 2相关技术介绍 2.1 B/S模式 2.2 MyEclipse开发环境 2.3 MySQL数据库 2.4 Java语言 2.5 JSP技术 2.6 Tomcat服务器 3系统分析 3.1需求分析 3.2可行性分析 3.2.1经济可行性 3.2.2技…

【MySQL探索之旅】JDBC (Java连接MySQL数据库)

&#x1f4da;博客主页&#xff1a;爱敲代码的小杨. ✨专栏&#xff1a;《Java SE语法》 | 《数据结构与算法》 | 《C生万物》 |《MySQL探索之旅》 |《Web世界探险家》 ❤️感谢大家点赞&#x1f44d;&#x1f3fb;收藏⭐评论✍&#x1f3fb;&#xff0c;您的三连就是我持续更…