Mybatis(二):实现“增删改查”

Mybatis(二):实现“增删改查”

  • 前言
  • 一、MyBatis的增删改查
    • 1、添加
    • 2、修改
    • 3、删除
    • 4、查询
      • 4.1 查询一个实体
      • 4.1 查询集合
  • 二、MyBatis获取参数值的两种方式(重点)
    • 1、单个字面量类型的参数
    • 2、多个字面量类型的参数
    • 3、map集合类型的参数
    • 4、实体类类型的参数
    • 5、使用@Param标识参数
    • 6、结论
  • 三、MyBatis的各种查询功能
    • 1、查询一个实体类对象
    • 2、查询一个list集合
    • 3、查询单个数据
    • 4、查询一条数据为map集合
    • 5、查询多条数据为map集合
    • 6、结论



前言

本博主将用CSDN记录软件开发求学之路上亲身所得与所学的心得与知识,有兴趣的小伙伴可以关注博主!也许一个人独行,可以走的很快,但是一群人结伴而行,才能走的更远!

一、MyBatis的增删改查

1、添加

UserMapper接口:

     /**
     *添加用户信息
     */
    int insertUser();

UserMapper.xml

<!--int insertUser();-->
          <insert id="insertUser">
                insert into t_user values(null,'张三','123',23,'女')
          </insert>

2、修改

UserMapper接口:

     /**
     * 修改用户信息
     */
    void updateUser();

UserMapper.xml

        <!-- void updateUser();-->
        <update id = "updateUser">
             update t_user set username = '张三' where id = 4
        </update>

3、删除

UserMapper接口:

    /**
     * 删除用户信息
     */
    void deleteUser();

UserMapper.xml

        <!-- void deleteUser();-->
        <delete id="deleteUser">
             delete from t_user where id = 5
        </delete>

4、查询

4.1 查询一个实体

UserMapper接口:

    /**
     * 查询用户信息
     */
    User getUserId();
UserMapper.xml
      <!--User getUserById();-->
        <!--
            查询功能的标签必须设置resultType或resultMap
            resultType:设置默认的映射关系
            resultMap:设置自定义的映射关系
        -->
    <select id="getUserById" resultType="com.ir.mybaits.pojo.User">
          select * from t_user where id = 3
     </select>
     

4.1 查询集合

UserMapper接口:

    /**
     * 查询用户信息
     */
    List<User> getAllUser();

UserMapper.xml

      <!--List<User> getAllUser();-->
    <select id="getAllUser" resultType="User">
        select * from t_user
    </select>

注意:

⭕ 查询的标签select必须设置属性resultTyperesultMap,用于设置实体类和数据库表的映射关系
resultType:自动映射,用于属性名和表中字段名一致的情况
resultMap:自定义映射,用于一对多或多对一或字段名和属性名不一致的情况

⭕当查询的数据为多条时,不能使用实体类作为返回值,只能使用集合,否则会抛出异常TooManyResultsException,但是若查询的数据只有一条,可以使用实体类或集合作为返回值

二、MyBatis获取参数值的两种方式(重点)

MyBatis获取参数值的两种方式:${}#{}

${}的本质就是字符串拼接,使用字符串拼接的方式拼接sql,若为字符串类型或日期类型的字段进行赋值时,需要手动加单引号;

#{}的本质就是占位符赋值,但是#{}使用占位符赋值的方式拼接sql,此时为字符串类型或日期类型的字段进行赋值时,可以自动添加单引号

1、单个字面量类型的参数

⭕ 若mapper接口中的方法参数为单个的字面量类型,此时可以使用${}#{}以任意的名称获取参数的值,但是需要注意${}的单引号问题

⭕ 代码演示:

UserMapper

/**
     * @description:查询用户信息
     * @author: Hey
     * @date: 2022/7/3 16:53
     * @param: [username]
     * @return: com.ir.mybatis.pojo.User
     **/
    User getUserByUsername(String username);

UserMapper.xml

 <!--User getUserByUsername(String username);-->
    <select id="getUserByUsername" resultType="user">
         <!--此时只注重传递过来的值,{username}中的usernsme可以替换为任意字母,结果都不会改变-->
          <!--select * from t_user where username = '${username}';-->
          select * from t_user where username = #{username};
    </select>

UserMapperTest

   /**
    * @description:
    * @author: Hey
    * @date: 2022/7/3 15:29
    * @param: []
    * @return: void
    **/
    @Test
    public void getUserByUsername(){
        UserMapper userMapper = SqlSessionUtils.getSqlSession().getMapper(UserMapper.class);
        System.out.println(userMapper.getUserByUsername("张三"));
    }

2、多个字面量类型的参数

mapper接口方法的参数为多个时,此时MyBatis会将这些参数放在一个map集合中,以两种方式进行存储

  1. arg0,arg1…为键,以参数为值
  2. param1,param2…为键,以参数为值

因此只需要通过${}#{}访问map集合的键就可以获取相对应的 值,但是需要注意${}的单引号问题。

⭕ 代码演示:

UserMapper

    /**
     * @description:检查用户登录信息
     * @author: Hey
     * @date: 2022/7/3 15:46
     * @param: [username, password]
     * @return: com.ir.mybatis.pojo.User
     **/
    User checkLoginByParameter(String username,String password);

UserMapper.xml

  <!--User checkLoginByParameter(String username,String password);-->
    <select id="checkLoginByParameter" resultType="user">
        select * from t_user where username=#{arg0} and password=#{arg1};
    </select>

UserMapperTest

 /**
     * @description:
     * @author: Hey
     * @date: 2022/7/3 15:30
     * @param: []
     * @return: void
     **/
    @Test
    public void checkLoginByParam(){
         UserMapper userMapper = SqlSessionUtils.getSqlSession().getMapper(UserMapper.class);
         User user = userMapper.checkLoginByParameter("张三","123");
        System.out.println(user);
    }

3、map集合类型的参数

⭕ 若mapper接口中的方法需要的参数为多个时,此时可以手动创建map集合,将这些数据放在map中,只需要通过${}#{}访问map集合的键就可以获取相对应的值,但是需要注意${}的单引号问题

⭕ 代码演示:

UserMapper

    /**
     * @description:通过自定义Map来验证登录
     * @author: Hey
     * @date: 2022/7/3 15:45
     * @param:
     * @return:
     **/
    User checkLoginByMap(Map<String, Object> map);

UserMapper.xml

 <!--User checkLoginByMap(Map<String, Object> map);-->
    <select id="checkLoginByMap" resultType="user">
        select * from t_user where username=#{username} and password=#{password};
    </select>

UserMapperTest

     /**
     * @description:测试通过自定义Map验证登录
     * @author: Hey
     * @date: 2022/7/3 15:55
     * @param: []
     * @return: void
     **/
    @Test
    public void checkLoginByMap(){
        UserMapper userMapper = SqlSessionUtils.getSqlSession().getMapper(UserMapper.class);
        Map<String,Object> map = new HashMap<>();
        map.put("username","张三");
        map.put("password","123");
        User user = userMapper.checkLoginByMap(map);
        System.out.println(user);
    }

4、实体类类型的参数

⭕ 若mapper接口中的方法参数为实体类对象时,此时可以使用${}#{},通过访问实体类对象中的属性名获取属性值,但是需要注意${}的单引号问题

⭕ 代码演示:

UserMapper

 /**
     * @description:添加用户
     * @author: Hey 
     * @date: 2022/7/3 16:11
     * @param: [user]
     * @return: int
     **/
    Integer insertUser(User user);

UserMapper.xml

<!--int insertUser(User user);-->
    <select id="insertUser" >
        insert into t_user values(null,#{username},#{password},#{age},#{sex},#{email})
    </select>

UserMapperTest

     /**
     * @description:添加用户  
     * @author: Hey
     * @date: 2022/7/3 16:24
     * @param: []
     * @return: void
     **/
    @Test
    public void insertUser(){
        UserMapper userMapper = SqlSessionUtils.getSqlSession().getMapper(UserMapper.class);
        Integer result = userMapper.insertUser(new User(null,"喜羊羊","123456",18,"男","123123@qq.com"));
        System.out.println(result);
    }

5、使用@Param标识参数

⭕ 可以通过@Param注解标识mapper接口中的方法参数,此时,会将这些参数放在map集合中,以如下两种方式来取值访问:

  1. @Param注解的value属性值为键,以参数为值;
  2. param1,param2…为键,以参数为值;

只需要通过${}#{}访问map集合的键就可以获取相对应的值,但是需要注意${}的单引号问题

⭕ 代码演示:

UserMapper

 /**
     * @description:通过参数注解验证登录
     * @author: Hey 
     * @date: 2022/7/3 16:59
     * @param: [username, password]
     * @return: com.ir.mybatis.pojo.User
     **/
    User checkLoginByParam(@Param("username") String username, @Param("password") String password);

UserMapper.xml

    <!--User checkLoginByParam(@Param("username") String username, @Param("password") String password);-->
    <select id="checkLoginByParam" resultType="User">
        select * from t_user where username = #{username} and password = #{password}
    </select>

UserMapperTest

 /**
     * @description:通过注解方式验证登录
     * @author: Hey
     * @date: 2022/7/3 16:57
     * @param: []
     * @return: void
     **/
    @Test
    public void testCheckLoginByParam(){
        SqlSession sqlSession = SqlSessionUtils.getSqlSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        User user = mapper.checkLoginByParam("admin", "123456");
        System.out.println(user);
    }

6、结论

将以上五种情况分为两类情况
⭕ 情况一:参数为实体类型
⭕ 情况二:参数都用@Param来修饰

三、MyBatis的各种查询功能

1、查询一个实体类对象

SelectMapper

    /**
     * @description:通过id查询用户
     * @author: Hey
     * @date: 2022/7/3 17:54
     * @param: [id]
     * @return: com.ir.mybatis.pojo.User
     **/
    User getUserById(@Param("id") Integer id);

SelectMapper.xml

<select id="getUserById" resultType="user">
         select * from t_user where id= #{id};
    </select>

SelectMapperTest

/**
     * @description:通过id查询用户
     * @author: Hey
     * @date: 2022/7/3 17:58
     * @param: []
     * @return: void
     **/
    @Test
    public void getUserById(){
        SelectMapper selectMapper = SqlSessionUtils.getSqlSession().getMapper(SelectMapper.class);
        User user = selectMapper.getUserById(3);
        System.out.println(user);
    }

2、查询一个list集合

SelectMapper

/**
     * @description:获取多个用户
     * @author: Hey
     * @date: 2022/7/3 17:56
     * @param: []
     * @return: java.util.List<com.ir.mybatis.pojo.User>
     **/
    List<User> getAllUser();

SelectMapper.xml

<select id="getAllUser" resultType="user">
        select * from t_user;
    </select>

SelectMapperTest

/**
     * @description:查询所有用户
     * @author: Hey
     * @date: 2022/7/3 18:00
     * @param: []
     * @return: void
     **/
    @Test
    public void getAllUser(){
        SelectMapper selectMapper = SqlSessionUtils.getSqlSession().getMapper(SelectMapper.class);
        List<User> list =  selectMapper.getAllUser();
        for (User user:list
             ) {
            System.out.println(user);
        }
    }

3、查询单个数据

MyBatis中,对于Java中常用的类型都设置了类型别名

AliasMapped Type
_bytebyte
_char (since 3.5.10)char
_character (since 3.5.10)char
_longlong
_shortshort
_intint
_integerint
_doubledouble
_floatfloat
_booleanboolean
stringString
byteByte
char (since 3.5.10)Character
character (since 3.5.10)Character
longLong
shortShort
intInteger
integerInteger
doubleDouble
floatFloat
booleanBoolean
dateDate
decimalBigDecimal
bigdecimalBigDecimal
bigintegerBigInteger
objectObject
date[]Date[]
decimal[]BigDecimal[]
bigdecimal[]BigDecimal[]
biginteger[]BigInteger[]
object[]Object[]
mapMap
hashmapHashMap
listList
arraylistArrayList
collectionCollection
iteratorIterator

SelectMapper

    /**
     * @description:查询用户信息的总记录数
     * @author: Hey
     * @date: 2022/7/3 20:40
     * @param: []
     * @return: java.lang.Integer
     **/
    Integer getCount();

SelectMapper.xml

 <select id="getCount" resultType="int">
        select count(1) from t_user;
    </select>

SelectMapperTest

/**
     * @description:查询用户信息的总记录数
     * @author: Hey 
     * @date: 2022/7/3 20:45
     * @param: []
     * @return: void
     **/
    @Test
    public void getCount(){
        SelectMapper selectMapper = SqlSessionUtils.getSqlSession().getMapper(SelectMapper.class);
        int result = selectMapper.getCount();
        System.out.println(result);
    }

4、查询一条数据为map集合

SelectMapper

/**
     * @description:根据id查询用户信息为一个map集合
     * @author: Hey
     * @date: 2022/7/3 20:59
     * @param: [id]
     * @return: java.util.Map<java.lang.String,java.lang.Object>
     **/
    Map<String,Object> getUserByIdToMap(@Param"id"Integer id);

SelectMapper.xml

<select id="getUserByIdToMap" resultType="map">
        select * from t_user where id=#{id}
</select>

SelectMapperTest

/**
     * @description:根据id查询用户信息为一个map集合
     * @author: Hey
     * @date: 2022/7/3 21:03
     * @param: []
     * @return: void
     **/
    @Test
    public void getUserByIdToMap(){
        SelectMapper selectMapper = SqlSessionUtils.getSqlSession().getMapper(SelectMapper.class);
        System.out.println(selectMapper.getUserByIdToMap(5));
        //{password=123456, sex=男, id=5, age=18, email=123123@qq.com, username=喜羊羊}
    }

5、查询多条数据为map集合

方式一:
SelectMapper

/**
     * @description:查询所有用户信息为Map集合
     * 
     * 将表中的数据以map集合的方式查询,一条数据对应一个map;
     * 若有多条数据,就会产生多个map集合,此时可以将这些map放在一个list集合中获取
     * 
     * @author: Hey
     * @date: 2022/7/3 21:15
     * @param: []
     * @return: java.util.List<java.util.Map<java.lang.String,java.lang.Object>>
     **/
    List<Map<String, Object>> getAllUserToMap();    

SelectMapper.xml

 <select id="getAllUserToMap" resultType="map">
         select * from t_user
    </select>

SelectMapperTest

/**
     * @description:查询所有用户信息为Map集合
     * @author: Hey
     * @date: 2022/7/3 21:17
     * @param: []
     * @return: void
     **/
@Test
    public void testGetAllUserToMap(){
        SqlSession sqlSession = SqlSessionUtils.getSqlSession();
        SelectMapper mapper = sqlSession.getMapper(SelectMapper.class);
        System.out.println(mapper.getAllUserToMap());
        /**
         * [{password=123, sex=女, id=1, age=23, email=12345@qq.com, username=张三},
         * {password=123456, sex=男, id=2, age=18, email=123123@qq.com, username=喜羊羊}]
        */
    }

方式二:
SelectMapper

/**
     * @description:查询所有用户信息为Map集合
     * 
     * 将表中的数据以map集合的方式查询,一条数据对应一个map;
     * 若有多条数据,就会产生个map集合,并且最终要以一个map的方式返回数据,此时需要通过@MapKey注解设置map集合的键,值是每条数据所对应的map集合
     * 
     * @author: Hey
     * @date: 2022/7/3 21:15
     * @param: []
     * @return: java.util.List<java.util.Map<java.lang.String,java.lang.Object>>
     **/
   @MapKey("id")
    Map<String, Object> getAllUserToMap();    

SelectMapper.xml

 <select id="getAllUserToMap" resultType="map">
         select * from t_user
    </select>

SelectMapperTest

 /**
     * @description:查询所有用户信息为Map集合
     * @author: Hey
     * @date: 2022/7/3 21:17
     * @param: []
     * @return: void
     **/
    @Test
    public void testGetAllUserToMap(){
        SqlSession sqlSession = SqlSessionUtils.getSqlSession();
        SelectMapper mapper = sqlSession.getMapper(SelectMapper.class);
        System.out.println(mapper.getAllUserToMap());
        /**
         * {
         * 1={password=123, sex=女, id=1, age=23, email=12345@qq.com, username=张三}, 
         * 2={password=123456, sex=男, id=2, age=18, email=123123@qq.com, username=喜羊羊}
         * }
        */
    }

6、结论

MyBatis的各种查询功能:

⭕ 若查询出的数据只有一条
● 可以通过实体类对象接收
● 可以通过list集合接收
● 可以通过map集合接收
结果:
{password=123456, sex=男, id=3, age=23, email=12345@qq.com, username=admin}

⭕ 若查询出的数据有多条
● 可以通过实体类类型的list集合接收
● 可以通过map类型的list集合接收
●可以在mapper接口的方法上添加@MapKey注解,此时就可以将每条数据转换的map集合作为值,以某个字段的值作为键,放在同一个map集合中

⭕ 注意:一定不能通过实体类对象接收,此时会抛异常TooManyResultsException

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

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

相关文章

加载Word2Vec模型时候出现的错误总结

加载Word2Vec模型时候出现的错误总结首先&#xff0c;要明确gensim内置了训练和加载各种预训练的词向量模型&#xff0c;如Word2Vec、FastText、GloVe等,所以我们这里有关Word2Vec的错误要要联想到可能是gensim库出现了问题&#xff01;&#xff01;&#xff01; 源代码&#…

具备人脸识别功能的多目标在线实时行为检测(yolov5+deepsort+slowfast)

文章目录前言配置项人脸识别配置多目标行为检测配置人脸识别模块采集模块人脸存储模块识别模块目标行为检测模块非在线实时检测在线实时检测结合人脸识别总结前言 这里先声明一下本项目是基于https://github.com/wufan-tb/yolo_slowfast 做的一个二次开发&#xff0c;也就是进…

[数据结构]直接插入排序、希尔排序

文章目录排序的概念和运用排序的概念排序运用常见的排序算法常见的排序算法直接插入排序希尔排序性能对比排序的概念和运用 排序的概念 排序&#xff1a;所谓排序&#xff0c;就是使一串记录&#xff0c;按照其中的某个或某些关键字的大小&#xff0c;递增或递减的排列起来的操…

gns3:动态路由(ospf) area0 骨干网络(域间)(ABR)+ ospf 连接 rip (外部)(ASBR)+ 区域划分

1.配置好接口ip 全部处于up状态2.配置好lookback口 增加一个虚拟直连网段全部为 255.255.255.0的子网掩码实现上边ospf之间通信r1的全局模式router ospf 1network 192.168.1.0 0.0.0.255 area 1network 1.1.1.0 0.0.0.255 area 1宣告直连 并且划分area 区域为1r2全局模式router…

三十七、实战演练之接口自动化平台的文件上传

上传文件功能 上传文件功能主要针对需要测试上传文件的接口。原理是&#xff0c;把要测试上传的文件先上传到测试平台&#xff0c;然后把路径写入 用例中&#xff0c;后台真正测试时再将其进行上传。 一、上传文件模型 在testplans/models.py 模块中编写如下模型&#xff1a;…

MyBatisPlus的Wrapper使用示例

一、wapper介绍 1、Wrapper家族 在MP中我们可以使用通用Mapper&#xff08;BaseMapper&#xff09;实现基本查询&#xff0c;也可以使用自定义Mapper&#xff08;自定义XML&#xff09;来实现更高级的查询。当然你也可以结合条件构造器来方便的实现更多的高级查询。 Wrappe…

在linux上安装配置nodejs工具,设置环境变量,设置npm国内镜像源,提高下载速度。

目录前言1&#xff0c;关于nodejs2&#xff0c;配置环境变量3&#xff0c;总结前言 本文的原文连接是: https://blog.csdn.net/freewebsys/article/details/108971807 未经博主允许不得转载。 博主CSDN地址是&#xff1a;https://blog.csdn.net/freewebsys 博主掘金地址是&…

深度学习应用技巧4-模型融合:投票法、加权平均法、集成模型法

大家好&#xff0c;我是微学AI&#xff0c;今天给大家介绍一下&#xff0c;深度学习中的模型融合。它是将多个深度学习模型或其预测结果结合起来&#xff0c;以提高模型整体性能的一种技术。 深度学习中的模型融合技术&#xff0c;也叫做集成学习&#xff0c;是指同时使用多个…

cjson文件格式介绍

cjson是一种轻量级的JSON解析库&#xff0c;它支持将JSON格式的数据转换为C语言中的数据结构&#xff0c;同时也支持将C语言中的数据结构转换为JSON格式的数据。cjson的文件格式是指在使用cjson库时&#xff0c;将JSON格式的数据存储在文件中&#xff0c;然后通过cjson库读取文…

音视频开发—MediaCodec 解码H264/H265码流视频

使用MediaCodec目的 MediaCodec是Android底层多媒体框架的一部分&#xff0c;通常与MediaExtractor、MediaMuxer、AudioTrack结合使用&#xff0c;可以编码H264、H265、AAC、3gp等常见的音视频格式 MediaCodec工作原理是处理输入数据以产生输出数据 MediaCodec工作流程 Med…

SpringBoot 结合RabbitMQ与Redis实现商品的并发下单【SpringBoot系列12】

SpringCloud 大型系列课程正在制作中&#xff0c;欢迎大家关注与提意见。 程序员每天的CV 与 板砖&#xff0c;也要知其所以然&#xff0c;本系列课程可以帮助初学者学习 SpringBooot 项目开发 与 SpringCloud 微服务系列项目开发 1 项目准备 SpringBoot 整合 RabbitMQ 消息队…

Linux下的指令(常用的指令,以及案例展示)

目录 一&#xff1a;模式切换图 二&#xff1a;vi和vim相关操作 三&#xff1a;开机、重启用户的登录注销 四&#xff1a;用户管理&#xff08;切换、添加、删除、查询&#xff09; 4.1 基本管理 4.2 用户组​ 五&#xff1a;实用指令 5.1 指定运行级别 5.2 找回运行密…

QEMU启动ARM32 Linux内核

目录前言前置知识ARM Versatile Express开发板简介ARM处理器家族简介安装qemu-system-arm安装交叉编译工具交叉编译ARM32 Linux内核交叉编译ARM32 Busybox使用busybox制作initramfs使用QEMU启动ARM32 Linux内核模拟vexpress-a9开发板模拟vexpress-a15开发板参考前言 本文介绍采…

Thread类的基本用法

Thread类的基本用法&#x1f50e;1.线程创建&#x1f33b;继承Thread类&#x1f33c;继承Thread重写run()方法&#x1f33c;继承Thread匿名内部类&#x1f33b;实现Runnable接口&#x1f33c;实现Runnable接口重写run()方法&#x1f33c;实现Runnable接口匿名内部类&#x1f33…

spring5(四):IOC 操作 Bean 管理(基于注解方式)

IOC操作Bean管理&#xff08;基于xml方式&#xff09;前言一、注解1、概述二、入门案例1、Bean 的创建2、Bean的自动装配2.1 Autowired2、Qualifie3、Resource4、Value3、扫描组件3.1 配置文件版3.2 注解版4、测试前言 本博主将用CSDN记录软件开发求学之路上亲身所得与所学的心…

SQL优化13连问,收藏好!

1.日常工作中&#xff0c;你是怎么优化SQL的&#xff1f; 大家可以从这几个维度回答这个问题&#xff1a; 分析慢查询日志 使用explain查看执行计划 索引优化 深分页优化 避免全表扫描 避免返回不必要的数据&#xff08;如select具体字段而不是select*&#xff09; 使用…

Docker常规安装简介

总体步骤 搜索镜像拉取镜像查看镜像启动镜像,服务端口映射停止容器移除容器 案例 安装tomcat docker hub上面查找tomcat镜像&#xff0c;docker search tomcat从docker hub上拉取tomcat镜像到本地 docker pull tomcatdocker images查看是否有拉取到的tomcat 使用tomcat镜像创…

windows微服务部署

windows部署一.nginx部署1.nginx 官网下载2. 配置nginx3.配置nigix 防止nigix刷新404不生效二.配置redis部署成服务1.在系统配置中 配置为系统变量2.打开快捷登录服务管理#3. 开启redis三.windows部署jar包一.nginx部署 1.nginx 官网下载 地址 官网地址 安装 windows版本 可安…

天猫2月咖啡行业数据分析(咖啡品牌销量排行)

随着人们消费水平的提高以及休闲、办公等场景化的需要&#xff0c;咖啡已成为越来越多人日常生活中的必需品&#xff0c;咖啡行业的市场规模也在不断扩大。并且&#xff0c;随着咖啡品牌不断发力线上赛道&#xff0c;咖啡的电商化之路也越来越成熟&#xff0c;而与此同时&#…

STM32MP157-QT-串口调试助手设计

文章目录前言STM32MP157串口调试助手widget.uipro文件widget.h头文件槽函数成员声明widget.cpp头文件扫描串口并添加到下拉列表串口配置参数获取配置参数打开、关闭串口读取数据信号读数据函数代码发送数据清空接收、发送区发送新行定时发送移植安装含编译 Qt 应用程序的交叉编…
最新文章