Mybatis配置文件的增删改查功能

Mybatis配置文件的增删改查功能

查询—条件查询

在这里插入图片描述

//resources里面的org.example.mapper中的BrandMapper.xml文件
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!--
namespace:命名空间,对sql语句进行隔离,方便管理
-->
<mapper namespace="org.example.mapper.BrandMapper">
<!--    数据库表的字段名称 和实体类得到属性名称 不一样,则不能自动封装数据
* 起别名:对不一样的;列名起别名,让别名和实体类的属性名一样
缺点:每次查询都要定义一次别名
*:sql片段 缺点:不灵活
*resultMapper:
--><resultMap id="brandResult" type="org.example.pojo.Brand"><id column="id" property="id"/><result column="brand_name" property="brandName"/><result column="company_name" property="companyName"/><result column="ordered" property="ordered"/><result column="description" property="description"/><result column="status" property="status"/></resultMap><select id="selectAll" resultMap="brandResult">select * from tb_brand</select><!--*参数占位符:
1.#{}:会将其替换为?,为了防止SQL注入
2.${}:拼sql。会存在SQL注入问题
3.使用时机:*参数传递的时候:#{}
*表名或者列名不固定的情况下:${}会存在Sql注入问题
*参数类型:paramType:指定参数类型,可以不写,默认为null,会自动识别类型      *--><select id="selectById" resultMap="brandResult">select * from tb_brand where id = #{id}</select><!--条件查询-->
<!--    <select id="selectByCondition" parameterType="org.example.pojo.Brand" resultMap="brandResult">-->
<!--        select * from tb_brand-->
<!--        where status = #{status}-->
<!--        and company_name like #{companyName}-->
<!--        and brand_name like #{brandName}-->
<!--    </select>--><!--    动态条件查询
*if:条件判断
*test:逻辑表达式
问题:
*恒等式
*<where>替换where关键字--><select id="selectByCondition" parameterType="map" resultMap="brandResult">
select * from tb_brand
where 1=1<if test="status!=null">and  status = #{status}</if>
<if test="companyName!=null and companyName!=''">and company_name like #{companyName}
</if>
<if test="brandName!=null and brandName!=''">and brand_name like #{brandName}
</if></select><!--   choose相当于switch when相当于case  -->
<!--    <select id="selectByConditionSingle" resultMap="brandResult" >-->
<!--        select * from tb_brand-->
<!--   where-->
<!--       <choose>-->
<!--       <when test="status!=null">-->
<!--           status = #{status}-->
<!--       </when>-->
<!--       <when test="companyName!=null and companyName!=''">-->
<!--           company_name like #{companyName}-->
<!--       </when>-->
<!--       <when test="brandName!=null and brandName!=''">-->
<!--           brand_name like #{brandName}-->
<!--       </when>-->
<!--        <otherwise>-->
<!--            1=1-->
<!--        </otherwise>-->
<!--   </choose>-->
<!--    </select>--><select id="selectByConditionSingle" resultMap="brandResult" >select * from tb_brand<where><choose><when test="status!=null">status = #{status}</when><when test="companyName!=null and companyName!=''">company_name like #{companyName}</when><when test="brandName!=null and brandName!=''">brand_name like #{brandName}</when></choose></where></select><insert id="add" useGeneratedKeys="true" keyProperty="id">insert into tb_brand(brand_name,company_name,ordered,description,status)values(#{brandName},#{companyName},#{ordered},#{description},#{status})</insert><update id="update">update tb_brand<set><if test="status!=null">status = #{status},</if><if test="ordered!=null">ordered = #{ordered},</if><if test="description!=null">description = #{description},</if><if test="brandName!=null">brand_name = #{brandName},</if><if test="companyName!=null">company_name = #{companyName},</if></set>where id = #{id}</update><delete id="deleteById">delete from tb_brand where id = #{id}</delete>
<!--  mybatis会将数组参数,封装为一个Map集合,以键值对形式存在,键为:array--><delete id="deleteByIds">delete from tb_brand where idin(<foreach collection="ids" item="id" >#{id}</foreach>)</delete></mapper>//resoures中的文件的mybatis-config.xml文件<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration><environments default="development"><environment id="development"><transactionManager type="JDBC"/><dataSource type="POOLED">
<!--                数据库的连接信息--><property name="driver" value="com.mysql.cj.jdbc.Driver"/><property name="url" value="jdbc:mysql://127.0.0.1:3306/mybatis?serverTimezone=UTC"/><property name="username" value="root"/><property name="password" value="123456"/></dataSource></environment></environments><mappers>
<!--        加载sql映射文件--><mapper resource="org/example/mapper/BrandMapper.xml"/>
<!--        <package name="org.example.mapper"/>--></mappers>
</configuration>//src/main/java/org/example/mapper中的BrandMapper接口public interface BrandMapper {/*** 查询所有品牌*/
public List<Brand> selectAll();
/*** 查看详情:根据id查询*/
public Brand selectById(int id);/*** 条件查询* *参数接受:*          1.散装参数: 如果方法中有多个参数,需要使用@Param*          2.对象参数:对象的属性名称要和参数名称一致*          3.map参数:参数使用map.get(key)获取值* @param status* @param companyName* @param brandName* @return*/
//List<Brand> selectByCondition(
//        @Param("status")int status,
//                              @Param("companyName")String companyName,
//                                            @Param("brandName")String brandName);//public List<Brand> selectByCondition(Brand brand);List<Brand> selectByCondition(Map map);/***单条件查询* @param brand* @return*/List<Brand> selectByConditionSingle(Brand brand);/*** 添加*/void add(Brand brand);/*** 修改*/int update(Brand brand);/*** 删除*/void deleteById(int id);/*** 批量删除* @param ids*/void deleteByIds(@Param("ids") int[] ids);
}//测试文件代码块
public class MyBatisTest {@Testpublic void testSelectAll() throws IOException {// 1.创建SqlSessionFactoryBuilder对象String resource = "mybatis-config.xml";InputStream inputStream = Resources.getResourceAsStream(resource);SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);//2.获取SqlSession对象,用它来执行sqlSqlSession sqlSession = sqlSessionFactory.openSession();//3.获取Mapper接口对象BrandMapper mapper = sqlSession.getMapper(BrandMapper.class);//4.执行方法System.out.println(mapper.selectAll());//5.释放资源sqlSession.close();}@Testpublic void testSelectById() throws IOException {int id = 1;// 1.创建SqlSessionFactoryBuilder对象String resource = "mybatis-config.xml";InputStream inputStream = Resources.getResourceAsStream(resource);SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);//2.获取SqlSession对象,用它来执行sqlSqlSession sqlSession = sqlSessionFactory.openSession();//3.获取Mapper接口对象BrandMapper mapper = sqlSession.getMapper(BrandMapper.class);//4.执行方法System.out.println(mapper.selectById(id));//5.释放资源sqlSession.close();}@Testpublic void testSelectByCondition() throws IOException {int status = 1;String companyName = "小米科技有限公司";String brandName = "小米";// 处理数据companyName = "%" + companyName + "%";brandName = "%" + brandName + "%";// 封装对象
//        Brand brand = new Brand();
//        brand.setStatus(status);
//        brand.setCompanyName(companyName);
//        brand.setBrandName(brandName);// map封装Map map = new HashMap();map.put("status",status);map.put("companyName",companyName);map.put("brandName",brandName);// 1.创建SqlSessionFactoryBuilder对象String resource = "mybatis-config.xml";InputStream inputStream = Resources.getResourceAsStream(resource);SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);//2.获取SqlSession对象,用它来执行sqlSqlSession sqlSession = sqlSessionFactory.openSession();//3.获取Mapper接口对象BrandMapper mapper = sqlSession.getMapper(BrandMapper.class);//4.执行方法// List<Brand> brands = mapper.selectByCondition(status, companyName, brandName);
//        List<Brand> brands = mapper.selectByCondition(brand);List<Brand> brands = mapper.selectByCondition(map);System.out.println(brands);//5.释放资源sqlSession.close();}@Testpublic void testSelectByConditionSingle() throws IOException {int status =0 ;String companyName = "小米科技有限公司";String brandName = "小米";// 处理数据companyName = "%" + companyName + "%";brandName = "%" + brandName + "%";
//         封装对象Brand brand = new Brand();brand.setStatus(status);
//        brand.setCompanyName(companyName);
//        brand.setBrandName(brandName);// 1.创建SqlSessionFactoryBuilder对象String resource = "mybatis-config.xml";InputStream inputStream = Resources.getResourceAsStream(resource);SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);//2.获取SqlSession对象,用它来执行sqlSqlSession sqlSession = sqlSessionFactory.openSession();//3.获取Mapper接口对象BrandMapper mapper = sqlSession.getMapper(BrandMapper.class);//4.执行方法// List<Brand> brands = mapper.selectByCondition(status, companyName, brandName);
//        List<Brand> brands = mapper.selectByCondition(brand);List<Brand> brands = mapper.selectByConditionSingle(brand);System.out.println(brands);//5.释放资源sqlSession.close();}@Testpublic void testAdd() throws IOException {int status =1 ;String companyName = "波导手机";String brandName = "波导";String description = "手机中的战斗机";int ordered = 100;
//         封装对象Brand brand = new Brand();brand.setStatus(status);brand.setCompanyName(companyName);brand.setBrandName(brandName);brand.setDescription(description);brand.setOrdered(ordered);// 1.创建SqlSessionFactoryBuilder对象String resource = "mybatis-config.xml";InputStream inputStream = Resources.getResourceAsStream(resource);SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);//2.获取SqlSession对象,用它来执行sqlSqlSession sqlSession = sqlSessionFactory.openSession();//3.获取Mapper接口对象BrandMapper mapper = sqlSession.getMapper(BrandMapper.class);//4.执行方法mapper.add(brand);//提交事务sqlSession.commit();//5.释放资源sqlSession.close();}@Testpublic void testUpdate() throws IOException {int status =1 ;String companyName = "波导手机";String brandName = "波导";String description = "波导手机,手机中的战斗机";int ordered = 200;int id = 5;
//         封装对象Brand brand = new Brand();brand.setStatus(status);brand.setCompanyName(companyName);brand.setBrandName(brandName);brand.setDescription(description);brand.setOrdered(ordered);brand.setId(id);// 1.创建SqlSessionFactoryBuilder对象String resource = "mybatis-config.xml";InputStream inputStream = Resources.getResourceAsStream(resource);SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);//2.获取SqlSession对象,用它来执行sqlSqlSession sqlSession = sqlSessionFactory.openSession();//3.获取Mapper接口对象BrandMapper mapper = sqlSession.getMapper(BrandMapper.class);//4.执行方法int count = mapper.update(brand);System.out.println(count);//提交事务sqlSession.commit();//5.释放资源sqlSession.close();}@Testpublic void testDeleteById() throws IOException {int id = 5;// 1.创建SqlSessionFactoryBuilder对象String resource = "mybatis-config.xml";InputStream inputStream = Resources.getResourceAsStream(resource);SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);//2.获取SqlSession对象,用它来执行sqlSqlSession sqlSession = sqlSessionFactory.openSession();//3.获取Mapper接口对象BrandMapper mapper = sqlSession.getMapper(BrandMapper.class);//4.执行方法mapper.deleteById(id);//提交事务sqlSession.commit();//5.释放资源sqlSession.close();}@Testpublic void testDeleteByIds() throws IOException {int [] ids = {5,6};// 1.创建SqlSessionFactoryBuilder对象String resource = "mybatis-config.xml";InputStream inputStream = Resources.getResourceAsStream(resource);SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);//2.获取SqlSession对象,用它来执行sqlSqlSession sqlSession = sqlSessionFactory.openSession();//3.获取Mapper接口对象BrandMapper mapper = sqlSession.getMapper(BrandMapper.class);//4.执行方法mapper.deleteByIds(ids);//提交事务sqlSession.commit();//5.释放资源sqlSession.close();}

就比如说我们查询当前表格 tb_brand表格中

select * from tb_name 进行条件查询

where

当前状态:启用 status =?

and

企业名称 company_name like ?

and

品牌名称

brand_name like?

1.编写接口方法:Mapper接口
参数:所有查询条件
结果:List<Brand>
2.编写SQL语句:SQL映射文件
3.执行方法,测试三个不同的接受方式List<Brand> selectByCondition(@Param("status")int status,@Param("companyName")String companyName,@Param("brandName")String brandName);
List<Brand> selectByCondition(Brand brand)
List<Brand> selectByCondition(Map map);<select id ="selectByCondition" resultMap="brandResultMap">
select*
from tb_brand
where
status=#{status}
and company_name like #{companyName}
and brand_name like #{brnadName}
</select>

SQL语句设置多个参数有几种方式?

1.散装参数:需要使用@Param(“SQL中的参数占位符名称”)

2.实体类封装参数

只需要保证SQL中的参数名和实体类属性名称对应上,即可设置成功

3.map集合

只需要保证SQL中的参数名和map集合的键名称对应上,即可设置成功

查询-多条件-动态条件查询

SQL语句随着用户的输入或外部条件的变化而变化,我们称为动态SQL

<!--    动态条件查询
*if:条件判断
*test:逻辑表达式
问题:
*恒等式
*<where>替换where关键字--><select id="selectByCondition" parameterType="map" resultMap="brandResult">
select * from tb_brand
where 1=1<if test="status!=null">and  status = #{status}</if>
<if test="companyName!=null and companyName!=''">and company_name like #{companyName}
</if>
<if test="brandName!=null and brandName!=''">and brand_name like #{brandName}
</if></select>//测试文件
查询-单条件-动态条件查询

从多个条件中选择一个

choose(when,otherwise):选择,类似于java中的switch语句

<!--   choose相当于switch when相当于case  -->
<!--    <select id="selectByConditionSingle" resultMap="brandResult" >-->
<!--        select * from tb_brand-->
<!--   where-->
<!--       <choose>-->
<!--       <when test="status!=null">-->
<!--           status = #{status}-->
<!--       </when>-->
<!--       <when test="companyName!=null and companyName!=''">-->
<!--           company_name like #{companyName}-->
<!--       </when>-->
<!--       <when test="brandName!=null and brandName!=''">-->
<!--           brand_name like #{brandName}-->
<!--       </when>-->
<!--        <otherwise>-->
<!--            1=1-->
<!--        </otherwise>-->
<!--   </choose>-->
<!--    </select>--><select id="selectByConditionSingle" resultMap="brandResult" >select * from tb_brand<where><choose><when test="status!=null">status = #{status}</when><when test="companyName!=null and companyName!=''">company_name like #{companyName}</when><when test="brandName!=null and brandName!=''">brand_name like #{brandName}</when></choose></where></select>

添加

1.编写接口方法:Mapper接口 void add(Brand brand)

参数:除了id之外的所有数据

结果:void

编写SQL语句:SQL映射文件

<insert id ="add">
insert into tb_brand(brand_name,company_name,ordered,description,status)
values(#{brandName},#{companyName},#{ordered},#{description},#{status});
</insert>
3.执行方法,测试
MyBatis事务:
openSession():默认开启事务,进行增删改查操作后需要使用sqlSession.commit();手动提交事务
openSession(true):可以设置为自动提交事务(关闭事务)
添加-主键返回

在数据添加成功后,需要获取插入数据库数据的主键的值

比如:添加订单和订单项

1.添加订单

2.添加订单项,订单项中需要设置所属订单的id

    <insert id="add" useGeneratedKeys="true" keyProperty="id">insert into tb_brand(brand_name,company_name,ordered,description,status)values(#{brandName},#{companyName},#{ordered},#{description},#{status})</insert>

返回添加数据的主键

<insert useGenneratedKeys="true" KeyProperty="id">

修改

修改-修改全部字段

方法顺序还是一样的:

1.编写接口方法:Mapper接口

参数:所有数据

结果:void

编写SQL语句:SQL映射文件

执行方法,测试

void update(Brand brand)<update id = "update">
update tb_brand
set brand_name = #{brandName}.
company_name = #{companyName}.
ordered=#{ordered},
description=#{description},
status=#{status}
where id = #{id};
</update>
修改-修改动态字段

有些数据我们不需要全部的修改,所以就存在单个修改,为了防止其null值出现,有标签,标签

   <update id="update">update tb_brand<set><if test="status!=null">status = #{status},</if><if test="ordered!=null">ordered = #{ordered},</if><if test="description!=null">description = #{description},</if><if test="brandName!=null">brand_name = #{brandName},</if><if test="companyName!=null">company_name = #{companyName},</if></set>where id = #{id}</update>

删除

删除一个
    void deleteById(int id);<delete id="deleteById">delete from tb_brand where id = #{id}</delete>
批量删除
void deleteByIds(@Param("ids") int[] ids);<!--  mybatis会将数组参数,封装为一个Map集合,以键值对形式存在,键为:array--><delete id="deleteByIds">delete from tb_brand where idin(<foreach collection="ids" item="id" >#{id}</foreach>)

参数封装

在这里插入图片描述

MyBatis提供了ParamNameResolver类进行参数封装

建议:将来都使用@Param注解来修改Map集合中默认的键名,并使用修改后的名称来获取值,这样可读性更高

注解完成增删改查

使用注解开发会比配置文件开发更加方便

@Select("select*from tb_user where id =#{id}")
public User selectById(int id)

查询:@Select

添加:@Insert

修改:@Update

删除:@Delete

注解完成简单功能

配置文件完成复杂功能

使用注解来映射简单语句会使代码显得更加简洁,但对于稍微复杂与一点的语句,Java注解不仅力不从心,还会让你本来就复杂的SQL语句更加混乱不堪。因此,如果你需要做一些复杂的操作,最好用XML来映射语句

id = #{id}


#### 批量删除```java
void deleteByIds(@Param("ids") int[] ids);<!--  mybatis会将数组参数,封装为一个Map集合,以键值对形式存在,键为:array--><delete id="deleteByIds">delete from tb_brand where idin(<foreach collection="ids" item="id" >#{id}</foreach>)

参数封装

[外链图片转存中…(img-ieMEGw2e-1731576949906)]

MyBatis提供了ParamNameResolver类进行参数封装

建议:将来都使用@Param注解来修改Map集合中默认的键名,并使用修改后的名称来获取值,这样可读性更高

注解完成增删改查

使用注解开发会比配置文件开发更加方便

@Select("select*from tb_user where id =#{id}")
public User selectById(int id)

查询:@Select

添加:@Insert

修改:@Update

删除:@Delete

注解完成简单功能

配置文件完成复杂功能

使用注解来映射简单语句会使代码显得更加简洁,但对于稍微复杂与一点的语句,Java注解不仅力不从心,还会让你本来就复杂的SQL语句更加混乱不堪。因此,如果你需要做一些复杂的操作,最好用XML来映射语句

选择何种方式类配置影视,以及认为是否因该要统一映射语句定义的形式,完成取决于你和你的团队。换句话说,永远不要拘泥于一种方式。你可以很轻松的基于注解和XML的语句映射方式间自由移植和切换。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android 项目依赖库无法找到的解决方案

目录 错误信息解析 解决方案 1. 检查依赖版本 2. 检查 Maven 仓库配置 3. 强制刷新 Gradle 缓存 4. 检查网络连接 5. 手动下载依赖 总结 相关推荐 最近&#xff0c;我在编译一个 Android 老项目时遇到了一个问题&#xff0c;错误信息显示无法找到 com.gyf.immersionba…

群控系统服务端开发模式-应用开发-前端登录接口开发

一、修改验证方法 1、修改验证器 loginRules: {username: [{required: true, trigger: blur, validator: validateUsername}],password: [{required: true, trigger: blur, validator: validatePassword}],captcha_code: [{required: true, trigger: blur, validator: validat…

java基础入门学习09-迭代器

文章目录 一、引言二、迭代器2.1 迭代器对象的创建2.2 迭代器的使用 一、引言 迭代器是设计模式的一种&#xff0c;迭代器模式提供方法来访问容器中的的元素&#xff0c;这听起来跟c语言中指针十分相似&#xff0c;其实数组访问中的指针本质上就是迭代器的一种。Iterrator对象…

深度解析:Android APP集成与拉起微信小程序开发全攻略

目录 一、背景以及功能介绍 二、Android开发示例 2.1 下载 SDK 2.2 调用接口 2.3 获取小程序原始Id 2.4 报错提示&#xff1a;bad_param 2.4.1 错误日志 2.4.2 解决方案 相关推荐 一、背景以及功能介绍 需求&#xff1a;产品经理需要APP跳转到公司的小程序(最好指定页…

Python学习26天

集合 # 定义集合 num {1, 2, 3, 4, 5} print(f"num&#xff1a;{num}\nnum数据类型为&#xff1a;{type(num)}") # 求集合中元素个数 print(f"num中元素个数为&#xff1a;{len(num)}") # 增加集合中的元素 num.add(6) print(num) # {1,2,3,4,5,6} # 删除…

python爬虫(二)爬取国家博物馆的信息

import requests from bs4 import BeautifulSoup# 起始网址 url https://www.chnmuseum.cn/zx/xingnew/index_1.shtml # 用于存储所有数据 all_data [] page 1 global_index 1 # 定义全局序号变量并初始化为1 while True:html_url requests.get(url).textif requests.get…

Android 单元测试环境配置问题 Execution failed for task ‘:mergeDebugJavaResource‘.

背景和挑战 随着人工智能&#xff08;AI&#xff09;技术的迅猛发展&#xff0c;AI在各行各业的应用前景被普遍看好。无论是在医疗、金融、教育&#xff0c;还是在软件开发领域&#xff0c;AI都展示出了巨大的潜力。然而&#xff0c;尽管AI能够在许多方面提供支持和提升效率&a…

无人机应用场景:石油管道巡检技术详解

无人机在石油管道巡检中的应用&#xff0c;以其高效、便捷、灵活的特点&#xff0c;为石油管道的安全管理提供了有力支持。以下是对无人机在石油管道巡检技术方面的详细解析&#xff1a; 一、无人机巡检技术的概述 无人机巡检技术是指利用无人机搭载各种传感器和检测设备&…

51c嵌入式~单片机合集2

我自己的原文哦~ https://blog.51cto.com/whaosoft/12362395 一、不同的电平信号的MCU怎么通信&#xff1f; 下面这个“电平转换”电路&#xff0c;理解后令人心情愉快。电路设计其实也可以很有趣。 先说一说这个电路的用途&#xff1a;当两个MCU在不同的工作电压下工作&…

嵌入式硬件实战基础篇(一)-STM32+DAC0832 可调信号发生器-产生方波-三角波-正弦波

引言&#xff1a;本内容主要用作于学习巩固嵌入式硬件内容知识&#xff0c;用于想提升下述能力&#xff0c;针对学习STM32与DAC0832产生波形以及波形转换&#xff0c;对于硬件的降压和对于前面硬件篇的实际运用&#xff0c;针对仿真的使用&#xff0c;具体如下&#xff1a; 设…

Qt主线程把数据发给子线程,主线程会阻塞吗

演示&#xff1a; #include <QCoreApplication> #include <QThread> #include <QObject> #include <QDebug>// 子线程类 class Worker : public QObject {Q_OBJECT public slots:void processData(int data) {qDebug() << "Processing dat…

C++内存池实现

1.内存池概念 内存池就和其他的池数据&#xff08;如线程池&#xff09;结构类似&#xff0c;由程序维护一个“池”结构来管理程序使用的内存&#xff0c;然后根据需要从内存池中申请使用内存或者向内存池中释放内存&#xff0c;来达到高效管理内存的目的。 在一般的内存管理的…

STM32设计学生宿舍监测控制系统

目录 前言 一、本设计主要实现哪些很“开门”功能&#xff1f; 二、电路设计原理图 电路图采用Altium Designer进行设计&#xff1a; 三、实物设计图 四、程序源代码设计 五、获取资料内容 前言 随着科技的飞速发展和智能化时代的到来&#xff0c;学生宿舍的安全、舒适…

企业如何提高招聘能力?

企业如何提高招聘能力&#xff1f; 许多企业在进行招聘工作时&#xff0c;常常会遇到各种问题和挑战。尽管付出了大量的时间和精力&#xff0c;但结果却并不总是如人意。例如&#xff0c;企业可能会经历一次又一次的面试&#xff0c;却仍然找不到一个能够适应岗位要求的合适人…

大模型在蓝鲸运维体系应用——蓝鲸运维开发智能助手

本文来自腾讯蓝鲸智云社区用户: CanWay 背景 1、运维转型背景 蓝鲸平台从诞生之初&#xff0c;就一直在不遗余力地推动运维转型&#xff0c;让运维团队可以通过一体化PaaS平台&#xff0c;快速编写脚本&#xff0c;编排流程&#xff0c;开发运维工具&#xff0c;从被动地提供…

3588 yolov8 onnx 量化转 rknn 并运行

本教程重点不在如何训练模型&#xff0c;重点是全流程链路&#xff0c;想学训练的可以网上找教程 环境 python 3.10.xrknn-toolkit2-2.2.0ultralytics_yolov8rknn 驱动版本2.2 模型训练 yolov8仓库地址&#xff1a;https://github.com/airockchip/ultralytics_yolov8.git下载…

Vue 组件通信及进阶语法

文章目录 一、scoped 样式冲突二、data 是一个函数三、组件通信1. 父子通信1.1 props 校验1.2 props 比较 data 2. 非父子通信2.1 event bus2.2 provide-inject 四、进阶语法1. v-model 详解2. sync 修饰符3. ref 和 $refs4. $nextTick 一、scoped 样式冲突 注意点&#xff1a;…

LeetCode105.从前序与中序遍历构造二叉树

题目要求 给定两个整数数组 preorder 和 inorder &#xff0c;其中 preorder 是二叉树的先序遍历&#xff0c; inorder 是同一棵树的中序遍历&#xff0c;请构造二叉树并返回其根节点。 提示: 1 < preorder.length < 3000inorder.length preorder.length-3000 < pr…

【问卷调研】HarmonyOS SDK开发者社区用户需求有奖调研

问卷请点击&#xff1a;HarmonyOS SDK开发者社区用户需求有奖调研

IOT物联网低代码可视化大屏解决方案汇总

目录 参考来源云服务商阿里云物联网平台产品主页产品文档 开源项目DGIOT | 轻量级工业物联网开源平台项目特点项目地址开源许可 IoTGateway | 基于.NET6的跨平台工业物联网网关项目特点项目地址开源许可 IoTSharp | 基于.Net Core开源的物联网基础平台项目特点项目地址开源许可…