一篇文章学会MyBatis框架(mybatisplus框架)
sinye56 2024-09-27 21:26 7 浏览 0 评论
《“爱读书”--给你讲技术》,我来看书,你来进步,让我们开始吧!
本书简介
书名为《Spring+MyBatis企业应用实战》,是本人在学习JavaEE框架时候的一本基础书籍,本书对于SpringMVC和MyBatis框架及相关基础知识讲述的比较清晰,适合需要详细学习Java框架的读者。
本文内容为本书第八章--第十一章,记录和总结了所有MyBatis的知识
MyBatis开发步骤
1.导入MyBatis依赖的Jar包
2.创建持久化类
3.配置持久化类映射,即配置Mapper
4.配置MyBatis配置文件,即mybatis-config.xml
5.在程序中调用对应方法实现持久化操作
核心对象SqlSessionFactory和SqlSession
1.SqlSessionFactory
SqlSessionFactory是MyBatis的关键对象,它是单个数据库映射关系经过编译后的内存镜像。SqlSessionFactory的实例可以通过SqlSessionFactoryBuilder对象来获得,SqlSessionFactory是线程安全的, SqlSessionFactory一旦被创建,在应用执行期间都存在,不需要重复创。
SqlSessionFactory是创建SqlSession的工厂,创建方法如下:
SqlSession openSession():创建SqlSession对象
2.SqlSession
SqlSession是执行持久化操作的对象,类似于JDBC中的Connection。它是应用程序与持久存储层之间执行交互操作的一个单线程对象。
SqlSession对象包含以数据库为背景的所有执行SQL操作的方法,它的底层封装了JDBC连接,可以用SqlSession实例来直接执行已映射的 SQL语句。
每个线程都应该有它自己的SqlSession实例,是线程不安全的。使用完SqlSession之后必须要关闭它。
SqlSession常用方法如下:
int insert(String statement):插入方法,参数是Mapper中<insert>元素的id,返回执行的行数
int insert(String statement, Object parameter):插入方法,parameter是插入所需的参数
int update(String statement):更新方法,参数是Mapper中<update>元素的id,返回执行的行数
int update(String statement, Object parameter):更新方法,parameter是更新所需的参数
int delete(String statement):删除方法,参数是Mapper中<delete>元素的id,返回执行的行数
int delete(String statement, object parameter):删除方法,parameter是删除所需的参数
<T>T selectOne(String statement):查询方法,参数是Mapper中<select>元素id,返回一条数据
<T>T selectOne(String statement, Object parameter):查询方法
<E> List<E> selectList(String statement):查询方法,参数是Mapper中<select>元素id,返回多条数据
<E> List<E> selectList(String statement, Object parameter):查询方法
<E> List<E> selectList(String statement, Object parameter, RowBounds rowBounds):分页查询,RowBounds对象用于分页,有两个属性:offset指查询的当前页数;limit指当前也显示的数据量
<K,V> Map<K,V> selectMap(String statement, String mapkey):查询方法,mapKey是返回数据的一个列名,查询结果将被封装成一个Map返回,key就是传入的mapkey
<K,V> Map<K,V> selectMap(String statement, Object parameter, String mapKey):查询方法
<K,V> Map<K,V> selectMap(String statement, Object parameter, String mapKey, RowBounds rowBounds):分页查询
void select(String statement, ResultHandler handler):查询方法,ResultHandler用来处理查询返回的复杂结果集,用于多表查询
void select(String statement, Object parameter, ResultHandler handler):查询方法
void select(String statement, Object parameter, RowBounds rowBounds, ResultHandler handler):分页查询
void commit():提交事务
void rollback():回滚事务
void close():关闭SqlSession对象
Connection getConnection():获取JDBC数据库连接
<T>T getMapper(Class<T> type):返回mapper接口的代理对象,该对象关联了SqlSession,开发者可通过该对象直接调用方法操作数据库
MyBatis配置文件
1.MyBatis SqlSessionFactory初始化过程
(1)调用SqlSessionFactoryBuilder对象的build(inputStream)方法
(2)SqlSessionFactoryBuilder会根据输入流inputStream等信息创建XMLConfigBuilder对象
(3)SqlSessionFactoryBuilder调用XMLConfigBuilder对象的parse()方法
(4)XMLConfigBuilder对象解析XML配置文件返回Configuration对象
(5)SqlSessionFactoryBuilder根据Configuration对象创建一个DefaultSessionFactory对象
(6)SqlSessionFactoryBuilder返回DefaultSessionFactory对象给客户端使用
2.MyBatis配置文件属性
- 顶层configuration 配置
- properties 属性
- settings 设置
- typeAliases 类型命名
- typeHandlers 类型处理器
- objectFactory 对象工厂
- plugins 插件
- environments 环境
- environment 环境变量
- transactionManager 事务管理器
- dataSource 数据源
- databaseIdProvider 数据库厂商标识
- mappers 映射器
(1)properties
在classpath中增加db.properties属性文件
配置如下:
<properties resource="db.properties"/>
调用属性文件的值:
<dataSource type="POOLED">
<property name="driver" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</dataSource>
(2)setting
设置MyBatis运行时参数
配置如下:
<settings>
<setting name="" value=""/>
</settings>
参数包含如下:
(3)typeAliases
类型别名是为Java类型设置的一个短的名字。它只和XML配置有关,仅用来减少类完全限定名的冗余。
<typeAliases>
<typeAlias alias="user" type="org.fkit.domain.User"/>
</typeAliases>
MyBatis内建了java类型的别名如下:
(4)typeHandlers
类型处理器将获取的值以合适的方式转换成Java类型
(5)objectFactory
MyBatis每次创建新实例时,都会使用一个对象工厂。如何想覆盖对象工厂的默认行为,可以通过创建自己的对象工厂来实现,继承并重写DefaultObjectFactory。配置如下:
<objectFactory type="org.fkit.factory.ExampleObjectFactory">
</objectFactory>
(6)environments
environments配置就是数据源的配置。每个SqlSessionFactory实例只能选择一个环境,即每个数据库对应一个SqlSessionFactory实例。
配置方式如下:
(1)要配置默认的环境id
(2)每个environment要定义环境id
(3)需要配置事务管理器,包括JDBC和MANAGED
(4)需要配置数据源,包括POOLED、UNPOOLED、JNDI
(7)mapper
mapper映射器告诉MapBatis去哪里找映射文件。可以使用相对于类路径的引用、全限定资源定位符或类名包名等。配置如下:
<!-- 使用类径路查找资源文件 -->
<mappers>
<mapper resource="org/fkit/mapper/UserMapper.xml"/>
</mappers>
<!-- 使用本地文件 -->
<mappers>
<mapper url="file:///c:/mapper/UserMapper.xml"/>
</mappers>
<!-- 使用接口类 -->
<mappers>
<mapper class="org.fkit.mapper.UserMapper"/>
</mappers>
<!-- 使用包名 -->
<mappers>
<package name="org.fkit.mapper"/>
</mappers>
MyBatis日志信息配置
配置日志实现方式
<configuration>
<settings>
<setting name="logImpl" value="LOG4J"/>
</settings>
</configuration>
配置mapper接口所对应的日志级别
(1)采用properties文件配置
//设置某个方法的日志级别
log4j.logger.org.fkit.mapper.UserMapper.selectUser=DEBUG
//设置包的日志级别
log4j.logger.org.fkit.mapper=DEBUG
(2)采用xml文件配置
//设置某个方法的日志级别
<logger name="org.fkit.mapper.UserMapper.selectUser">
<level value="DEBUG"/>
</logger>
//设置包的日志级别
<logger name="org.fkit.mapper">
<level value="DEBUG"/>
</logger>
深入Mapper映射文件
SQL映射文件常用元素:
- select:映射查询语句
- insert:映射插入语句
- update:映射更新语句
- delete:映射删除语句
- sql:可被其他语句引用的可重用语句块
- cache:给定命名空间的缓存配置
- cache-ref:其他命名空间缓存配置引用
- resultMap:用来描述如何从数据库结果集加载对象
1.select
select元素用来映射查询语句
参数符号#{id},是指创建一个预处理语句参数,就是JDBC SQL语句中的?
select元素属性如下:
- id:在命名空间中唯一的标识符,可以被用来引用这条语句
- parameterType:将会传入这条语句的参数类的完全限定名或别名。这个属性是可选的,因为MyBatis可以通过TypeHandler推断出具体传入语句的参数,默认值为unset
- resultType:返回值的类型的类的完全限定名或别名。注意如果是集合情形,那应该是集合可以包含的类型,而不能是集合本身。返回时可以使用resultType或resultMap
- resultMap:外部resultMap的命名引用
- flushCache:如果设置为 true,则任何时候只要语句被调用,都会导致本地缓存和二级缓存都被清空,默认值为false
- useCache:如果设置为 true,将会导致本条语句的结果被二级缓存,在select元素当中默认值为 true
- timeout:这个设置是在抛出异常之前,驱动程序等待数据库返回请求结果的秒数。默认值为 unset
- fetchSize:其尝试使每次批量返回的结果行数和这个设置值相等。默认值为 unset
- statementType:值为STATEMENT、PREPARED或CALLABLE。这会让MyBatis分别使用 JDBC 中的Statement、PreparedStatement或CallableStatement,默认值为PREPARED
- resultSetType:结果集的类型,值为FORWARD_ONLY、SCROLL_SENSITIVE或SCROLL_INSENSITIVE,默认值为unset
- databaseId:如果配置了databaseIdProvider,MyBatis会加载所有的不带databaseId或匹配当前 databaseId 的语句;如果带或者不带的语句都有,则不带的会被忽略
- resultOrdered:这个设置仅针对嵌套结果select语句适用:如果为true,就是假设包含了嵌套结果集或分组,这样的话当返回一个主结果行的时候,就不会发生对前面结果集引用的情况。这就使得在获取嵌套的结果集时不至于导致内存不够用。默认值为false
- resultSets:这个设置仅对多结果集的情况适用,它将列出语句执行后返回的结果集并给每个结果集起一个名称,名称是逗号分隔的
2.insert、update和delete
常用属性举例如下:
insert、update 和 delete元素的属性大多和select的一致,它们特有的属性如下:
- useGeneratedKeys:(仅对 insert 和 update 有用)这会令MyBatis使用JDBC的getGeneratedKeys方法来获取由数据库内部生成的主键,默认值为false
- keyProperty:(仅对 insert 和 update 有用)唯一标记一个属性,MyBatis会通过getGeneratedKeys的返回值或者通过insert语句的selectKey子元素设置它的键值,默认为unset
- keyColumn:(仅对insert和update有用)通过生成的键值设置表中的列名,这个设置仅对某些数据库(像PostgreSQL)是必须的,当主键列不是表中的第一列时需要设置
insert插入主键的方式
(1)如果数据库支持主键生成方式(如:MySQL和SQL Server)
(2)如果数据库采用其他方式生成主键(如:Oracle)
3.sql
sql元素被用来定义可重用的SQL代码段,可以包含在其他语句中,
定义SQL
使用SQL
4.参数(Parameters)
简单数据类型
复杂对象
5.ResultMaps
resultMap元素作用是讲结果集中取出的数据转换成开发者所需的对象
(1)单表映射
举例如下:
resultType表示将返回的结果集转换成一个Map集合
当然也可以将结果集转换成持久化对象
默认情况下,MtBatis会将查询到的数据列和需要返回的对象的属性逐一进行匹配赋值,但如果查询到的数据列和需要返回的对象属性不一致,就无法自动赋值了。这时需要使用resultMap处理。
如下图:
上图使用resultMap将持久化对象属性和表的字段进行匹配
resultMap常用属性如下:
- id:唯一标识符
- type:实际返回的类型
- <id>子元素指定数据库表的主键,column为列名,property为对象属性
- <result>子元素指定数据库表的普通列
(2)多表关联映射(1对1)
多表查询的情况,当查询某个对象同时关联查询了另一个对象时使用<association>
<!-- 映射学生对象的resultMap -->
<resultMap id="studentResultMap" type="org.fkit.domain.Student">
<id property="id" column="id"/>
<result property="name" column="name"/>
<result property="age" column="age"/>
<!-- 关联映射班级对象 -->
<association property="clazz" column="clazz_id"
javaType="org.fkit.domain.Clazz" select="selectClazzWithId"/>
</resultMap>
<!-- 根据班级id查询班级 -->
<select id="selectClazzWithId" resultType="org.fkit.domain.Clazz">
select * from TB_CLAZZ where id = #{id}
</select>
<!-- 查询所有学生信息 -->
<select id="selectStudent" resultMap="studentResultMap">
select * from TB_STUDENT
</select>
说明如下:
- 查询所有的学生数据,此时返回的不是简单的Student对象,因为Student对象中还包含了Clazz对象,所以使用resultMap去映射返回类型
- resultMap中查询的班级id列clazz_id则使用了关联映射<association/>,元素属性如下:
column:数据库表列名
property:返回的对象类型
javaType:property属性对应的java类型
select:执行一条查询语句,将查询到的数据封装到property所代表的对象中
(3)多表关联映射(1对多)
多表查询的情况,当查询某个对象同时关联查询了List对象时使用<collection>
<!-- 映射班级对象的resultMap -->
<resultMap id="clazzResultMap" type="org.fkit.domain.Clazz">
<id property="id" column="id"/>
<result property="code" column="code"/>
<!-- 一个班级对应多个学生,该属性为一个集合映射 -->
<collection property="students" javaType="ArrayList"
column="id" ofType="org.fkit.domain.Student"
select="selectStudentWithId"/>
</resultMap>
<!-- 根据班级id查询学生 -->
<select id="selectStudentWithId" resultType="org.fkit.domain.Student">
select * from TB_STUDENT where clazz_id = #{id}
</select>
<!-- 查询所有班级信息 -->
<select id="selectClazz" resultMap="clazzResultMap">
select * from TB_CLAZZ
</select>
说明如下:
- 查询所有的班级数据,此时返回的不是简单的Clazz对象,因为Clazz对象中还包含了学生的集合对象,所以使用resultMap去映射返回类型
- 查询班级所有学生时使用了集合映射<collection/>,属性如下:
property:返回的集合类型的属性名
javaType:property属性对应的java类型
ofType:集合中的类型
column:使用当前表的哪个列名作为查询集合的条件
select:执行一条查询语句,将查询到的数据封装到property所代表的对象中
fetchType:设置集合属性加载的方式,包括eager和lazy,eager立即加载,lazy延迟加载
一般来说1对多关联大多被设置成lazy,全局设置方式如下:
//mybatis-config.xml文件
<settings>
<setting name="lazyLoadingEnabled" value="true"/>
<setting name="aggressiveLazyLoading" value="false"/>
</settings>
(4)多表关联映射(多对多)
多对多关联,单独看每个对象的映射,其实就是1对1和1对多的组合。所以只需组合使用<association>和<collection>元素即可。
MyBatis调用存储过程
1.操作数据的存储过程
插入数据
存储过程如下:
配置如下:
(1)调用存储过程时,需要把statementType属性的值设置为CALLABLE
(2)call是用来调用存储过程的关键字,需要注意的是,OUT模式的参数必须指定jdbcType,这是因为在IN模式下,MyBatis提供了默认的jdbcType,而在OUT模式下没有提供
修改数据
存储过程如下:
配置如下:
删除数据
存储过程如下:
配置如下:
2.查询数据的存储过程
存储过程如下:
配置如下:
调用名为select_user的存储过程查询所有User数据并返回List,查询到的每一条数据会被封装到User对象中
3.根据条件查询的存储过程
存储过程如下:
配置如下:
MyBatis事务管理
1.Transaction接口
MyBatis事务核心是org.apache.ibatis.transaction.Transaction接口。Transaction接口有两个实现类:
- JdbcTransaction
- ManagedTransaction
同时MyBatis还设计了org.apache.ibatis.transaction.TransactionFactory接口,实现类:
- JdbcTransactionFactory
- ManagedTransactionFactory
以上类可用来获取事务的实例对象
MyBatis管理事务的两种方式:
(1)使用JDBC的事务管理机制。利用java.sql.Connection对象完成对事务的提交(commit)、回滚(rollback)和关闭(close)等操作
(2)使用MANAGED的事务管理机制。这种机制MyBatis自身不会去实现事务管理,而是让容器如WebLogic、JBoss等来实现对事务的管理
2.事务的配置创建和使用
(1)事务的配置
元素<transactionManager>的type决定我们用什么类型的事务管理机制
(2)事务工厂的创建
MyBatis的事务创建是由TransactionFactory事务工厂来完成的。如果type="JDBC",则MyBatis会创建一个JdbcTransactionFactory的实例;如果type="MANAGED",则MyBatis 会创建一个MangedTransactionFactory的实例
(3)事务工厂TransactionFactory
JdbcTransactionFactory会创建JDBC类型的Transaction,即JdbcTransaction。类似地,ManagedTransactionFactory也会创建ManagedTransaction
(4)JdbcTransaction
JdbcTransaction可直接使用JDBC的提交和回滚事务管理机制。它依赖于从dataSource中取得的连接 connection来管理transaction的作用域。如果将autocommit设置为on,开启状态的话,则它会忽略commit和rollback。
MyBatis缓存机制
1.一级缓存(SqlSession级别)
在操作数据库时需要构造SqlSession对象,在SqlSession对象中有一个HashMap用于存储缓存数据。不同的SqlSession之间的缓存数据区域是互相不影响的。
如果SqlSession执行了DML操作(insert、update、delete),并提交到数据库,MyBatis则会
清空SqlSession中的一级缓存
Mybatis默认开启一级缓存,不需要进行任何配置
MyBatis的缓存机制是基于id进行缓存的,MyBatis使用HashMap缓存数据时,是使用对象的id作为key,对象作为value
2.二级缓存(mapper级别)
使用二级缓存时,多个SqlSession使用同一个mapper的SQL语句去操作数据库,得到的数据会存在二级缓存区域,它同样是使用HashMap进行数据存储的。相比一级缓存 SqlSession,二级缓存的范围更大,多个SqlSession可以共享二级缓存中的数据,二级缓存是跨SqlSession的。
MyBatis默认没有开启二级缓存,需要在setting全局参数中配置开启二级缓存。
<settings>
<!-- 开启二级缓存 -->
<setting name="cacheEnabled" value="true"/>
</settings>
MyBatis的二级缓存是和命名空间绑定的,即二级缓存需要配置在Mapper.xml映射文件或者Mapper接口中。使用<cache>元素
在映射文件中,命名空间就是XML根节点mapper的namespace属性。在Mapper接口中,命名空间就是接口的全限定名称
配置如下:
- 映射语句文件中的所有SELECT语句将会被缓存
- 映射语句文件中的所有INSERT、UPDATE、DELETE语句会刷新缓存
- 缓存会使用LRU(最近最少使用)策略来回收
- 缓存会被视为read/write(可读/可写)的,这意味着对象检索不是共享的,而且可以安全地被调用者修改,而不干扰其他调用者或线程所做的潜在修改
cache元素属性如下:
- flushInterval:刷新间隔。可以被设置为任意的正整数,单位毫秒。默认没有刷新间隔,缓存仅调用语句时刷新
- size:缓存数目。可以被设置为任意正整数。默认值是1024
- readOnly:只读。该属性可以被设置为true或false。只读的缓存会给所有调用者返回缓存对象的相同实例,因此这些对象不能被修改。可读写的缓存会返回缓存对象的拷贝。这种方式会慢一些,但是安全,因此默认是false。
- eviction:回收策略,默认为LRU。有如下几种:
LRU:最近最少使用的策略,移除最长时间不被使用的对象
FIFO: 先进先出策略,按对象进入缓存的顺序来移除它们
SOFT: 软引用策略,移除基于垃圾回收器状态和软引用规则的对象
WEAK。 弱引用策略,更积极地移除基于垃圾收集器状态和弱引用规则的对象
MyBatis的注解配置
1.常用注解
- Select:映射查询的SQL语句
- SelectProvider:select语句的动态SQL映射。允许指定一个类名和 一个方法在执行时返回运行的查询语句
- Insert:映射插入的SQL语句
- InsertProvider:insert语句的动态SQL映射
- Update:映射更新的SQL语句
- UpdateProvider:update语句的动态SQL映射
- Delete:映射删除的SQL语句
- DeleteProvider:delete语句的动态SQL映射
- Result:在列和属性之间的单独结果映射。属性包括:id、 column、property、javaType、jdbcType、type Handler、one、many。id 属性是一个布尔值,表示是否被用于主键映射。one 属性是单独的映射,和XML配置中的 <association>相似,而many属性是对集合而言的,和XML配置的<collection>相似
- Results:多个结果映射(Result)列表
- Option: 提供配置选项的附加值,它们通常在映射语句上作为附加功能配置
- One:复杂类型的单独属性值映射。必须指定select属性,表示已映射的SQL语句的完全限定名
- Many:复杂类型的集合属性映射。必须指定select属性,表示已映射的SQL语句的完全限定名
- Param:当映射器方法需要多个参数时,这个注解可以被应用于映射器方法参数来给每个参数取一个名字。否则,多参数将会以它们的顺序位置和SQL语句中的表达式进行映射,这是默认的。使用 @Param("id")时,SQL中参数应该被命名为#{id}
2.select、insert、update、delete注解
3.One注解
关联映射的对象
被关联的对象
4.Many注解
关联映射对象
被关联的对象
5.存储过程调用
6.二级缓存
相关推荐
- Linux两种光驱自动挂载的方法
-
环境:CentOS6.4西昆云服务器方式一修改fstab文件/etc/fstab是系统保存文件系统信息?静态文件,每一行描述一个文件系统;系统每次启动会读取此文件信息以确定需要挂载哪些文件系统。参...
- linux系统运维,挂载和分区概念太难?在虚机下操作一次全掌握
-
虚拟机的好处就是可以模拟和学习生产环境的一切操作,假如我们还不熟悉磁盘操作,那先在虚机环境下多操作几次。这次来练习下硬盘扩容操作。虚拟机环境:centos8vm11linux设备命名规则在linux中...
- Linux 挂载 NFS 外部存储 (mount 和 /etc/fstab)
-
mount:手工挂载,下次重启需再重新挂载,操作命令:mount-tnfs-ooptionsserver:/remote/export/local/directory上面命令中,本地目录...
- 在Linux中如何设置自动挂载特定文件系统(示例)
-
Linux...
- Linux环境中的绑定挂载(bind mount)
-
简介:Linux中的mount命令是一个特殊的指令,主要用于挂载文件目录。而绑定挂载(bindmount)命令更为特别。mount的bind选项将第一个目录克隆到第二个。一个目录中的改变将会在...
- Linux挂载CIFS共享 临时挂载 1. 首先
-
如何解决服务器存储空间不足的问题?大家好,欢迎回来。在上一期视频中,我为大家介绍了如何利用Linux挂载来扩容服务器存储空间。这一期视频,我将以Linux为例,教大家如何进行扩容。群辉使用的是Linu...
- Linux 硬盘挂载(服务器重启自动挂载)
-
1、先查看目前机器上有几块硬盘,及已挂载磁盘:fdisk-l能够查看到当前主机上已连接上的磁盘,以及已经分割的磁盘分区。(下面以/dev/vdb磁盘进行分区、挂载为例,挂载点设置为/data)df...
- linux 挂载磁盘
-
在Linux中挂载硬盘的步骤如下:...
- 笨小猪教您Linux磁盘挂载
-
本教程针对Linux系统比较熟悉或者想学习Linux基础的用户朋友,本教程操作起来比较傻瓜式,跟着步骤就会操作,本文使用的工具是XShell同时多多注意空格(文中会有提示)。【问答】什么是磁盘挂载?答...
- Linux 磁盘挂载和docker安装命令
-
本篇给大家介绍Linux磁盘挂载和docker安装的相关内容,Linux服务器的操作是一个手熟的过程,一些不常用的命令隔断时间就忘记了,熟话说好记性不如烂笔头,还需在平时的工作中多练习记录。...
- Linux设置开机自动挂载分区
-
有时候,我们在安装完Linux系统之后,可能在使用过程中添加硬盘或者分区进行使用,这时候就需要手动把磁盘分区挂载到某个路径,但是开机之后就会消失,需要重新挂载,非常麻烦,那么我们应该如何设置开机自动挂...
- 在linux挂载一个新硬盘的完整步骤
-
以下是在Linux中挂载新原始磁盘的完整步骤,包括分区、创建文件系统以及使用UUID在/etc/fstab中启动时挂载磁盘:将新的原始磁盘连接到Linux系统并打开电源。运行以下命令,...
- Linux系统如何挂载exFAT分区
-
简介:Linux系统中不能像Windows系统那样自动识别加载新设备,需要手动识别,手动加载。Linux中一切皆文件。文件通过一个很大的文件树来组织,文件树的根目录是:/,从根目开始录逐级展开。这些文...
- Linux系统挂载硬盘
-
fdisk-l查看可挂载的磁盘都有哪些df-h查看已经挂载的磁盘...
- WSL2发布,如何在Win10中挂载Linux文件系统
-
WSL2是最新版本的架构,它为Windows子系统提供支持,使其能够在Windows上运行ELF64Linux二进制文件。通过最近的更新,它允许使用Linux文件系统访问存储在硬盘中的文件。如果你...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- oracle忘记用户名密码 (59)
- oracle11gr2安装教程 (55)
- mybatis调用oracle存储过程 (67)
- oracle spool的用法 (57)
- oracle asm 磁盘管理 (67)
- 前端 设计模式 (64)
- 前端面试vue (56)
- linux格式化 (55)
- linux图形界面 (62)
- linux文件压缩 (75)
- Linux设置权限 (53)
- linux服务器配置 (62)
- mysql安装linux (71)
- linux启动命令 (59)
- 查看linux磁盘 (72)
- linux用户组 (74)
- linux多线程 (70)
- linux设备驱动 (53)
- linux自启动 (59)
- linux网络命令 (55)
- linux传文件 (60)
- linux打包文件 (58)
- linux查看数据库 (61)
- linux获取ip (64)
- 关闭防火墙linux (53)