MyBatis教程看这一篇就够啦,简单又全面(IDEA版)

article/2025/8/20 4:53:56

目录

一、MyBatis简介

1.1 MyBatis介绍

为什么需要Mybatis?

二、MyBatis框架部署

2.1 创建Maven项目

2.2 在项目中添加MyBatis依赖

2.3 创建MyBatis配置文件

三、MyBatis框架使用

3.1 创建数据表

 3.2 创建实体类

 3.3 创建DAO接口,定义操作方法

 3.4 创建DAO接口的映射文件

3.5 将映射文件添加到主配置文件

四、单元测试

4.1 添加单元测依赖

4.2 创建单元测试类

 4.3 测试代码

五、MyBatis的CRUD操作

5.1 添加操作

5.2 删除操作

5.3 修改操作

5.4 查询操作-查询所有

5.5 查询操作-查询一条记录

5.6 查询操作-多参数查询

5.7 查询操作-查询总记录数

5.8 添加操作回填生成的主键

六、MyBatis工具类封装

七、事务管理

7.1 手动提交事务

7.2 自动提交事务

八、MyBatis主配置文件

8.1 properties标签

8.2 settings标签

8.3 typeAliases标签

8.4 plugins标签

8.5 environments标签

8.6 mappers标签

九、映射文件

9.1 MyBatis Mapper初始化

9.2 mapper根标签

9.3 insert标签

9.4 delete标签

9.5 update标签

9.6 select标签

9.7 resultMap标签

9.8 cache标签

9.9 sql和include

十、分页插件

10.1 添加分页插件的依赖

10.2 配置插件

10.3 分页实例


一、MyBatis简介

1.1 MyBatis介绍

MyBatis是一个半自动ORM框架

ORM(Object Relational Mapping)对象关系映射,将Java中的一个对象与数据表中一行记录一一对应。

ORM框架提供了实体类与数据表的映射关系,通过映射文件的配置,实现对象的持久化。

中文文档:mybatis – MyBatis 3 | 简介

Github:GitHub - mybatis/mybatis-3: MyBatis SQL mapper framework for Java

  • MyBatis的前身是iBatis,iBatis是Apache软件基金会提供的一个开源项目

  • 2010年iBatis迁移到Google code,正式更名为MyBatis

  • 2013年迁移到Github托管

  • MyBatis特点:

    • 支持自定义SQL、存储过程

    • 对原有的JDBC进行了封装,几乎消除了所有JDBC代码,让开发者只需关注SQL本身

    • 支持XML和注解配置方式自定完成ORM操作,实现结果映射

持久化-->数据持久化

  • 持久化就是将程序的数据在持久状态瞬时状态转化的过程

  • 内存:断电即失

  • 数据库(Jdbc),io文件持久化

  • 生活方面例子:冷藏,罐头。

为什么需要持久化

  • 不想丢掉一些对象

  • 内存太贵

持久层

Dao层,Service层,Controller层…
  • 完成持久化工作的代码块

  • 层界限十分明显

为什么需要Mybatis?

  • 帮助程序猿将数据存入到数据库中

  • 方便

  • 传统的JDBC代码太复杂,简化–>框架–>自动化

最重要的一点:使用的人多!   Spring-SpringMVC-SpringBoot

二、MyBatis框架部署

框架部署,就是将框架引入到我们的项目中

思路:搭建环境–>导入Mybatis–>编写代码–>测试

2.1 创建Maven项目

  • Java工程

  • Web工程

2.2 在项目中添加MyBatis依赖

  • 在pom.xml中添加依赖

    • mybatis

    • mysql driver

    <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
    <dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.47</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
    <dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.4.6</version>
    </dependency>

2.3 创建MyBatis配置文件

  • 创建自定义模板:选择resources----右键New----Edit File Templates

  • 在resources中创建名为mybatis-config.xml的文件

  • mybatis-config.xml文件配置数据库连接信息

    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd">
    <configuration>   <!-- 在environments配置数据库连接信息 --><!-- 在environments标签中可以定义多个environment标签,每个environment标签可以定义一套连接配置 --><!-- default属性,用来指定使用哪个environment标签 --><environments default="mysql">        <environment id="mysql"><!--transactionManager标签用于配置数据库管理方式--><transactionManager type="JDBC"></transactionManager><!--dataSource标签就是用来配置数据库连接信息 --><dataSource type="POOLED"><property name="driver" value="com.mysql.jdbc.Driver"/><property name="url" value="jdbc:mysql://localhost:3306/mybatis?useSSL=true&amp;useUnicode=true&amp;characterEncoding=utf-8"/><property name="username" value="root"/><property name="password" value="admin123"/></dataSource></environment>        </environments>
    </configuration>

三、MyBatis框架使用

案例:学生信息的数据库操作

3.1 创建数据表

tb_students

 3.2 创建实体类

Student.java (导入lombok依赖)

 3.3 创建DAO接口,定义操作方法

StudentDAO.java

 3.4 创建DAO接口的映射文件

  • resources目录下,新建名为mappers文件夹

  • mappers中新建名为StudentMapper.xml的映射文件(根据模板创建)

  • 在映射文件中对DAO中定义的方法进行实现:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!--mapper文件相当于DAO接口的‘实现类’,namespace属性要指定`实现`DAO接口的全限定名-->
<mapper namespace="com.qfedu.dao.StudentDAO"><insert id="insertStudent">insert into tb_students(stu_num,stu_name,stu_gender,stu_age)values(#{stuNum},#{stuName},#{stuGender},#{stuAge})</insert><delete id="deleteStudent">delete from tb_students where stu_num=#{stuNum}</delete>
</mapper>

3.5 将映射文件添加到主配置文件

mybatis-config.xml

四、单元测试

4.1 添加单元测依赖

<dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version>
</dependency>

4.2 创建单元测试类

在被测试类名后alt+insert --- 选择Test

 4.3 测试代码

package com.qfedu.dao;
import com.qfedu.pojo.Student;
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.IOException;
import java.io.InputStream;
import static org.junit.Assert.*;
public class StudentDAOTest {@org.junit.Testpublic void insertStudent() {try {//加载mybatis配置文件InputStream is = Resources.getResourceAsStream("mybatis-config.xml");SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();//会话工厂SqlSessionFactory factory = builder.build(is);//会话(连接)SqlSession sqlSession = factory.openSession();//通过会话获取DAO对象StudentDAO studentDAO = sqlSession.getMapper(StudentDAO.class);//测试StudentDAO中的方法int i = studentDAO.insertStudent(new Student(0, "10001", "张三", "男", 21));//需要手动提交sqlSession.commit();System.out.println(i);} catch (IOException e) {e.printStackTrace();}}@org.junit.Testpublic void deleteStudent() {}
}

可能遇到的问题:

  1. 配置文件没有注册;

  2. 绑定接口错误;

  3. 方法名不对;

  4. 返回类型不对;

  5. Maven导出资源问题。

     <build><resources><resource><directory>src/main/resources</directory><includes><include>**/*.properties</include><include>**/*.xml</include></includes><filtering>true</filtering></resource><resource><directory>src/main/java</directory><includes><include>**/*.properties</include><include>**/*.xml</include></includes><filtering>true</filtering></resource></resources>
    </build>
    

说明:标准的Maven项目都会有一个resources目录来存放我们所有的资源配置文件,但是我们往往在项目中不仅仅会把所有的资源配置文件都放在resources中,同时我们也有可能放在项目中的其他位置,那么默认的maven项目构建编译时就不会把我们其他目录下的资源配置文件导出到target目录中,就会导致我们的资源配置文件读取失败,从而导致我们的项目报错出现异常,比如说尤其我们在使用MyBatis框架时,往往Mapper.xml配置文件都会放在dao包中和dao接口类放在一起的,那么执行程序的时候,其中的xml配置文件就一定会读取失败,不会生成到maven的target目录中,所以我们要在项目的pom.xml文件中进行设置,并且我建议大家,每新建一个maven项目,就把该设置导入pom.xml文件中,以防不测!!!

五、MyBatis的CRUD操作

案例:学生信息的增删查改

5.1 添加操作

5.2 删除操作

根据学号删除一条学生信息

  • 在StudentDAO中定义删除方法

StudentDAO
  • 在StudentMapper.xml中对接口方法进行“实现”

StudentMapper.xml
  • 测试:在StudentDAO的测试类中添加测试方法

StudentDAOTest

5.3 修改操作

根据学生学号,修改其他字段信息

  • 在StudentDAO接口中定义修改方法

StudentDAO
  • 在StudentMapper.xml中“实现”接口中定义的修改方法

StudentMapper.xml
  • 单元测试

StudentDAOTest

5.4 查询操作-查询所有

  • 在StudentDAO接口定义操作方法

StudentDAO
  • 在StudentMapper.xml中“实现”DAO中定义的方法

StudentMapper.xml
  • 单元测试

StudentDAOTest

5.5 查询操作-查询一条记录

根据学号查询一个学生信息

  • 在StudentDAO接口中定义方法

StudentDAO
  • 在StudentDAOMapper.xml中配置StudentDAO接口的方法实现——SQL

StudentDAOMapper.xml
  • 单元测试

StudentDAOTest

5.6 查询操作-多参数查询

分页查询(参数 start , pageSize)

  • 在StudentDAO中定义操作方法,如果方法有多个参数,使用@Param注解声明参数的别名

StudentDAO
  • 在StudentMapper.xml配置sql时,使用#{别名}获取到指定的参数

StudentMapper.xml

注意 如果DAO操作方法没有通过@Param指定参数别名,在SQL中也可以通过arg0,arg1...或者param1,param2,...获取参数

5.7 查询操作-查询总记录数

  • 在StudentDAO接口中定义操作方法

StudentDAO
  • 在StudentMapper.xml配置sql,通过resultType指定当前操作的返回类型为int

5.8 添加操作回填生成的主键

  • StduentMapper.xml的添加操作标签——insert

<!-- useGeneratedKeys 设置添加操作是否需要回填生成的主键 -->
<!-- keyProperty 设置回填的主键值赋值到参数对象的哪个属性 -->
<insert id="insertStudent" useGeneratedKeys="true" keyProperty="stuId">insert into tb_students(stu_num, stu_name, stu_gender, stu_age)values (#{stuNum}, #{stuName}, #{stuGender}, #{stuAge})
</insert>

​​​​​​

六、MyBatis工具类封装

  • MyBatisUtil

    public class MyBatisUtil {private static SqlSessionFactory factory;private static final ThreadLocal<SqlSession> local = new ThreadLocal<SqlSession>();static{try {InputStream is = Resources.getResourceAsStream("mybatis-config.xml");SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();factory = builder.build(is);} catch (IOException e) {e.printStackTrace();}}public static SqlSessionFactory getFactory(){return factory;}public static SqlSession getSqlSession(){SqlSession sqlSession = local.get();if(sqlSession == null ){sqlSession = factory.openSession();local.set(sqlSession);}return sqlSession;}public static <T extends Object> T getMapper(Class<T> c){SqlSession sqlSession = getSqlSession();return sqlSession.getMapper(c);}
    }

七、事务管理

SqlSession 对象

  • getMapper(DAO.class) : 获取Mapper(DAO接口的实例)

  • 事务管理

7.1 手动提交事务

  • sqlSession.commit();提交事务

  • sqlSession.rollback();事务回滚

测试类中进行事务管理

@Test
public void insertStudent() {SqlSession sqlSession = MyBatisUtil.getSqlSession();//1.当我们获取sqlSession对象时,就默认开启了事务try{//通过会话获取DAO对象StudentDAO studentDAO = sqlSession.getMapper(StudentDAO.class);//测试StudentDAO中的方法Student student = new Student(0, "10005", "Lily", "女", 21);int i = studentDAO.insertStudent(student);//2.操作完成并成功之后,需要手动提交sqlSession.commit();}catch (Exception e){//3.当操作出现异常,调用rollback进行回滚sqlSession.rollback();}
}

业务逻辑层手动事务管理

public class StudentServiceImpl implements StudentService {public boolean addStudent(Student student) {boolean b = false;SqlSession sqlSession = MyBatisUtil.getSqlSession();try{StudentDAO studentDAO = sqlSession.getMapper(StudentDAO.class);int i = studentDAO.insertStudent(student);b = i>0;sqlSession.commit();}catch (Exception e){sqlSession.rollback();}return b;}
}

7.2 自动提交事务

通过SqlSessionFactory调用openSession方法获取SqlSession对象时,可以通过参数设置事务是否自动提交:

  • 如果参数设置为true,表示自定提交事务: factory.openSession(true);

  • 如果参数设置为false,或者不设置参数,表示手动提交:factory.openSession();/factory.openSession(false);

MyBatisUtil优化

public class MyBatisUtil {private static SqlSessionFactory factory;private static final ThreadLocal<SqlSession> local = new ThreadLocal<SqlSession>();static{try {InputStream is = Resources.getResourceAsStream("mybatis-config.xml");SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();factory = builder.build(is);} catch (IOException e) {e.printStackTrace();}}public static SqlSessionFactory getFactory(){return factory;}private static SqlSession getSqlSession(boolean isAutoCommit){SqlSession sqlSession = local.get();if(sqlSession == null ){sqlSession = factory.openSession(isAutoCommit);local.set(sqlSession);}return sqlSession;}//手动事务管理public static SqlSession getSqlSession(){return getSqlSession(false);}//自动事务提交public static <T extends Object>T getMapper(Class<T> c){SqlSession sqlSession = getSqlSession(true);return sqlSession.getMapper(c);}
}

测试操作

@Test
public void testDeleteStudent() {StudentDAO studentDAO = MyBatisUtil.getMapper(StudentDAO.class);int i = studentDAO.deleteStudent("10001");
}

业务逻辑层自动事务管理

public class StudentServiceImpl implements StudentService {private StudentDAO studentDAO = MyBatisUtil.getMapper(StudentDAO.class);public boolean addStudent(Student student) {int i = studentDAO.insertStudent(student);boolean b = i>0;return b;}
}

八、MyBatis主配置文件

mybatis-config.xml 是MyBatis框架的主配置文件,只要用于配置MyBatis数据源及属性信息

8.1 properties标签

用于设置键值对,或者加载属性文件

  • 在resources目录下创建jdbc.properties文件,配置键值对如下:

    mysql_driver=com.mysql.jdbc.Driver
    mysql_url=jdbc:mysql://localhost:3306/db_2010_fmwy?characterEncoding=utf-8
    mysql_username=root
    mysql_password=admin123
  • 在mybatis-config.xml中通过properties标签引用jdbc.properties文件;引入之后,在配置environment时可以直接使用jdbc.properties的key获取对应的value

mybatis-config.xml

8.2 settings标签

<!--设置mybatis的属性-->
<settings><!-- 启动二级缓存--><setting name="cacheEnabled" value="true"/><!-- 启动延迟加载 --><setting name="lazyLoadingEnabled" value="true"/>
</settings>

8.3 typeAliases标签

<!--typeAliases标签用于给实体类取别名,在映射文件中可以直接使用别名来替代实体类的全限定名-->
<typeAliases><typeAlias type="com.qfedu.pojo.Student" alias="Student"></typeAlias><typeAlias type="com.qfedu.pojo.Book" alias="Book"></typeAlias>
</typeAliases>

8.4 plugins标签

<!--plugins标签,用于配置MyBatis插件(分页插件)-->
<plugins><plugin interceptor=""></plugin>
</plugins>

8.5 environments标签

<!-- 在environments配置数据库连接信息 -->
<!-- 在environments标签中可以定义多个environment标签,每个environment标签可以定义一套连接配置 -->
<!-- default属性,用来指定使用哪个environment标签 -->
<environments default="mysql"><!--  environment 标签用于配置数据库连接信息  --><environment id="mysql"><!--transactionManager标签用于配置数据库管理方式type="JDBC"  可以进行事务的提交和回滚操作type="MANAGED" 依赖容器完成事务管理,本身不进行事务的提交和回滚操作 --><transactionManager type="JDBC"></transactionManager><!--dataSource标签就是用来配置数据库连接信息 POOLED|UNPOOLED --><dataSource type="POOLED"><property name="driver" value="${mysql_driver}"/><property name="url" value="${mysql_url}"/><property name="username" value="${mysql_username}"/><property name="password" value="${mysql_password}"/></dataSource></environment>
</environments>

8.6 mappers标签

加载映射配置(映射文件、DAO注解)

<!--mappers标签用于载入映射文件-->
<mappers><mapper resource="mappers/StudentMapper.xml"></mapper>
</mappers>

九、映射文件

9.1 MyBatis Mapper初始化

XML文件解析:读取xml文件中的标签配置封装到Java对象中

9.2 mapper根标签

mapper文件相当于DAO接口的‘实现类’,namespace属性要指定实现DAO接口的全限定名

9.3 insert标签

声明添加操作(sql: insert ...)

常用属性

id属性,绑定对应DAO接口中的方法

parameterType属性,用以指定接口中对应方法的参数类型(可省略)

useGeneratedKeys属性, 设置添加操作是否需要回填生成的主键

keyProperty属性,指定回填的id设置到参数对象中的哪个属性

timeout属性,设置此操作的超时时间,如果不设置则一直等待

主键回填

<insert id="insertStudent" useGeneratedKeys="true" keyProperty="stuId">insert into tb_students(stu_num, stu_name, stu_gender, stu_age)values (#{stuNum}, #{stuName}, #{stuGender}, #{stuAge})
</insert>
<insert id="insertStudent" ><selectKey keyProperty="stuId" resultType="java.lang.Integer">select last_insert_id()</selectKey>insert into tb_students(stu_num, stu_name, stu_gender, stu_age)values (#{stuNum}, #{stuName}, #{stuGender}, #{stuAge})
</insert>

9.4 delete标签

声明删除操作

9.5 update标签

声明修改操作

9.6 select标签

声明查询操作

  • id属性, 指定绑定方法的方法名

  • parameterType属性,设置参数类型

  • resultType属性,指定当前sql返回数据封装的对象类型(实体类)

  • resultMap属性,指定从数据表到实体类的字段和属性的对应关系

  • useCache属性,指定此查询操作是否需要缓存

  • timeout属性,设置超时时间

9.7 resultMap标签

<!-- resultMap标签用于定义实体类与数据表的映射关系(ORM) -->
<resultMap id="studentMap" type="Student"><id column="sid" property="stuId"/><result column="stu_num" property="stuNum"/><result column="stu_name" property="stuName"/><result column="stu_gender" property="stuGender"/><result column="stu_age" property="stuAge"/>
</resultMap>

9.8 cache标签

设置当前DAO进行数据库操作时的缓存属性设置

<cache type="" size="" readOnly="false"/>

9.9 sql和include

SQL片段

<sql id="wanglaoji">sid , stu_num , stu_name , stu_gender , stu_age</sql>
​
<select id="listStudents" resultMap="studentMap">select <include refid="wanglaoji"/> from tb_students
</select>

十、分页插件

分页插件是一个独立于MyBatis框架之外的第三方插件;

10.1 添加分页插件的依赖

PageHelper

 <!-- pagehelper分页插件 -->
<dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper</artifactId><version>5.1.10</version>
</dependency>

10.2 配置插件

在mybatis的主配置文件mybatis-config.xml中通过plugins标签进行配置

<!--plugins标签,用于配置MyBatis插件(分页插件)-->
<plugins><plugin interceptor="com.github.pagehelper.PageInterceptor"></plugin>
</plugins>

10.3 分页实例

对学生信息进行分页查询

@Test
public void testListStudentsByPage() {StudentDAO studentDAO = MyBatisUtil.getMapper(StudentDAO.class); //sqlSessionPageHelper.startPage(2,4);List<Student> students = studentDAO.listStudents();PageInfo<Student> pageInfo = new PageInfo<Student>(students);//pageInfo中就包含了数据及分页信息
}

带条件分页

@Test
public void testListStudentsByPage() {StudentDAO studentDAO = MyBatisUtil.getMapper(StudentDAO.class); //sqlSessionPageHelper.startPage(2,4);//List<Student> students = studentDAO.listStudents();List<Student> list = studentDAO.listStudentsByGender("女");PageInfo<Student> pageInfo = new PageInfo<Student>(list);//pageInfo中就包含了数据及分页信息
}


http://chatgpt.dhexx.cn/article/60u5B6RS.shtml

相关文章

MyBatis学习--完整教程

文章目录 MyBatis1、简介1.1 什么是Mybatis1.2 持久化1.3 持久层1.4 为什么需要MyBatis 2、第一个Mybatis程序2.1 搭建环境2.2 创建一个模块2.3 编写代码 3、CURD1. namespace2. select3. Insert4. update5. Delete6. 万能Map7. 模糊查询 4、配置解析1. 核心配置文件2. 环境配置…

mybatis详细教程

文章目录 [toc]1. 概述1.1 什么是Mybatis?1.2 Mybatis 操作数据库的方式1.3 Mybatis 操作数据库的七大步骤?1.4 Mybatis 的开发优点 2. Mybatis 操作数据库具体实现2.1 创建一个数据库表2.2 创建一个maven项目,配置pom.xml文件,导入相关依赖2.3 创建mybatis 核心配置文件2.4 …

MyBatis教程(看这一篇就够了)

一.全面了解Mybatis 环境变量 jdk 8 MySQL 8.0.27maven-3.6.1IDEA 2021.2.2 学习前需要掌握&#xff1a; JDBCMySQLJava基础MavenJunit&#xff08;单元测试&#xff09; 什么是MyBatis Myba是一款优秀的持久层框架MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及…

fsck命令使用

由于错误操作Linux导致系统无法正常开机&#xff0c;系统提示需要checking filesystems。如下图所示&#xff1a; 根据图中提示&#xff0c;先输入root用户密码进入root用户&#xff0c;然后在root用户中执行命令&#xff1a; fsck -f -y /dev/sda2 命令解释&#xff1a; fsc…

linux基本功之fsck命令详解

&#x1f493; 大家好&#xff0c;我是沐风晓月&#xff0c;双一流院校英语计算机双专业在读&#xff1b; &#x1f493; 想要学好Linux&#xff0c;命令是基本功&#xff0c;企业中常用的命令大约200多个&#xff0c;不管是写shell脚本还是管理操作系统&#xff0c;最常用的命…

fsck命令详解

fsck命令来自于英文词组“filesystem check”的缩写&#xff0c;其功能是用于检查与修复文件系统。若系统有过突然断电或磁盘异常的情况&#xff0c;建议使用fsck命令对文件系统进行检查与修复&#xff0c;以防数据丢失。 语法格式&#xff1a;fsck [参数] 文件系统 常用参…

hdfs fsck

转载来自&#xff1a;https://blog.csdn.net/zlfing/article/details/78070951 1.常用指令&#xff1a;打印文件块的位置信息 hdfs fsck /user/hadoop/wkz -files -blocks -locations生产实例&#xff1a;hdfs fsck *文件路径* -list-corruptfileblocks 线上环境降副本后&a…

Linux fsck 机制解析

Linux fsck 机制 0. 概述1. Upstart 方式 (ubuntu 14.04 32bit)1.1 配置fsck启动1.2 配置fsck运行参数1.3 mountall.config1.4 mountall1.5 fsck 2. Systemd 方式 (ubuntu 16.04 64bit)2.1 普通分区的fsck2.2 Root分区的fsck2.3 ext文件系统的限制2.4 强制fsck完整扫描2.5 fsck…

fsck异常

ubuntu 18 开机显示错误。&#xff08;完了&#xff0c;我的数据啊&#xff09; 莫慌&#xff01;&#xff01;&#xff01; 仔细看下报错。 原因大概是上次系统异常断电关机等非正常关机导致 磁盘损坏。 解决方法 fsck -y /dev/sdb6 sdb6为损坏的目标磁盘 修复完 重启就可以了…

Linux磁盘修复命令----fsck

linux下文件信息出现乱码&#xff0c;无法启动服务&#xff0c;也无法删除&#xff0c;改权限等等&#xff0c;那证明你的磁盘已损坏&#xff0c;需要修复&#xff0c;期间不会丢失数据&#xff0c;请放心操作 使用fsck命令修复磁盘时 一定要进入单用户模式去修复 语 法 fsck.…

fsck-磁盘修复工具

1、简介 fsck&#xff08;file system check&#xff09;用来检查和维护不一致的文件系统。若系统掉电或磁盘发生问题&#xff0c;可利用fsck命令对文件系统进行检查。 2、参数介绍 -a&#xff1a;自动修复文件系统&#xff0c;不询问任何问题&#xff1b;-A&#xff1a;依照/e…

linux命令中fsck命令 – 检查并修复Linux文件系统

fsck命令的英文全称是“filesystem check”&#xff0c;即检查文件系统的意思&#xff0c;常用于检查并修复Linux文件系统的一些错误信息&#xff0c;操作文件系统需要先备份重要数据&#xff0c;以防丢失。 Linux fsck命令用于检查并修复Linux文件系统&#xff0c;可以同时检…

压缩感知超分辨技术

1.技术原理 利用被测物体在时间、空间以及深度&#xff08;或在相应的变换域&#xff09;内的稀疏性&#xff0c;对信号进行少量的编码测量&#xff0c;而后利用重建算法还原原始信号。 实质&#xff1a;有限系统带宽下提升信息量 1.空间编码—超空间分辨率 优势&#xff1a…

压缩感知介绍

Nyquist采样定理&#xff08;香农采样定理&#xff09;指出&#xff0c;采样速率达到信号带宽的两倍以上时&#xff0c;才能由采样信号精确重建原始信号。可见&#xff0c;带宽是Nyquist采样定理对采样的本质要求。然而随着人们对信息需求量的增加&#xff0c;携带信息的信号带…

压缩感知笔记

压缩感知笔记 CS理论认为&#xff0c;我们可以从比奈奎斯特采样所需的更少的样本中恢复某些信号。如果信号在原始域或变换域中是稀疏的&#xff08;完全恢复&#xff09;或可压缩的&#xff08;近似恢复&#xff09;&#xff0c;我们可以用比奈奎斯特采样所需的更少的采样样本…

压缩感知高斯测量矩阵matlab,压缩感知的常见测量矩阵

题目:压缩感知的常见测量矩阵 下面首先给出十篇参考文献中有关测量矩阵的叙述,然后以一篇硕士论文中对七种常见测量矩阵的描述依据,给出了这七种常见测量矩阵的MATLAB实现代码,以为以后的研究提供一个参考,由于目前还没有一个简单有效的测量矩阵评价方法,因此这里给出的七…

压缩感知算法_CEALeti研发出基于压缩感知的CMOS图像传感器

据麦姆斯咨询报道&#xff0c;法国原子能委员会电子与信息技术实验室(CEA-Leti)近日发表了Wissam Benjilali的博士论文&#xff0c;题为“Exploring analog-to-information CMOS image sensor design taking advantage on recent advances of compressive sensing for low-powe…

压缩感知算法_【封面论文】基于压缩感知算法的无透镜数字全息成像研究

本文为中国激光第1780篇。 欢迎点击在看、转发,让更多人看到。 封面文章 |张华,曹良才,金国藩,白瑞迪. 基于压缩感知算法的无透镜数字全息成像研究[J]. 激光与光电子学进展, 2020, 57(8): 080001 撰稿| 曹良才 导读 来自清华大学和杜克大学的研究人员针对无透镜数字全息成像重…

压缩感知入门①从零开始压缩感知

压缩感知系列博客&#xff1a;压缩感知入门①从零开始压缩感知压缩感知入门②信号的稀疏表示和约束等距性压缩感知入门③基于ADMM的全变分正则化的压缩感知重构算法压缩感知入门④基于总体最小二乘的扰动压缩感知重构算法 文章目录 1. Problem Formulation2. Simulation3. Algo…