SpringBoot代码实战(MyBatis-Plus+Thymeleaf)

news2024/10/2 9:11:31

构建项目

修改pom.xml文件,添加其他依赖以及设置

        <!--MyBatis-Plus依赖-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-spring-boot3-starter</artifactId>
            <version>3.5.6</version>
        </dependency>
        <!-- Druid依赖 -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>1.2.8</version>
        </dependency>

配置文件

spring.application.name=crm

spring.thymeleaf.cache=false

spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/crm?useUnicode=true&characterEncoding=utf-8
spring.datasource.username=root
spring.datasource.password=123456

logging.level.root=warn
logging.level.com.ktjiaoyu.mybatisplus.mapper=trace
logging.pattern.console=%p%m%n
#加载sql日志
mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl

spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
#初始化大小、最小、最大连接数
spring.datasource.druid.initial-size=3, 
spring.datasource.druid.min-idle=3
spring.datasource.druid.max-active=10
#配置获取连接等待超时的时间
spring.datasource.druid.max-wait=60000
#监控后台账号和密码
spring.datasource.druid.stat-view-servlet.login-username=admin
spring.datasource.druid.stat-view-servlet.login-password=admin
#配置StatFilter
spring.datasource.druid.filter.stat.log-slow-sql=true
spring.datasource.druid.filter.stat.slow-sql-millis=2000

模型开发

模型包括entity、mapper、service

entity

实体类User、Role,使用注解配置映射,且配置好关联关系

User

package com.tykj.crm.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import lombok.Data;

/**
 * 
 * @TableName sys_user
 */
@TableName(value ="sys_user")
@Data
public class User implements Serializable {
    /**
     * 编号
     */
    @TableId(type = IdType.AUTO)
    private Long usrId;

    /**
     * 姓名
     */
    private String usrName;

    /**
     * 密码
     */
    private String usrPassword;

    /**
     * 角色编号
     */
    private Long usrRoleId;
    private String roleName;

    /**
     * 状态
     */
    private Integer usrFlag;

    @TableField(exist = false)
    private static final long serialVersionUID = 1L;

    @Override
    public boolean equals(Object that) {
        if (this == that) {
            return true;
        }
        if (that == null) {
            return false;
        }
        if (getClass() != that.getClass()) {
            return false;
        }
        User other = (User) that;
        return (this.getUsrId() == null ? other.getUsrId() == null : this.getUsrId().equals(other.getUsrId()))
            && (this.getUsrName() == null ? other.getUsrName() == null : this.getUsrName().equals(other.getUsrName()))
            && (this.getUsrPassword() == null ? other.getUsrPassword() == null : this.getUsrPassword().equals(other.getUsrPassword()))
            && (this.getUsrRoleId() == null ? other.getUsrRoleId() == null : this.getUsrRoleId().equals(other.getUsrRoleId()))
            && (this.getUsrFlag() == null ? other.getUsrFlag() == null : this.getUsrFlag().equals(other.getUsrFlag()));
    }

    @Override
    public int hashCode() {
        final int prime = 31;
        int result = 1;
        result = prime * result + ((getUsrId() == null) ? 0 : getUsrId().hashCode());
        result = prime * result + ((getUsrName() == null) ? 0 : getUsrName().hashCode());
        result = prime * result + ((getUsrPassword() == null) ? 0 : getUsrPassword().hashCode());
        result = prime * result + ((getUsrRoleId() == null) ? 0 : getUsrRoleId().hashCode());
        result = prime * result + ((getUsrFlag() == null) ? 0 : getUsrFlag().hashCode());
        return result;
    }

    @Override
    public String toString() {
        StringBuilder sb = new StringBuilder();
        sb.append(getClass().getSimpleName());
        sb.append(" [");
        sb.append("Hash = ").append(hashCode());
        sb.append(", usrId=").append(usrId);
        sb.append(", usrName=").append(usrName);
        sb.append(", usrPassword=").append(usrPassword);
        sb.append(", usrRoleId=").append(usrRoleId);
        sb.append(", usrFlag=").append(usrFlag);
        sb.append(", serialVersionUID=").append(serialVersionUID);
        sb.append("]");
        return sb.toString();
    }
}

Role

package com.tykj.crm.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import lombok.Data;

/**
 * 
 * @TableName sys_role
 */
@TableName(value ="sys_role")
@Data
public class Role implements Serializable {
    /**
     * 编号
     */
    @TableId(type = IdType.AUTO)
    private Long roleId;

    /**
     * 角色名称
     */
    private String roleName;

    /**
     * 角色描述
     */
    private String roleDesc;

    /**
     * 状态
     */
    private Integer roleFlag;

    @TableField(exist = false)
    private static final long serialVersionUID = 1L;

    @Override
    public boolean equals(Object that) {
        if (this == that) {
            return true;
        }
        if (that == null) {
            return false;
        }
        if (getClass() != that.getClass()) {
            return false;
        }
        Role other = (Role) that;
        return (this.getRoleId() == null ? other.getRoleId() == null : this.getRoleId().equals(other.getRoleId()))
            && (this.getRoleName() == null ? other.getRoleName() == null : this.getRoleName().equals(other.getRoleName()))
            && (this.getRoleDesc() == null ? other.getRoleDesc() == null : this.getRoleDesc().equals(other.getRoleDesc()))
            && (this.getRoleFlag() == null ? other.getRoleFlag() == null : this.getRoleFlag().equals(other.getRoleFlag()));
    }

    @Override
    public int hashCode() {
        final int prime = 31;
        int result = 1;
        result = prime * result + ((getRoleId() == null) ? 0 : getRoleId().hashCode());
        result = prime * result + ((getRoleName() == null) ? 0 : getRoleName().hashCode());
        result = prime * result + ((getRoleDesc() == null) ? 0 : getRoleDesc().hashCode());
        result = prime * result + ((getRoleFlag() == null) ? 0 : getRoleFlag().hashCode());
        return result;
    }

    @Override
    public String toString() {
        StringBuilder sb = new StringBuilder();
        sb.append(getClass().getSimpleName());
        sb.append(" [");
        sb.append("Hash = ").append(hashCode());
        sb.append(", roleId=").append(roleId);
        sb.append(", roleName=").append(roleName);
        sb.append(", roleDesc=").append(roleDesc);
        sb.append(", roleFlag=").append(roleFlag);
        sb.append(", serialVersionUID=").append(serialVersionUID);
        sb.append("]");
        return sb.toString();
    }
}

mapper

UserMapper

package com.ktjiaoyu.thymeleaf.mapper;

import com.ktjiaoyu.thymeleaf.entity.User;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.web.bind.annotation.PathVariable;


import java.util.List;

/**
* @author Administrator
* @description 针对表【sys_user】的数据库操作Mapper
* @createDate 2024-09-09 09:10:40
* @Entity com.ktjiaoyu.thymeleaf.entity.User
*/
public interface UserMapper extends BaseMapper<User> {

    User login(@Param("usrName") String usrName, @Param("usrPassword") String usrPassword);
    List<User> findAllUsers(@Param("usrName") String usrName, @Param("roleId") Integer roleId, @Param("pageIndex")Integer pageIndex, @Param("pageSize")Integer pageSize);

    public Integer count(@Param("usrName") String usrName, @Param("roleId") Integer roleId);

    User getUserById(Integer usrId);
}




RoleMapper

package com.ktjiaoyu.thymeleaf.mapper;

import com.ktjiaoyu.thymeleaf.entity.Role;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;

/**
* @author Administrator
* @description 针对表【sys_role】的数据库操作Mapper
* @createDate 2024-09-20 14:17:54
* @Entity com.ktjiaoyu.thymeleaf.entity.Role
*/
public interface RoleMapper extends BaseMapper<Role> {

}




sql映射文件

UserMapper

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ktjiaoyu.thymeleaf.mapper.UserMapper">

    <resultMap id="BaseResultMap" type="com.ktjiaoyu.thymeleaf.entity.User">
        <id property="usrId" column="usr_id" jdbcType="BIGINT"/>
        <result property="usrName" column="usr_name" jdbcType="VARCHAR"/>
        <result property="usrPassword" column="usr_password" jdbcType="VARCHAR"/>
        <result property="usrRoleId" column="usr_role_id" jdbcType="BIGINT"/>
        <result property="usrFlag" column="usr_flag" jdbcType="INTEGER"/>
        <result property="roleName" column="role_name"/>
    </resultMap>

    <sql id="Base_Column_List">
        usr_id,usr_name,usr_password,
        usr_role_id,usr_flag
    </sql>
    <select id="findAllUsers" resultMap="BaseResultMap">
        select u.*,r.role_name
        from sys_user u
            left join sys_role r on u.usr_role_id=r.role_id
        <where>
            <if test="usrName != null and usrName != ''">
                and u.usr_name like '%${usrName}%'
            </if>
            <if test="roleId != null and roleId != 0">
                and u.usr_role_id = #{roleId}
            </if>
        </where>
        limit #{pageIndex},#{pageSize}
    </select>
    <select id="login" resultMap="BaseResultMap">
        select u.*,r.role_name
        from sys_user u
                 left join sys_role r on u.usr_role_id=r.role_id
        where
             u.usr_name = #{usrName}
        and
            u.usr_password = #{usrPassword}
    </select>
    <select id="count" resultType="java.lang.Integer">
        select count(*) from sys_user
        <where>
            <if test="usrName != null and usrName != ''">
                and usr_name like '%${usrName}%'
            </if>
            <if test="roleId != null and roleId != 0">
                and usr_role_id = #{roleId}
            </if>
        </where>
    </select>
    <select id="getUserById" resultType="com.ktjiaoyu.thymeleaf.entity.User">
        select u.*,r.role_name
        from sys_user u
                 left join sys_role r on u.usr_role_id=r.role_id
        where
            u.usr_id = #{usrId}
    </select>
</mapper>

RoleMapper

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ktjiaoyu.thymeleaf.mapper.RoleMapper">

    <resultMap id="BaseResultMap" type="com.ktjiaoyu.thymeleaf.entity.Role">
            <id property="roleId" column="role_id" jdbcType="BIGINT"/>
            <result property="roleName" column="role_name" jdbcType="VARCHAR"/>
            <result property="roleDesc" column="role_desc" jdbcType="VARCHAR"/>
            <result property="roleFlag" column="role_flag" jdbcType="INTEGER"/>
    </resultMap>

    <sql id="Base_Column_List">
        role_id,role_name,role_desc,
        role_flag
    </sql>
</mapper>

service

UserService、UserServiceImpl

package com.ktjiaoyu.thymeleaf.service;

import com.ktjiaoyu.thymeleaf.entity.User;
import com.baomidou.mybatisplus.extension.service.IService;


import java.util.List;

/**
* @author Administrator
* @description 针对表【sys_user】的数据库操作Service
* @createDate 2024-09-09 09:10:40
*/
public interface UserService extends IService<User> {

    public User login(String usrName, String usrPassword);

    public User addUser(User user);

    public void deleteUser(Integer usrId);

    public User updateUser(User user);

    public User getUser(Long usrId);

    public List<User> selectPageUsers(String usrName, Integer roleId, Integer pageIndex, Integer pageSize);

    public int countInt(String usrName, Integer roleId);

    User getUserById(Integer usrId);
}
package com.ktjiaoyu.thymeleaf.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ktjiaoyu.thymeleaf.entity.User;

import com.ktjiaoyu.thymeleaf.service.UserService;
import com.ktjiaoyu.thymeleaf.mapper.UserMapper;
import jakarta.annotation.Resource;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Service;

import java.util.List;

/**
* @author Administrator
* @description 针对表【sys_user】的数据库操作Service实现
* @createDate 2024-09-09 09:10:40
*/
@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User>
    implements UserService{

    @Resource
    private UserMapper userMapper;

    @Override
    public User login(String usrName, String usrPassword) {
        return userMapper.login(usrName, usrPassword);
    }

    @Override
    public User addUser(User user) {
        int result = userMapper.insert(user);
        if (result > 0){
            return user;
        }else{
            return null;
        }
    }

    @Override
    public void deleteUser(Integer usrId) {
        userMapper.deleteById(usrId);
    }

    @Override
    public User updateUser(User user) {
        int i = userMapper.updateById(user);
        return user;
    }

    @Override
    public User getUser(Long usrId) {
        return userMapper.selectById(usrId);
    }

    @Override
    public List<User> selectPageUsers(String usrName, Integer roleId, Integer pageIndex, Integer pageSize) {
        return userMapper.findAllUsers(usrName, roleId, pageIndex, pageSize);
    }

    @Override
    public int countInt(String usrName, Integer roleId) {
        return userMapper.count(usrName, roleId);
    }

    @Override
    public User getUserById(Integer usrId) {
        return userMapper.getUserById(usrId);
    }
}




 RoleService、RoleServiceImpl

package com.ktjiaoyu.thymeleaf.service;

import com.ktjiaoyu.thymeleaf.entity.Role;
import com.baomidou.mybatisplus.extension.service.IService;

/**
* @author Administrator
* @description 针对表【sys_role】的数据库操作Service
* @createDate 2024-09-20 14:17:54
*/
public interface RoleService extends IService<Role> {

}
package com.ktjiaoyu.thymeleaf.service.impl;

import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ktjiaoyu.thymeleaf.entity.Role;
import com.ktjiaoyu.thymeleaf.service.RoleService;
import com.ktjiaoyu.thymeleaf.mapper.RoleMapper;
import org.springframework.stereotype.Service;

/**
* @author Administrator
* @description 针对表【sys_role】的数据库操作Service实现
* @createDate 2024-09-20 14:17:54
*/
@Service
public class RoleServiceImpl extends ServiceImpl<RoleMapper, Role>
    implements RoleService{

}




 

控制器开发

列表(联表加分页)

    @RequestMapping("/user/list")
    public String findUsers(Model model, String usrName, Integer roleId, @RequestParam(defaultValue = "1") Integer pageIndex){
        System.out.println(usrName + "/" + roleId);
        // 分页对象
        Page<User> userPage = new Page<>();
        // 当前页数
        userPage.setPageNo(pageIndex);
        // 页面数据量
        userPage.setPageSize(5);
        // 获取页面数据总量
        userPage.setTotalCount(userService.countInt(usrName, roleId));
        // 获取分页数据列表
        userPage.setData(userService.selectPageUsers(usrName,roleId,( userPage.getPageNo() - 1 ) * userPage.getPageSize(),userPage.getPageSize()));
        // 获取角色数据列表
        List<Role> roles = roleService.list();
        // 传递分页数据
        model.addAttribute("userPager",userPage);
        // 传递角色数据列表
        model.addAttribute("roles",roles);
        // 数据回显
        model.addAttribute("usrName",usrName);
        model.addAttribute("roleId",roleId);
        return "user/list";
    }

新增、修改

    @RequestMapping("/user/save")
    public String save(User user){
        if (user.getUsrId() != null){
            userService.updateUser(user);
        }else{
            userService.save(user);
        }
        return "redirect:/user/list";
    }

删除

    @ResponseBody
    @RequestMapping("/user/del/{usrId}")
    public String del(@PathVariable Integer usrId){
        userService.deleteUser(usrId);
        Map map = new HashMap();
        map.put("result","true");
        return JSONUtils.toJSONString(map);
    }

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

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

相关文章

智源研究院与百度达成战略合作 共建AI产研协同生态

2024年9月24日&#xff0c;北京智源人工智能研究院&#xff08;简称“智源研究院”&#xff09;与北京百度网讯科技有限公司&#xff08;简称“百度”&#xff09;正式签署战略合作协议&#xff0c;双方将充分发挥互补优势&#xff0c;在大模型等领域展开深度合作&#xff0c;共…

共享打印机无法创建打印作业原因分析及解决方法

在日常办公和生活中&#xff0c;打印机是不可或缺的重要设备。然而&#xff0c;有时在添加打印机的过程中&#xff0c;经常会遇各种问题。今天有个小伙伴问我在访问共享打印机时提示“无法创建打印作业”怎么回事&#xff1f;今天小编就教大家共享打印机无法创建打印作业原因分…

多表查询。

一、多表查询 select * from 表名,表名; select * from 表名,表名 where 条件; 二、内连接 隐式 select 字段列表 from 表1,表2 where 条件; 显示 select 字段列表 from 表1 INNER JOIN 表2 on 条件; 三、外连接 1.左外连接 select 字段列表 from 表1 left [outer] join 表…

接口自动化测试框架详解(pytest+allure+aiohttp+ 用例自动生成)

&#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 近期准备优先做接口测试的覆盖&#xff0c;为此需要开发一个测试框架&#xff0c;经过思考&#xff0c;这次依然想做点儿不一样的东西。 接口测试是比较讲究效…

【C++】STL--string(下)

1.string类对象的修改操作 erase&#xff1a;指定位置删除 int main() {string str1("hello world");str1.push_back(c);//尾插一个ccout << str1 << endl;string str2;str2.append("hello"); // 在str后追加一个字符"hello"cout…

openwrt固件选择推荐一:kwrt

前言 本文将推荐第一个openwrt固件Kwrt&#xff0c;帮助openwrt新手用户快速构建自己固件。下篇会推荐第二个Openwrt优秀固件。 一.openwrt定制系统&#xff1a;Kwrt github项目地址&#xff1a;点击跳转 支持300设备 1.提供在线定制页面&#xff0c;定制预装软件 固件在…

如何在 Windows 台式机或笔记本电脑上恢复未保存的 Excel 文件

您的汗水很容易化为灰烬&#xff0c;如果您没有保存长时间编写的项目报告或电子表格&#xff0c;这可能会令人心碎。丢失 Windows PC 上未保存的 Excel 文件可能是导致这种情况的原因。但您不应该惊慌。仍然有机会恢复未保存的 Excel 文件。 在本指南中&#xff0c;我们将向您…

failed to load steamui.dll的多种处理方法,steamui.dll的作用

在使用Steam平台时&#xff0c;不少玩家可能会遇到“failed to load steamui.dll”这样令人头疼的错误提示。这个错误会阻碍Steam客户端的正常运行&#xff0c;影响我们享受游戏和Steam平台的各种服务。不过&#xff0c;不必过于担心&#xff0c;因为有多种方法可以尝试解决这个…

车位租赁系统的设计与实现

摘 要 传统信息的管理大部分依赖于管理人员的手工登记与管理&#xff0c;然而&#xff0c;随着近些年信息技术的迅猛发展&#xff0c;让许多比较老套的信息管理模式进行了更新迭代&#xff0c;车位信息因为其管理内容繁杂&#xff0c;管理数量繁多导致手工进行处理不能满足广…

3d gaussian splatting公式推导

1. 离散公式推导 nerf中连续的积分渲染公式是&#xff1a; 其中被遮挡率&#xff1a; 那么转换为离散公式后有&#xff1a; 其中&#xff0c;代表j时刻的时间差&#xff0c;将其带入渲染公式&#xff1a; 设透明度 则被遮挡率 有 而gaussian-splating的公式与ner…

CNN-LSTM预测 | MATLAB实现CNN-LSTM卷积长短期记忆神经网络时间序列预测

CNN-LSTM预测 | MATLAB实现CNN-LSTM卷积长短期记忆神经网络时间序列预测 目录 CNN-LSTM预测 | MATLAB实现CNN-LSTM卷积长短期记忆神经网络时间序列预测预测效果基本介绍模型描述程序设计参考资料预测效果 基本介绍 本次运行测试环境MATLAB2020b 提出一种包含卷积神经网络和长短…

windows11环境安装lua及luarocks(踩坑篇)

一、lua安装及下载 官方地址&#xff1a; Lua Binaries Download 从这里就有坑了&#xff0c;下载后先解压win64_bin.zip&#xff0c;之后解压lib&#xff0c;用lib中的文件替换win64的&#xff0c;并把include文件夹复制过去&#xff0c;之后复制并重命名lua54&#xff0c;方…

面试知识点总结篇四

一、计算机网络 概念&#xff1a;互连的、自治的计算机系统的集合组成&#xff1a;硬件、软件、协议。功能组成&#xff1a;通信子网&#xff08;物理层、数据链路层、网络层&#xff09;、资源子网&#xff08;会话层、表示层、应用层&#xff09;分别有广域网、城域网、局域…

2024年软考网络工程师中级题库

1【考生回忆版】以下不属于5G网络优点的是&#xff08;A) A.传输过程中消耗的资源少&#xff0c;对设备的电池更友好 B.支持大规模物联网&#xff0c;能够连接大量低功耗设备&#xff0c;提供更高效的管理 C.引入了网络切片技术&#xff0c;允许将物理网络划分为多个虚拟网络…

数据分析:Python语言网络图绘制

文章目录 介绍加载R包类别导入数据下载数据画图介绍 网络图是一种图形表示法,用于展示实体之间的关系。在不同的领域中,网络图有着不同的含义和用途:在生物学中,网络图可以用来表示生物分子之间的相互作用,如蛋白质相互作用网络。 加载R包 import pandas as pd import …

Docker 安装 Apache(图文教程)

Apache HTTP服务器(简称Apache)是一个开源的、跨平台的Web服务器软件,由Apache软件基金会开发和维护。Apache HTTP服务器是世界上最流行的Web服务器软件之一,被广泛用于互联网上的网站和应用程序。 一、拉取镜像 docker pull httpd:latest二、运行容器 Apache的默认端口是…

计算机毕业设计之:宠物服务APP的设计与实现(源码+文档+讲解)

博主介绍&#xff1a; ✌我是阿龙&#xff0c;一名专注于Java技术领域的程序员&#xff0c;全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师&#xff0c;我在计算机毕业设计开发方面积累了丰富的经验。同时&#xff0c;我也是掘金、华为云、阿里云、InfoQ等平台…

Spring Boot 点餐系统:餐饮界的技术革新

第四章 系统设计 4.1 系统体系结构 网上点餐系统的结构图4-1所示&#xff1a; 图4-1 系统结构 模块包括主界面&#xff0c;首页、个人中心、用户管理、美食店管理、美食分类管理、美食信息管理、美食订单管理、美食评价管理、系统管理等进行相应的操作。 登录系统结构图&…

加入AI新引擎,华为数据中台全面智能化升级

作者 | 曾响铃 文 | 响铃说 根据IDC 报告&#xff0c;截至2022年中国数据规模已经达到23.88ZB&#xff0c;预计2027年将达到76.6ZB&#xff0c;五年年均增长速度将达到26.3%。在这样的背景下&#xff0c;如何进一步挖掘数据价值、提高数据应用效率&#xff0c;成为企业们普遍…

vscode下pnpm命令执行不了

今天使用pnpm install 报错&#xff0c;信息如下&#xff1a; 解决方法 一、安装pnpm 用cmd执行命令 npm install pnpm -g 二、用powershell 以管理员身份运行 执行命令 set-ExecutionPolicy RemoteSigned 回到vscode执行 pnpm install已经可以执行了