初探MyBatis实现简单查询

文章目录

      • 一、创建数据库与表
        • 1、创建数据库
        • 2、创建用户表
        • 3、添加表记录
      • 二、基于配置文件方式使用MyBatis
        • 1、创建Maven项目
      • 2、添加相关依赖
      • 3、创建用户实体类
        • 4、创建用户映射器配置文件
        • 5、创建MyBatis配置文件
        • 6、创建日志属性文件
        • 7、测试用户操作
          • 1)创建用户操作测试类
          • 2)测试按编号查询用户记录
          • 3)测试查询全部用户记录
      • 三、采用接口方式使用MyBatis
        • 1、创建用户映射器接口
        • 2、测试用户映射器接口
          • 1)创建用户映射器接口测试类
          • 2)测试按编号查询用户记录
          • 3)测试查询全部用户记录
      • 四、利用配置类与注解方式使用MyBatis
        • 1、创建MyBatis配置类
      • 2、创建新的用户映射器接口测试类
        • 3、修改用户映射器接口
        • 4、运行新的用户映射器接口测试类

一、创建数据库与表

1、创建数据库

  • 在Navicat里创建MySQL数据库 - testdb,采用utf8mb4字符集
    在这里插入图片描述

2、创建用户表

  • 用户表 - t_user
CREATE TABLE `t_user` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(50) DEFAULT NULL,
  `age` int(11) DEFAULT NULL,
  `address` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4;

3、添加表记录

INSERT INTO `t_user` VALUES ('1', '李洪刚', '20', '江阳区嘉裕花园3栋四楼15#');
INSERT INTO `t_user` VALUES ('2', '王云华', '30', '纳溪区大渡镇红鱼村三大队');
INSERT INTO `t_user` VALUES ('3', '郑小翠', '21', '江阳区老窖花园2栋五楼15号');

在这里插入图片描述

二、基于配置文件方式使用MyBatis

1、创建Maven项目

在这里插入图片描述

2、添加相关依赖

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
         http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>net.hw.mybatis</groupId>
    <artifactId>MyBatisDemo</artifactId>
    <version>1.0-SNAPSHOT</version>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>8</source>
                    <target>8</target>
                </configuration>
            </plugin>
        </plugins>
    </build>

    <dependencies>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.13</version>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.49</version>
        </dependency>

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

        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>
    </dependencies>

</project>

3、创建用户实体类

在这里插入图片描述

package net.xxr.mybatis.bean;

/**
 * 功能:用户实体类
 */
public class User {
    private int id;
    private String name;
    private int age;
    private String address;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", age=" + age +
                ", address='" + address + '\'' +
                '}';
    }
}


4、创建用户映射器配置文件

  • resources目录里创建mapper子目录,然后在里面创建用户映射器配置文件 - UserMapper.xml
    在这里插入图片描述
<?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="net.xxr.mybatis.mapper.UserMapper">
    <resultMap id="userMap" type="User">
        <result column="id" jdbcType="INTEGER" property="id" javaType="int"/>
        <result column="name" jdbcType="VARCHAR" property="name" javaType="String"/>
        <result column="age" jdbcType="INTEGER" property="age" javaType="int"/>
        <result column="address" jdbcType="VARCHAR" property="address" javaType="String"/>
    </resultMap>
    <!--按编号查询用户记录-->
    <select id="findById" parameterType="int" resultType="User">
        SELECT * FROM t_user WHERE id = #{id};
    </select>

    <!--查询全部用户记录-->
    <select id="findAll" resultMap="userMap">
        SELECT * FROM t_user;
    </select>

</mapper>

5、创建MyBatis配置文件

  • resources目录里创建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>
    <!--配置实体类别名-->
    <typeAliases>
        <typeAlias type="net.xxr.mybatis.bean.User" alias="User"/>
    </typeAliases>

    <!--配置数据库环境-->
    <environments default="development">
        <environment id="development">
            <!--配置事务管理器-->
            <transactionManager type="JDBC"/>
            <!--配置数据源-->
            <dataSource type="POOLED"> <!--数据库连接池-->
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/testdb?useSSL=false"/>
                <property name="username" value="root"/>
                <property name="password" value="root"/>
            </dataSource>
        </environment>
    </environments>

    <!--配置实体关系映射器文件-->
    <mappers>
        <mapper resource="mapper/UserMapper.xml"/>
    </mappers>
</configuration>

6、创建日志属性文件

  • resources目录里创建log4j.properties文件
log4j.rootLogger=WARN, stdout, logfile
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n
log4j.appender.logfile=org.apache.log4j.FileAppender
log4j.appender.logfile.File=target/mybatis.log
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern=%d %p [%c] - %m%n

7、测试用户操作

1)创建用户操作测试类
  • test/java目录里创建net.xxr.mybatis.bean包,然后在包里创建测试类 - TestUserOperation
    在这里插入图片描述
package net.xxr.mybatis.bean;


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 org.junit.After;
import org.junit.Before;
import org.junit.Test;

import java.io.IOException;
import java.io.Reader;
import java.util.List;

/**
 * 功能:测试用户操作
 */
public class TestUserOperation {

    private SqlSession sqlSession; // SQL会话

    @Before
    public void init() {
        try {
            // 读取MyBatis配置文件
            Reader reader = Resources.getResourceAsReader("mybatis-config.xml");
            // 基于MyBatis配置文件构建SQL会话工厂
            SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(reader);
            // 利用SQL会话工厂获取SQL会话
            sqlSession = factory.openSession();
            // 提示用户SQL会话创建成功
            System.out.println("SQL会话已创建。");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    @Test
    public void testFindById() {
        int id = 10;
        User user = sqlSession.selectOne("net.xxr.mybatis.mapper.UserMapper.findById", id);
        if (user != null) {
            System.out.println(user);
        } else {
            System.out.println("编号为[" + id + "]的用户未找到。");
        }
    }

    @Test
    public void testFindAll() {
        List<User> users = sqlSession.selectList("net.xxr.mybatis.mapper.UserMapper.findAll");
        users.forEach(user -> System.out.println(user));
    }

    @After
    public void destroy() {
        // 关闭SQL会话
        sqlSession.close();
        // 提示用户SQL会话对象关闭
        System.out.println("SQL会话已关闭。");
    }
}


2)测试按编号查询用户记录
  • 运行测试方法 - testFindById(),查看结果
    在这里插入图片描述
    在这里插入图片描述
3)测试查询全部用户记录
  • 运行测试方法 - testFindAll(),查看结果
    在这里插入图片描述

三、采用接口方式使用MyBatis

1、创建用户映射器接口

  • 创建net.xxr.mybatis.mapper包,然后在包里创建用户映射器接口 - UserMapper
package net.xxr.mybatis.mapper;

import net.xxr.mybatis.bean.User;
import org.apache.ibatis.annotations.Select;

import java.util.List;

public interface UserMapper {
    //@Select("SELECT * FROM t_user WHERE id = #{id}")
    User findById(int id); //按编号查询用户记录
    //@Select("SELECT * FROM t_user")
    List<User> findAll(); //查询全部用户记录
}

2、测试用户映射器接口

1)创建用户映射器接口测试类
  • test/java里创建net.xxr.mybatis.mapper包,然后在包里创建测试类 - TestUserMapper
package net.xxr.mybatis.mapper;

import net.xxr.mybatis.bean.User;
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 org.junit.After;
import org.junit.Before;
import org.junit.Test;

import java.io.IOException;
import java.io.Reader;
import java.util.List;

/**
 * 功能:测试用户映射器接口
 */
public class TestUserMapper {

    private SqlSession sqlSession; // SQL会话
    private UserMapper userMapper; // 用户映射器

    @Before
    public void init() {
        try {
            // 读取MyBatis配置文件作为字符输入流
            Reader reader = Resources.getResourceAsReader("mybatis-config.xml");
            // 基于MyBatis配置文件构建SQL会话工厂
            SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(reader);
            // 利用SQL会话工厂获取SQL会话
            sqlSession = factory.openSession();
            // 利用SQL会话获取用户映射器对象
            userMapper = sqlSession.getMapper(UserMapper.class);
            // 提示用户SQL会话对象创建成功
            System.out.println("sql会话已创建。");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    @Test
    public void testFindById() {
        int id = 1;
        //调用用户映射器的查询方法
        User user = userMapper.findById(id);
        //判断查询是否成功
        if (user != null) {
            System.out.println(user);
        } else {
            System.out.println("编号为[" + id + "]的用户未找到。");
        }
    }

    @Test
    public void testFindAll() {
        List<User> users = userMapper.findAll();
        users.forEach(user -> System.out.println(user));
    }

    @After
    public void destroy() {
        // 关闭SQL会话
        sqlSession.close();
        // 提示用户SQL会话对象关闭
        System.out.println("sql会话已关闭。");
    }
}


2)测试按编号查询用户记录
  • 运行测试方法 - testFindById()
    在这里插入图片描述
3)测试查询全部用户记录
  • 运行测试方法 - testFindAll()
    在这里插入图片描述

四、利用配置类与注解方式使用MyBatis

1、创建MyBatis配置类

  • net.xxr.mybatis包里创建config子包,然后在子包里创建MyBatisConfig类
    在这里插入图片描述
package net.xxr.mybatis.config;

import org.apache.ibatis.datasource.pooled.PooledDataSource;
import org.apache.ibatis.mapping.Environment;
import org.apache.ibatis.session.Configuration;
import org.apache.ibatis.transaction.TransactionFactory;
import org.apache.ibatis.transaction.jdbc.JdbcTransactionFactory;

import javax.sql.DataSource;

public class MyBatisConfig {
    //获取MyBatis配置对象的方法
    public static Configuration getConfiguration(){
        // 创建配置对象
        Configuration configuration = null;
        //创建JDBC事务管理器
        TransactionFactory transactionFactory = new JdbcTransactionFactory();
        //创建数据源
        DataSource dataSource = new PooledDataSource(
                "com.mysql.jdbc.Driver",
                "jdbc:mysql://localhost:3306/testdb?useSSL=false",
                "root",
                "root"

        );
        //创建数据库环境
        Environment environment = new Environment("development", transactionFactory, dataSource);
        //基于数据库环境创建配置对象
        configuration = new Configuration(environment);
        // 返回配置对象
        return configuration;
    }

}

2、创建新的用户映射器接口测试类

  • test/javanet.xxr.mybatis.mapper包里创建TestUserMapperNew
    在这里插入图片描述
package net.xxr.mybatis.mapper;

import net.xxr.mybatis.bean.User;
import net.xxr.mybatis.config.MyBatisConfig;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.Configuration;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;

import java.io.IOException;
import java.io.Reader;
import java.util.List;

/**
 * 功能:测试用户映射器接口
 */
public class TestUserMapperNew {

    private SqlSession sqlSession; // SQL会话
    private UserMapper userMapper; // 用户映射器

    @Before
    public void init() {
        // 获取MyBatis对象
        Configuration configuration = MyBatisConfig.getConfiguration();
        //添加用户映射接口
        configuration.addMapper(UserMapper.class);
        //基于配置对象构建SQL工厂
        SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(configuration);
        //利用SQL会话工厂获取SQL会话
        sqlSession = factory.openSession();
        //利用SQL会话获取用户映射对象
        userMapper = sqlSession.getMapper(UserMapper.class);
        // 提示用户SQL会话对象创建成功
        System.out.println("sql会话已创建。");
    }

    @Test
    public void testFindById() {
        int id = 1;
        //调用用户映射器的查询方法
        User user = userMapper.findById(id);
        //判断查询是否成功
        if (user != null) {
            System.out.println(user);
        } else {
            System.out.println("编号为[" + id + "]的用户未找到。");
        }
    }

    @Test
    public void testFindAll() {
        List<User> users = userMapper.findAll();
        users.forEach(user -> System.out.println(user));
    }

    @After
    public void destroy() {
        // 关闭SQL会话
        sqlSession.close();
        // 提示用户SQL会话对象关闭
        System.out.println("sql会话已关闭。");
    }
}



3、修改用户映射器接口

  • 用户映射器接口 - UserMapper
package net.xxr.mybatis.mapper;

import net.xxr.mybatis.bean.User;
import org.apache.ibatis.annotations.Select;

import java.util.List;

public interface UserMapper {
    @Select("SELECT * FROM t_user WHERE id = #{id}")
    User findById(int id); //按编号查询用户记录
    @Select("SELECT * FROM t_user")
    List<User> findAll(); //查询全部用户记录
}

4、运行新的用户映射器接口测试类

  • 运行测试方法testFindById(),查看结果
    在这里插入图片描述
  • 运行测试方法testFindAll(),查看结果
    在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

除了Jira、禅道还有哪些更好的敏捷开发过程管理平台?

无论是从国内的敏捷调研开发调研报告还是从国外的敏捷状态调查&#xff0c;工具支持一直是决定敏捷成功的关键因素之一&#xff0c;它们可以帮助团队提高软件开发的效率、质量、协作和满意度。选择合适的敏捷开发管理工具&#xff0c;并正确地使用它们&#xff0c;是每个敏捷团…

数字孪生(1)

目前接触的客户群体是做大屏展示&#xff0c;闲鱼上5元包邮的那种科技感前端&#xff08;不好意思我买了&#xff09;各路模型大整合 实景GISiOT&#xff0c;如果再来点动画就好&#xff0c;然满屏动起来&#xff0c;火灾烧起来&#xff0c;水面荡漾起来&#xff0c;工程车开起…

C/C++每日一练(20230414)

目录 1. 寻找峰值 &#x1f31f;&#x1f31f; 2. 相同的树 &#x1f31f; 3. 整数反转 ※ &#x1f31f; 每日一练刷题专栏 &#x1f31f; Golang每日一练 专栏 Python每日一练 专栏 C/C每日一练 专栏 Java每日一练 专栏 1. 寻找峰值 峰值元素是指其值严格大于左右…

如何借助ChatGPT,自动批量产出短视频爆款文案

如何借助chatgpt批量出爆款文案。 这里我们首先得认识并了解到爆款文案的逻辑。 共通性是打动人&#xff0c;去原创的话&#xff0c;文案能否火&#xff0c;纯靠天吃饭。 所以我们让chatgpt去自己写原创短视频文案&#xff0c;那么chatgpt大概率自由发挥&#xff0c;我们也不…

国产化ChatGPT来袭,景联文科技提供专业数据采集标注服务,人手一个专属ChatGPT或成为可能

ChatGPT作为一个颠覆性的创新&#xff0c;现已成为火爆全球的智能应用。 自ChatGPT爆火以来&#xff0c;国内科技圈开始频频发力&#xff0c;多家科技和互联网公司纷纷表示将开发出中国本土化的ChatGPT。 以百度为例&#xff0c;3月16日&#xff0c;百度推出新一代知识增强大语…

【Linux】页表的深入分析

上一篇文章介绍了线程的基本概念 而本篇文章我们来深入理解一下, CPU再调度我们以往理解的进程和如今的线程都会涉及到的一个内容: 页表 文章目录深入理解页表 *页表的实际组成*什么是page&#xff1f;深入理解页表 * 在介绍进程时, 博主没有深入介绍过页表. 只是简单说了 页…

展心展力 metaapp:基于 DeepRec 的稀疏模型训练实践

作者 metaapp-推荐广告研发部&#xff1a;臧若舟&#xff0c;朱越&#xff0c;司灵通 1 背景 推荐场景大模型在国内的使用很早&#xff0c;早在 10 年前甚至更早&#xff0c;百度已经用上了自研的大规模分布式的 parameter server 系统结合上游自研的 worker 来实现 TB 级别…

“三箭齐发”,诸葛智能三大产品全新升级,助力企业迈向数字化经营 | 爱分析调研

调研&#xff1a;文鸿伟 撰写&#xff1a;文鸿伟 诸葛智能&#xff0c;是容联云旗下敏捷开放的场景化数据智能服务商&#xff0c;累积服务全国1000企业&#xff0c;覆盖泛互联网、泛电商、金融、汽车、产业科技、企服等数十个垂直领域。 自2015年成立至今&#xff0c;诸葛智…

数据库管理-第六十五期 Oracle 23c新特性(20230411)

数据库管理 2023-04-11第六十五期 Oracle 23c新特性1 免费版23c目录结构2 新特性总结第六十五期 Oracle 23c新特性 上一期装了免费版23c&#xff0c;这一期根据安装的数据库&#xff0c;对Oracle 23c的部分新特性进行实验展示。 1 免费版23c目录结构 通过RPM包安装的免费版2…

背包问题-动态规划

背包问题 容量有限的背包&#xff0c;给很多商品&#xff0c;商品有相应的体积与价值 01背包问题 一个背包 每个物品只有一个 最终状态方程 dp[i][j]max(dp[i-1][j],dp[i-1][j-w[i]]v[i]) 推导过程 由上一层推导过来 选择拿不拿i 最终代码 #include<iostream> #…

前段时间面了10多个人,发现这些测试人都有个通病......

前段时间面了15个人&#xff0c;怎么说呢&#xff0c;基本上没有符合要求的&#xff0c;其实一开始瞄准的就是中级的水准&#xff0c;也没指望来大牛&#xff0c;提供的薪资在10-20k&#xff0c;面试的人很多&#xff0c;但平均水平很让人失望。 看简历很多都是3年工作经验&am…

GitHub标星15w,如何用Python实现所有算法?

学会了 Python 基础知识&#xff0c;想进阶一下&#xff0c;那就来点算法吧&#xff01;毕竟编程语言只是工具&#xff0c;结构算法才是灵魂。 新手如何入门 Python 算法&#xff1f; 几位印度小哥在 GitHub 上建了一个各种 Python 算法的新手入门大全。从原理到代码&#xf…

数据 数据元素 数据项 数据对象

文章目录数据、数据元素、数据项和数据对象数据数据元素数据对象数据元素和数据对象数据结构数据结构包括以下三个方面的内容逻辑结构物理结构&#xff08;存储结构&#xff09;逻辑结构与存储结构的关系逻辑结构的种类集合结构线性结构树型结构图状结构或网状结构四种基本的存…

webgl-根据鼠标点击而移动

html <!DOCTYPE html> <head> <style> *{ margin: 0px; padding: 0px; } </style> </head> <body> <canvas id webgl> 您的浏览器不支持HTML5,请更换浏览器 </canvas> <script src"./main.js"></script&g…

【NAS群晖drive异地访问】远程连接drive挂载电脑硬盘「内网穿透」

文章目录前言1.群晖Synology Drive套件的安装1.1 安装Synology Drive套件1.2 设置Synology Drive套件1.3 局域网内电脑测试和使用2.使用cpolar远程访问内网Synology Drive2.1 Cpolar云端设置2.2 Cpolar本地设置2.3 测试和使用3. 结语转发自CSDN远程穿透的文章&#xff1a;【群晖…

[C语言]string.h常用字符串库函数详解+模拟实现

目录 字符串函数 strlen strcpy strcat strcmp strstr 内存函数 memcpy memmove 人生百态&#xff0c;苦事之多。烦恼穿心&#xff0c;何来解脱&#xff1f;打开博客&#xff0c;吸取干货。 以码消愁&#xff0c;以串解忧。泱泱年轮&#xff0c;唯有生活。一起撸串&a…

〖Python网络爬虫实战⑩〗- 正则表达式实战(一)

订阅&#xff1a;新手可以订阅我的其他专栏。免费阶段订阅量1000python项目实战 Python编程基础教程系列&#xff08;零基础小白搬砖逆袭) 说明&#xff1a;本专栏持续更新中&#xff0c;目前专栏免费订阅&#xff0c;在转为付费专栏前订阅本专栏的&#xff0c;可以免费订阅付费…

2023 年男生还推荐报计算机专业吗?

计算机专业确实是一个非常热门的专业&#xff0c;就业前景也很广阔。 但是&#xff0c;近些年随着各个大学对计算机专业及其相关专业疯狂扩招&#xff0c;而且每年的毕业人口都在增多&#xff0c;行业是根本容纳不下的&#xff0c;就业竞争力度也急剧上升。因此&#xff0c;选…

Mac平台上有哪些好用的常用软件?

我大概分几类给你介绍一下吧。 一、办公类 1.微软的office系列&#xff0c;在mac平台也有office的全家桶&#xff0c;习惯用微软office的也可以安装。 2.wps office&#xff0c;wps可以说是国产最好用的office软件&#xff0c;最重要的是wps可以跨平台&#xff0c;并且云文档…

IT审计黄金标准“CISA”备考经验分享-529分成功上岸

激动的心&#xff0c;先晒下成绩单 考证建议以及职业规划 对于IT人士来说证书是一个非常有效的敲门砖&#xff0c;尤其是想跨到新的领域&#xff0c;一个证书往往能给自己在面试官留下一个深刻的印象&#xff0c;尤其是一些在专业领域含金量很高的证书。作为一个14年的IT人士&…