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

day1 开发我的第一个MyBatis程序

文章目录

  • 开发我的第一个MyBatis程序
    • 1. resources目录:
    • 2. 开发步骤
    • 3. 从 XML 中构建 SqlSessionFactory
    • MyBatisIntroductionTest
    • 4. mybatis中有两个主要的配置文件:
    • 5. 关于第一个程序的小细节
    • mybatis-config.xml
    • 6. 关于mybatis的事务管理机制。(深度剖析)
    • MyBatisCompleteTest
    • 7. 关于mybatis集成日志组件。让我们调试起来更加方便。

开发我的第一个MyBatis程序

1. resources目录:

放在这个目录当中的,一般都是资源文件,配置文件。
直接放到resources目录下的资源,等同于放到了类
的根路径下。

2. 开发步骤

  • 第一步:打包方式jar

  • 第二步:引入依赖

    • mybatis依赖
    • mysql驱动依赖
  • 第三步:编写mybatis核心配置文件:mybatis-config.xml
    注意:
    第一:这个文件名不是必须叫做mybatis-config.xml,可以用其他的名字。只是大家都采用这个名字。
    第二:这个文件存放的位置也不是固定的,可以随意,但一般情况下,会放到类的根路径下。

    mybatis-config.xml文件中的配置信息不理解没关系,先把连接数据库的信息修改以下即可。
    其他的别动。

  • 第四步:编写XxxxMapper.xml文件
    在这个配置文件当中编写SQL语句。
    这个文件名也不是固定的,放的位置也不是固定,我们这里给它起个名字,叫做:CarMapper.xml
    把它暂时放到类的根路径下。

  • 第五步:在mybatis-config.xml文件中指定XxxxMapper.xml文件的路径:

    注意:resource属性会自动从类的根路径下开始查找资源。

  • 第六步:编写MyBatis程序。(使用mybatis的类库,编写mybatis程序,连接数据库,做增删改查就行了。)
    在MyBatis当中,负责执行SQL语句的那个对象叫做什么呢?
    SqlSession
    SqlSession是专门用来执行SQL语句的,是一个Java程序和数据库之间的一次会话。
    要想获取SqlSession对象,需要先获取SqlSessionFactory对象,通过SqlSessionFactory工厂来生产SqlSession对象。
    怎么获取SqlSessionFactory对象呢?
    需要首先获取SqlSessionFactoryBuilder对象。
    通过SqlSessionFactoryBuilder对象的build方法,来获取一个SqlSessionFactory对象。

    mybatis的核心对象包括:
    SqlSessionFactoryBuilder
    SqlSessionFactory
    SqlSession

    SqlSessionFactoryBuilder --> SqlSessionFactory --> SqlSession

3. 从 XML 中构建 SqlSessionFactory

通过官方的这句话,你能想到什么呢?第一:在MyBatis中一定是有一个很重要的对象,这个对象是:SqlSessionFactory对象。第二:SqlSessionFactory对象的创建需要XML。
XML是什么?它一定是一个配置文件。

MyBatisIntroductionTest

package com.powernode.mybatis.test;import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;import java.io.FileInputStream;
import java.io.InputStream;public class MyBatisIntroductionTest {public static void main(String[] args) throws Exception {// 获取SqlSessionFactoryBuilder对象SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();// 获取SqlSessionFactory对象InputStream is = Resources.getResourceAsStream("mybatis-config.xml"); // Resources.getResourceAsStream默认就是从类的根路径下开始查找资源。//InputStream is = Resources.getResourceAsStream("com/mybatis.xml");//InputStream is = new FileInputStream("d:\\mybatis-config.xml");//InputStream is = ClassLoader.getSystemClassLoader().getResourceAsStream("mybatis-config.xml");SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(is); // 一般情况下都是一个数据库对应一个SqlSessionFactory对象。// 获取SqlSession对象SqlSession sqlSession = sqlSessionFactory.openSession(); // 如果使用的事务管理器是JDBC的话,底层实际上会执行:conn.setAutoCommit(false);// 这种方式实际上是不建议的,因为没有开启事务。//SqlSession sqlSession = sqlSessionFactory.openSession(true);// 执行SQL语句int count = sqlSession.insert("insertCar"); // 返回值是影响数据库表当中的记录条数。System.out.println("插入了几条记录:" + count);// 手动提交sqlSession.commit(); // 如果使用的事务管理器是JDBC的话,底层实际上还是会执行conn.commit();}
}

4. mybatis中有两个主要的配置文件:

其中一个是:mybatis-config.xml,这是核心配置文件,主要配置连接数据库的信息等。(一个)
另一个是:XxxxMapper.xml,这个文件是专门用来编写SQL语句的配置文件。(一个表一个)t_user表,一般会对应一个UserMapper.xmlt_student表,一般会对应一个StudentMapper.xml

5. 关于第一个程序的小细节

* mybatis中sql语句的结尾";"可以省略。
* Resources.getResourceAsStream小技巧:以后凡是遇到resource这个单词,大部分情况下,这种加载资源的方式就是从类的根路径下开始加载。(开始查找)优点:采用这种方式,从类路径当中加载资源,项目的移植性很强。项目从windows移植到linux,代码不需要修改,因为这个资源文件一直都在类路径当中。
* InputStream is = new FileInputStream("d:\\mybatis-config.xml");采用这种方式也可以。缺点:可移植性太差,程序不够健壮。可能会移植到其他的操作系统当中。导致以上路径无效,还需要修改java代码中的路径。这样违背了OCP原则。
* 已经验证了:mybatis核心配置文件的名字,不一定是:mybatis-config.xml。可以是其它名字。mybatis核心配置文件存放的路径,也不一定是在类的根路径下。可以放到其它位置。但为了项目的移植性,健壮性,最好将这个配置文件放到类路径下面。
* InputStream is = ClassLoader.getSystemClassLoader().getResourceAsStream("mybatis-config.xml");ClassLoader.getSystemClassLoader() 获取系统的类加载器。系统类加载器有一个方法叫做:getResourceAsStream它就是从类路径当中加载资源的。通过源代码分析发现:InputStream is = Resources.getResourceAsStream("mybatis-config.xml");底层的源代码其实就是:InputStream is = ClassLoader.getSystemClassLoader().getResourceAsStream("mybatis-config.xml");
* CarMapper.xml文件的名字是固定的吗?CarMapper.xml文件的路径是固定的吗?都不是固定的。<mapper resource="CarMapper.xml"/> resource属性:这种方式是从类路径当中加载资源。<mapper url="file:///d:/CarMapper.xml"/> url属性:这种方式是从绝对路径当中加载资源。

mybatis-config.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd"><configuration><!--开启mybatis对标准日志的实现。--><!--<settings>--><!--<setting name="logImpl" value="STDOUT_LOGGING"/>--><!--<setting name="logImpl" value="SLF4J"/>--><!--</settings>--><environments default="development"><environment id="development"><!--<transactionManager type="MANAGED"/>--><transactionManager type="JDBC"/><dataSource type="POOLED"><property name="driver" value="com.mysql.cj.jdbc.Driver"/><property name="url" value="jdbc:mysql://localhost:3306/powernode"/><property name="username" value="root"/><property name="password" value="root"/></dataSource></environment></environments><mappers><!--执行XxxMapper.xml文件的路径--><!--resource属性自动会从类的根路径下开始查找资源。--><mapper resource="CarMapper.xml"/><!--resource属性:从类路径当中加载资源。--><!--<mapper resource="com/CarMapper2.xml"/>--><!--url属性:从绝对路径当中加载资源。--><!--语法格式:file:///绝对路径--><!--不建议:因为移植性差。--><!--<mapper url="file:///d:/CarMapper.xml"/>--></mappers>
</configuration>

6. 关于mybatis的事务管理机制。(深度剖析)

* 在mybatis-config.xml文件中,可以通过以下的配置进行mybatis的事务管理<transactionManager type="JDBC"/>
* type属性的值包括两个:JDBC(jdbc)MANAGED(managed)type后面的值,只有以上两个值可选,不区分大小写。
* 在mybatis中提供了两种事务管理机制:第一种:JDBC事务管理器第二种:MANAGED事务管理器
* JDBC事务管理器:mybatis框架自己管理事务,自己采用原生的JDBC代码去管理事务:conn.setAutoCommit(false); 开启事务。....业务处理...conn.commit(); 手动提交事务使用JDBC事务管理器的话,底层创建的事务管理器对象:JdbcTransaction对象。如果你编写的代码是下面的代码:SqlSession sqlSession = sqlSessionFactory.openSession(true);表示没有开启事务。因为这种方式压根不会执行:conn.setAutoCommit(false);在JDBC事务中,没有执行conn.setAutoCommit(false);那么autoCommit就是true。如果autoCommit是true,就表示没有开启事务。只要执行任意一条DML语句就提交一次。* MANAGED事务管理器:mybatis不再负责事务的管理了。事务管理交给其它容器来负责。例如:spring。我不管事务了,你来负责吧。对于我们当前的单纯的只有mybatis的情况下,如果配置为:MANAGED那么事务这块是没人管的。没有人管理事务表示事务压根没有开启。没有人管理事务就是没有事务。* JDBC中的事务:如果你没有在JDBC代码中执行:conn.setAutoCommit(false);的话,默认的autoCommit是true。* 重点:以后注意了,只要你的autoCommit是true,就表示没有开启事务。只有你的autoCommit是false的时候,就表示开启了事务。

MyBatisCompleteTest

package com.powernode.mybatis.test;import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;/*** 采用正规的方式,写一个完整版的MyBatis程序。* @author 动力节点* @version 1.0* @since 1.0*/
public class MyBatisCompleteTest {public static void main(String[] args) {SqlSession sqlSession = null;try {SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(Resources.getResourceAsStream("mybatis-config.xml"));// 开启会话(底层会开启事务)sqlSession = sqlSessionFactory.openSession();// 执行SQL语句,处理相关业务int count = sqlSession.insert("insertCar");System.out.println(count);// 执行到这里,没有发生任何异常,提交事务。终止事务。sqlSession.commit();} catch (Exception e) {// 最好回滚事务if (sqlSession != null) {sqlSession.rollback();}e.printStackTrace();} finally {// 关闭会话(释放资源)if (sqlSession != null) {sqlSession.close();}}}
}

7. 关于mybatis集成日志组件。让我们调试起来更加方便。

* mybatis常见的集成的日志组件有哪些呢?SLF4J(沙拉风):沙拉风是一个日志标准,其中有一个框架叫做logback,它实现了沙拉风规范。LOG4JLOG4J2STDOUT_LOGGING....注意:log4j log4j2 logback都是同一个作者开发的。* 其中STDOUT_LOGGING是标准日志,mybatis已经实现了这种标准日志。mybatis框架本身已经实现了这种标准。
只要开启即可。怎么开启呢?在mybatis-config.xml文件中使用settings标签进行配置开启。<settings><setting name="logImpl" value="STDOUT_LOGGING"/></settings>这个标签在编写的时候要注意,它应该出现在environments标签之前。注意顺序。当然,不需要记忆这个顺序。因为有dtd文件进行约束呢。我们只要参考dtd约束即可。这种实现也是可以的,可以看到一些信息,比如:连接对象什么时候创建,什么时候关闭,sql语句是怎样的。但是没有详细的日期,线程名字,等。如果你想使用更加丰富的配置,可以集成第三方的log组件。* 集成logback日志框架。logback日志框架实现了slf4j标准。(沙拉风:日志门面。日志标准。)第一步:引入logback的依赖。<dependency><groupId>ch.qos.logback</groupId><artifactId>logback-classic</artifactId><version>1.2.11</version></dependency>第二步:引入logback所必须的xml配置文件。这个配置文件的名字必须叫做:logback.xml或者logback-test.xml,不能是其它的名字。这个配置文件必须放到类的根路径下。不能是其他位置。主要配置日志输出相关的级别以及日志具体的格式。

相关文章:

day1 开发我的第一个MyBatis程序

文章目录开发我的第一个MyBatis程序1. resources目录&#xff1a;2. 开发步骤3. 从 XML 中构建 SqlSessionFactoryMyBatisIntroductionTest4. mybatis中有两个主要的配置文件&#xff1a;5. 关于第一个程序的小细节mybatis-config.xml6. 关于mybatis的事务管理机制。&#xff0…...

【CDP】更改solr 存储路径导致ranger-audit 大量报错问题解决

前言 我们生产上公司是使用的CDP集群&#xff0c;一次管理员通知&#xff0c;Solr 组件的数据存放路径磁盘空间不够。 我们的solr 组件时为 Ranger 服务提供日志审计功能&#xff0c; 在我们更改了磁盘路径&#xff0c;并重启了Solr 组件&#xff0c;然后发现相关组件&#…...

JavaScript基础一、简介

零、文章目录 文章地址 个人博客-CSDN地址&#xff1a;https://blog.csdn.net/liyou123456789个人博客-GiteePages&#xff1a;https://bluecusliyou.gitee.io/techlearn 代码仓库地址 Gitee&#xff1a;https://gitee.com/bluecusliyou/TechLearnGithub&#xff1a;https:…...

Qt音视频开发20-vlc内核动态保存录像文件(不需要重新编译源码)

一、前言 在vlc默认提供的保存文件方式中&#xff0c;通过打开的时候传入指定的参数来保存文件&#xff0c;直到关闭播放生成文件&#xff0c;这种方式简单暴力&#xff0c;但是不适用大部分的场景&#xff0c;大部分时候需要的是提供开始录制和停止录制的功能&#xff0c;也就…...

【深度学习】BERT变体—RoBERTa

RoBERTa是的BERT的常用变体&#xff0c;出自Facebook的RoBERTa: A Robustly Optimized BERT Pretraining Approach。来自Facebook的作者根据BERT训练不足的缺点提出了更有效的预训练方法&#xff0c;并发布了具有更强鲁棒性的BERT&#xff1a;RoBERTa。 RoBERTa通过以下四个方面…...

java面试准备1

JVM、JRE和JDK的关系 JVM:Java Virtual Machine是java虚拟机&#xff0c;Java程序需要运行在虚拟机上&#xff0c;不同的平台有自己的虚拟机&#xff0c;因此java可以实现跨平台使用。 JRE&#xff1a;Java Runtion Envirement包括Java虚拟机和Java程序所需要的核心类库等。 J…...

buffer它到底做了个啥,源码级分析linux内核的文件系统的缓冲区

最近一直在学习linux内核源码&#xff0c;总结一下 https://github.com/xiaozhang8tuo/linux-kernel-0.11 自己整理过的带注释的源码。 为什么要有buffer ​ 高速缓冲区是文件系统访问块设备中数据的必经要道(PS:如果所有程序结果都不落盘&#xff0c;只是int a, a直接在主存…...

【蓝桥杯刷题】盗版Huybery系列之手抓饼赛马

【蓝桥杯刷题】—— 盗版Huybery系列之手抓饼赛马&#x1f60e;&#x1f60e;&#x1f60e; 目录 &#x1f4a1;前言&#x1f31e;&#xff1a; &#x1f49b;盗版Huybery系列之手抓饼赛马题目&#x1f49b; &#x1f4aa; 解题思路的分享&#x1f4aa; &#x1f60a;题…...

【微信小程序-原生开发】实用教程16 - 查看详情(含页面跳转的传参方法--简单传参 vs 复杂传参)

需在实现列表的基础上开发 【微信小程序-原生开发】实用教程15 - 列表的排序、搜索&#xff08;含云数据库常用查询条件的使用方法&#xff0c;t-search 组件的使用&#xff09;_朝阳39的博客-CSDN博客 https://sunshinehu.blog.csdn.net/article/details/129356909 效果预览 …...

论文精读:Ansor: Generating High-Performance Tensor Programs for Deep Learning

文章目录1. Abstract2. Introduction3. Background4. Design Overview5. Program Sampling5.1 Sketch Generation5.2 Random Annotation6. Performance Fine-tuning6.1 Evolutionary Search6.2 Learned Cost Model7. Task Scheduler7.1 Problem Formulation7.2 Optimizing with…...

SpringBoot With IoC,DI, AOP,自动配置

文章目录1 IoC&#xff08;Inverse Of Controller&#xff09;2 DI&#xff08;Dependency Injection&#xff09;3 AOP&#xff08;面向切面编程&#xff09;3.1 什么是AOP&#xff1f;3.2 AOP的作用&#xff1f;3.3 AOP的核心概念3.4 AOP常见通知类型3.5 切入点表达式4 自动配…...

ggplot2的组图拓展包(1):patchwork(上篇)

专注系列化、高质量的R语言教程推文索引 | 联系小编 | 付费合集patchwork是ggplot绘图系统的拓展包&#xff0c;主要功能是将多个ggplot格式的图形组合成一幅大图&#xff0c;即组图。patchwork工具包十分好用&#xff0c;它主要利用几个类似四则运算符号的操作符进行组图&…...

Python 异步: 异步迭代器(15)

动动发财的小手&#xff0c;点个赞吧&#xff01; 迭代是 Python 中的基本操作。我们可以迭代列表、字符串和所有其他结构。 Asyncio 允许我们开发异步迭代器。我们可以通过定义一个实现 aiter() 和 anext() 方法的对象来在 asyncio 程序中创建和使用异步迭代器。 1. 什么是异步…...

HD-G2L-IOT V2.0核心板MPU压力测试

1. 测试对象HD-G2L-IOT基于HD-G2L-CORE V2.0工业级核心板设计&#xff0c;双路千兆网口、双路CAN-bus、2路RS-232、2路RS-485、DSI、LCD、4G/5G、WiFi、CSI摄像头接口等&#xff0c;接口丰富&#xff0c;适用于工业现场应用需求&#xff0c;亦方便用户评估核心板及CPU的性能。H…...

scikit-image:遥感图像geotiff格式转mat格式

scikit-imagescikit-image 是一个专门用于图像处理的 Python 库&#xff0c;它可以与 Scipy 库和其他可能有助于计算的 Python 库一起使用。Github地址&#xff1a;https://github.com/scikit-image/scikit-image Star有5.3k首先pip安装scikit-image包&#xff0c;或者直接使用…...

吉利银河L7、长城哈弗B07、比亚迪宋Plus DM-i,自主品牌决战混动

2月23日&#xff0c;吉利推出全新的中高端新能源产品序列——吉利银河。当日&#xff0c;吉利推出了首款智能电混SUV「银河L7」&#xff0c;新车将在二季度交付。本月10日&#xff0c;长城汽车也计划举办智能新能源干货大会&#xff0c;其「颠覆技术」等宣传直面新一代的新能源…...

附录3:说一说 Ambari 视图编译相关

一、Ambari View Ambari 视图,即 Ambari Views 。其实 Ambari 视图并不是很好用,所以大部分人很自然地就把 Ambari 视图给忽略了,心里会冒出一句:“还有这东西?”。然而作为 Ambari 的一部分,今天还是要讲一下,万一有人追求 Ambari 完整性,要编译并安装汉化他们呢? …...

Arduino双色LED实验记录

接线图片&#xff1a;双色LED实物和布线有区别&#xff1a;代码&#xff1a;int RED_LED 11; //设置红色为11 int GREEN_LED 10; //设置绿色为10 int val 0;//全局变量val void setup() {// put your setup code here, to run once:pinMode(RED_LED,OUTPUT);//引脚配置pinMo…...

flex布局

十分简单灵活&#xff0c;区区几行代码都可以实现各种页面的布局&#xff0c;曾经学习页面布局时候&#xff0c;深受float、display、position这些属性的困扰&#xff0c;但是学习flex布局&#xff0c;只需要学习几个CSS属性&#xff0c;就可以写出简介优雅复杂的页面布局。 F…...

【操作系统原理实验】命令解释器模拟实现

选择一种高级语言如C/C等&#xff0c;编写一类似于DOS、UNIX中的命令行解释程序。 1)设计系统命名行提示符&#xff1b; 2)自定义命令集&#xff08;8-10个&#xff09;&#xff1b; 3)用户输入help命令以查找命令的帮助&#xff1b; 4)列出命令的功能&#xff0c;区分内部命令…...

uniapp 对接腾讯云IM群组成员管理(增删改查)

UniApp 实战&#xff1a;腾讯云IM群组成员管理&#xff08;增删改查&#xff09; 一、前言 在社交类App开发中&#xff0c;群组成员管理是核心功能之一。本文将基于UniApp框架&#xff0c;结合腾讯云IM SDK&#xff0c;详细讲解如何实现群组成员的增删改查全流程。 权限校验…...

【Linux】shell脚本忽略错误继续执行

在 shell 脚本中&#xff0c;可以使用 set -e 命令来设置脚本在遇到错误时退出执行。如果你希望脚本忽略错误并继续执行&#xff0c;可以在脚本开头添加 set e 命令来取消该设置。 举例1 #!/bin/bash# 取消 set -e 的设置 set e# 执行命令&#xff0c;并忽略错误 rm somefile…...

《基于Apache Flink的流处理》笔记

思维导图 1-3 章 4-7章 8-11 章 参考资料 源码&#xff1a; https://github.com/streaming-with-flink 博客 https://flink.apache.org/bloghttps://www.ververica.com/blog 聚会及会议 https://flink-forward.orghttps://www.meetup.com/topics/apache-flink https://n…...

【Redis】笔记|第8节|大厂高并发缓存架构实战与优化

缓存架构 代码结构 代码详情 功能点&#xff1a; 多级缓存&#xff0c;先查本地缓存&#xff0c;再查Redis&#xff0c;最后才查数据库热点数据重建逻辑使用分布式锁&#xff0c;二次查询更新缓存采用读写锁提升性能采用Redis的发布订阅机制通知所有实例更新本地缓存适用读多…...

【网络安全】开源系统getshell漏洞挖掘

审计过程&#xff1a; 在入口文件admin/index.php中&#xff1a; 用户可以通过m,c,a等参数控制加载的文件和方法&#xff0c;在app/system/entrance.php中存在重点代码&#xff1a; 当M_TYPE system并且M_MODULE include时&#xff0c;会设置常量PATH_OWN_FILE为PATH_APP.M_T…...

计算机基础知识解析:从应用到架构的全面拆解

目录 前言 1、 计算机的应用领域&#xff1a;无处不在的数字助手 2、 计算机的进化史&#xff1a;从算盘到量子计算 3、计算机的分类&#xff1a;不止 “台式机和笔记本” 4、计算机的组件&#xff1a;硬件与软件的协同 4.1 硬件&#xff1a;五大核心部件 4.2 软件&#…...

C语言中提供的第三方库之哈希表实现

一. 简介 前面一篇文章简单学习了C语言中第三方库&#xff08;uthash库&#xff09;提供对哈希表的操作&#xff0c;文章如下&#xff1a; C语言中提供的第三方库uthash常用接口-CSDN博客 本文简单学习一下第三方库 uthash库对哈希表的操作。 二. uthash库哈希表操作示例 u…...

Linux系统部署KES

1、安装准备 1.版本说明V008R006C009B0014 V008&#xff1a;是version产品的大版本。 R006&#xff1a;是release产品特性版本。 C009&#xff1a;是通用版 B0014&#xff1a;是build开发过程中的构建版本2.硬件要求 #安全版和企业版 内存&#xff1a;1GB 以上 硬盘&#xf…...

如何应对敏捷转型中的团队阻力

应对敏捷转型中的团队阻力需要明确沟通敏捷转型目的、提升团队参与感、提供充分的培训与支持、逐步推进敏捷实践、建立清晰的奖励和反馈机制。其中&#xff0c;明确沟通敏捷转型目的尤为关键&#xff0c;团队成员只有清晰理解转型背后的原因和利益&#xff0c;才能降低对变化的…...

如何配置一个sql server使得其它用户可以通过excel odbc获取数据

要让其他用户通过 Excel 使用 ODBC 连接到 SQL Server 获取数据&#xff0c;你需要完成以下配置步骤&#xff1a; ✅ 一、在 SQL Server 端配置&#xff08;服务器设置&#xff09; 1. 启用 TCP/IP 协议 打开 “SQL Server 配置管理器”。导航到&#xff1a;SQL Server 网络配…...