Java企业级开发学习笔记(2.1)MyBatis实现简单查询

news2024/11/24 3:11:53

该文章主要为完成实训任务,详细实现过程及结果见【http://t.csdn.cn/zi0wB】

文章目录

  • 零、创建数据库与表
  • 一、基于配置文件方式使用MyBatis基本使用
    • 1.1 创建Maven项目 - MyBatisDemo
    • 1.2 在pom文件里添加相应的依赖
    • 1.3 创建与用户表对应的用户实体类 - User
    • 1.4 创建用户映射配置器文件
    • 1.5 创建MyBatis配置文件
    • 1.6 创建日志属性文件
    • 1.7 创建测试类测试用户操作
      • 1.7.1 创建测试类 - TestUserOperation
      • 1.7.2 运行测试方法 - testFindById()
      • 1.7.3 运行测试方法 - testFindAll()
  • 二、采用接口方式使用MyBatis
    • 2.1 创建用户映射器接口
    • 2.2 测试用户映射器接口
      • 2.2.1 创建用户映射器接口测试类
      • 2.2.2 测试按编号查询用户记录
      • 2.2.3 测试查询全部用户记录
  • 三、利用配置类与注解方式使用MyBatis
    • 3.1 创建MyBatis配置类
    • 3.2 创建新的用户映射器接口测试类
    • 3.3 修改用户映射器接口
    • 3.4 运行新的用户映射器接口测试类


零、创建数据库与表

  • 在Navicat里创建MySQL数据库testdb
    在这里插入图片描述
  • 创建用户表 - 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=utf8;
  • 执行SQL语句来创建用户表
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.1 创建Maven项目 - MyBatisDemo

在这里插入图片描述

1.2 在pom文件里添加相应的依赖

在这里插入图片描述

    <dependencies>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.6</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>

  • 查看下载到本地的jar包
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

1.3 创建与用户表对应的用户实体类 - User

在这里插入图片描述
在这里插入图片描述

package cn.kox.mybatis.bean;

/**
 * @ClassName: User
 * @Author: Kox
 * @Data: 2023/3/29
 * @Sketch:
 */
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 + '\'' +
                '}';
    }
}

1.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="cn.kox.mybatis.mapper.UserMapper">
    <!--按编号查询用户记录-->
    <select id="findById" parameterType="int" resultType="User">
        SELECT * FROM t_user WHERE id = #{id};
    </select>

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

1.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="cn.kox.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="qwer1234"/>
            </dataSource>
        </environment>
    </environments>

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

1.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

1.7 创建测试类测试用户操作

1.7.1 创建测试类 - TestUserOperation

  • 在test/java目录里创建cn.kox.mybatis.bean包,然后在包里创建测试类 - TestUserOperation
    在这里插入图片描述
package cn.kox.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;

/**
 * @ClassName: TestUserOperation
 * @Author: Kox
 * @Data: 2023/3/29
 * @Sketch: 测试用户操作
 */
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 = 1;
        // 利用SQL会话执行SQL语句进行查询,返回查询结果
        User user = sqlSession.selectOne("cn.kox.mybatis.mapper.UserMapper.findById", id);
        // 判断查询是否成功
        if (user != null) {
            System.out.println(user);
        } else {
            System.out.println("编号为[" + id + "]的用户未找到😥");
        }
    }

    @Test   // 测试查询全部用户记录
    public void testFindAll() {
        // 利用SQL会话执行SQL语句进行查询,返回查询结果
        List<User> users = sqlSession.selectList("cn.kox.mybatis.mapper.UserMapper.findAll");
        // 输出全部用户信息
        users.forEach(System.out::println);
    }

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

1.7.2 运行测试方法 - testFindById()

在这里插入图片描述

1.7.3 运行测试方法 - testFindAll()

在这里插入图片描述

二、采用接口方式使用MyBatis

2.1 创建用户映射器接口

  • 创建cn.kox.mybatis.mapper包,然后在包里创建用户映射器接口 - UserMapper
    在这里插入图片描述
package cn.kox.mybatis.mapper;

import cn.kox.mybatis.bean.User;

import java.util.List;

public interface UserMapper {
    User findById(int id);  // 按编号查询用户记录
    List<User> findAll();   // 查询全部用户记录
}
  • 注意:UserMapper接口的完整路路径(包名+接口名)必须是<mapper>元素的namespace属性值

2.2 测试用户映射器接口

2.2.1 创建用户映射器接口测试类

  • test/java里创建cn.kox.mybatis.mapper包,然后在包里创建测试类 - TestUserMapper
    在这里插入图片描述
package cn.kox.mybatis.mapper;

import cn.kox.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;

/**
 * @ClassName: TestUserMapper
 * @Author: Kox
 * @Data: 2023/4/12
 * @Sketch:
 */
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();
        // 输出全部用户信息(采用了列表的遍历算子与Lambda表达式)
        users.forEach(user -> System.out.println(user));
    }

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

2.2.2 测试按编号查询用户记录

  • 运行测试方法 - testFindById()
    在这里插入图片描述

2.2.3 测试查询全部用户记录

在这里插入图片描述

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

3.1 创建MyBatis配置类

  • cn.kox.mybatis包里创建config子包,然后在子包里创建MyBatisConfig
    在这里插入图片描述
package cn.kox.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;

/**
 * @ClassName: MyBatisConfig
 * @Author: Kox
 * @Data: 2023/4/12
 * @Sketch:
 */
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",
                "qwer1234"
        );
        // 创建数据库环境
        Environment environment = new Environment("development", transactionFactory, dataSource);
        // 基于数据库环境创建配置对象
        configuration = new Configuration(environment);
        // 返回配置对象
        return  configuration;
    }
}

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

  • test/javacn.kox.mybatis.mapper包里创建TestUserMapperNew
    在这里插入图片描述
package cn.kox.mybatis.mapper;

import cn.kox.mybatis.bean.User;
import cn.kox.mybatis.config.MyBatisConfig;
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.util.List;

/**
 * @ClassName: TestUserMapperNew
 * @Author: Kox
 * @Data: 2023/4/12
 * @Sketch:
 */
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();
        // 输出全部用户信息(采用了列表的遍历算子与Lambda表达式)
        users.forEach(user -> System.out.println(user));
    }

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

3.3 修改用户映射器接口

  • 用户映射器接口 - UserMapper
    在这里插入图片描述
package cn.kox.mybatis.mapper;

import cn.kox.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();   // 查询全部用户记录
}

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

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

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

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

相关文章

数据库系统工程师——第四章 操作系统基础

文章目录&#x1f4c2; 第四章、操作系统基础 &#x1f4c1; 4.1 操作系统概述 &#x1f4d6; 4.1.1 基本概念 &#x1f4d6; 4.1.2 操作系统分类 &#x1f4d6; 4.1.3 操作系统的发展 &#x1f4c1; 4.2 进程管理 &#x1f4d6; 4.2.1 基本概念 &#x1f4d6; 4.2.2 进程的控…

电动滑板车出口欧洲CE认证EN17128标准

电动滑板车物美价廉、十分节省能源&#xff0c;充6小时电能骑20多公里&#xff0c;时速最高可达32迈&#xff0c;这对于任何年龄阶段(>12岁)的朋友来说绝对是非常适合的一种选择&#xff1b;与电动自行车相比&#xff0c;它造型美观、操作方便&#xff0c;而且因为座位重心低…

MaxHub智能电视使用123

开机和关机电视正下方&#xff0c;中央有一个圆形按钮。开机时&#xff0c;轻按此按钮1下&#xff0c;智能电视开始启动。启动后会显示MAXHUB。 如果使用中想让智能电视进入休眠状态&#xff0c;轻按此按钮1下即可。此时按钮变为红色。唤醒时&#xff0c;轻按此按钮1下&#x…

智慧物流仓储人员定位系统解决方案,提升物流仓储安全管理效率

随着近年我国制造业的崛起&#xff0c;物流业也得到了迅猛的发展&#xff0c;仓储越来越得到人们的重视。然而&#xff0c;传统仓储业存在着效率低、利用率不高、作业条件差等问题&#xff0c;以及部分仓储企业的业务模式较为基础和单一&#xff0c;导致仓储行业整体盈利水平较…

加密市场喜忧参半 DeFi与CeFi、监管之间有矛盾吗?

目前&#xff0c;身处其中的加密从业者大多喜忧参半。一方面&#xff0c;美国监管机构对中心化交易所的持续打压冲击着市场信心&#xff1b;另一方面&#xff0c;以BTC、ETH为代表的加密资产在二级市场表现相当不俗。 除价格因素外&#xff0c;加密领域内的多个信号正在显现出强…

详细介绍性能测试的方法(含文档)

性能测试是软件测试中的一个重要环节&#xff0c;其目的是评估系统在不同负荷下的性能表现&#xff0c;包括响应时间、吞吐量、并发数等指标。通常可以通过以下几种方法进行性能测试&#xff1a; 1、负载测试 负载测试是模拟多用户同时访问系统&#xff0c;测试系统在高并发、…

SaaS电子病历系统源码

SaaS电子病历系统&#xff1a;现代医疗的新趋势 SaaS电子病历系统是一种基于云计算技术的电子病历服务平台&#xff0c;它将传统的病历记录存储在云端&#xff0c;使用者可以通过互联网随时随地访问和查询病历信息。 相比于传统的医疗信息系统&#xff0c;SaaS电子病历系统具…

每日学术速递4.15

CV - 计算机视觉 | ML - 机器学习 | RL - 强化学习 | NLP 自然语言处理 Subjects: cs.CV 1.Zip-NeRF: Anti-Aliased Grid-Based Neural Radiance Fields 标题&#xff1a;Zip-NeRF&#xff1a;基于网格的抗锯齿神经辐射场 作者&#xff1a;Xueyan Zou, Jianwei Yang, Hao …

在 Ubuntu 使用SQL Server创建 Go 应用程序

在 Ubuntu 使用SQL Server创建 Go 应用程序一、设置环境1.1、安装 SQL Server1.2、安装 GoLang1.3、安装 ODBC 驱动程序和 SQL 命令行实用工具 SQL 服务器二、使用 SQL 服务器创建 Go 应用程序2.1、创建连接到 SQL Server 并执行查询的 Go 应用2.2、创建一个使用 GORM 连接到 S…

macOS 13.4Beta 2(22F5037d)发布

系统介绍 4 月 12 日消息&#xff0c;苹果今日向 Mac 电脑用户推送了 macOS 13.4 开发者预览版 Beta 2 更新&#xff08;内部版本号&#xff1a;22F5037d&#xff09;&#xff0c;本次更新距离上次发布隔了 14 天。 macOS Ventura 带来了台前调度、连续互通相机、FaceTime 通…

Python爬虫之Scrapy框架系列(19)——实战下载某度猫咪图片【媒体管道类】

目录&#xff1a;1.引入&#xff1a;1.1 不使用管道&#xff0c;直接存储本地&#xff1a;①创建scrapy项目及爬虫文件②编写爬虫文件&#xff1a;③效果&#xff1a;1.2 使用管道&#xff0c;进行本地存储&#xff1a;①编写爬虫文件&#xff1a;②在items.py文件中创建相应的…

前缀和算法【一维、二维】

算法推导 首先这种算法适合于求从 x 到 y 的和。 一维情况 一维代码十分简单&#xff0c;我们只需要每个都记录前面所有的和即可&#xff0c;注意细节 下标从1开始 for(int i 1 ; i < n ; i ){cin >> temp;a[i] a[i - 1] temp; }这里我们就看两种情况&#xff…

接口优化的常见方案实战总结

一、背景 针对老项目&#xff0c;去年做了许多降本增效的事情&#xff0c;其中发现最多的就是接口耗时过长的问题&#xff0c;就集中搞了一次接口性能优化。本文将给小伙伴们分享一下接口优化的通用方案。 &#xfeff; &#xfeff; &#xfeff;&#xfeff; 二、接口优化…

Maven下载与配置

Maven官网链接&#xff1a; https://maven.apache.org/ 进入后首页展示最新的下载地址 如果要下载历史版本&#xff0c;可以搜索 legacy archives 来快速找到这个地方&#xff0c;点击进入 下载完毕后&#xff0c;解压放到D盘&#xff08;或根据个人喜好存放&#xff09; 首先…

4月22日丨【云数据库技术沙龙】技术进化,让数据更智能

4月22日&#xff0c;云数据库技术沙龙“MySQL x ClickHouse”专场 “MySQL x ClickHouse” 技术沙龙&#xff0c;本次沙龙以“技术进化&#xff0c;让数据更智能”为主题&#xff0c;汇聚字节跳动、阿里云、玖章算术、华为云、腾讯云、百度等众多数据库厂商的技术大咖&#xf…

2023/4/10-2023/4/18周报

1 高德地图 运行抱错 INVALID_USER_SCODE 这里是错误信息对应原因 错误信息列表-参考手册-地图 JS API | 高德地图API 这里是高德地图api设置说明 准备-入门-教程-地图 JS API | 高德地图API 如果你自己能排查出错误 那不用看我的&#xff0c;如果都写的对还是抱错…

list容器

1、list容器简介 链表是以中物理存储单元上的非连续、非顺序的存储结构&#xff0c;数据元素的逻辑顺序都是通过链表中的指针连接次序实现的。链表由一系列的结点&#xff08;链表中每一个元素被称为结点&#xff09;组成&#xff0c;结点可以在运行时动态生成。每一个结点包括…

系统集成项目管理工程师 笔记(第三章:信息系统集成专业技术知识)

文章目录 3.1 信息系统建设 1333.1.1 信息系统的生命周期 1333.1.2 信息系统开发方法 133 3.3 软件工程 1353.3.1 软件需求分析与定义 1353.3.2 软件设计、测试与维护 1353.3.3 软件质量保证及质量评价 1363.3.4 软件配置管理 136&#xff08;六大活动&#xff09;3.3.5 软件过…

瑞芯微RK3568四核核心板芯片简介

引言 RK3568是瑞芯微出品的一款定位中高端的通用型SoC&#xff0c;采用22nm先进制程工艺&#xff0c;集成4核 arm 架构 A55 处理器和 Mali G52 2EE 图形处理器&#xff0c;支持4K解码和1080P编码。RK3568支持 SATA/PCIE/USB3.0 等各类型外围接口&#xff0c;内置独立的NPU&…

亚马逊云科技数字化技术撬动千亿市场,民航客机改装是好生意

很多人对庞大的民航客机的印象还停留在其天文数字般的价格&#xff0c;随着运营时间的推移&#xff0c;将客机转货机的航空维修产业应时而生。民航业客机改货机的市场不断增长&#xff0c;面对飞机客改货过程中的海量图纸与复杂工艺流程&#xff0c;汉端科技在西云数据运营的亚…