Java Persistence APl(JPA)——JPA是啥? SpringBoot整合JPA JPA的增删改查 条件模糊查询 多对一查询

目录

  • 引出
  • Jpa是啥?
  • Jpa的使用
    • 创建实体类
    • 写dao接口类
    • 写服务类
  • crud增删改查
    • 增加
    • 修改
    • 根据id删除
    • 全查询
    • 分页查询
  • 条件查询模糊查询
    • 单条件查询
    • 多条件查询
    • 模糊查询
    • 排序查询
  • 多对一查询
    • 定义实体类
    • auto主键策略下新增
    • 进行全查询测试
  • 全部代码
    • application.yml配置类
    • pom配置文件
    • 实体类
      • Car实体类
      • Factory实体类
    • dao接口类
    • service服务类
    • 测试代码
  • 总结

引出


1.jpa是啥?java持久层的api,SpringBoot官方支持;
2.约定大于配置的理念,增删改查,save,deleteById,findAll;
3.多条件查询,and,or,like,约定大于配置;
4.多对一的查询,@ManyToOne;

在这里插入图片描述

Jpa是啥?

Spring Data JPA

在这里插入图片描述

JPA是Java Persistence API的缩写,是Java EE(Enterprise Edition)中用于实现对象关系映射(ORM)的一种规范。它提供了一组用于管理和持久化Java对象的API,使开发人员能够以面向对象的方式操作数据库。

JPA的目标是提供一种统一的、面向对象的数据访问方式,使开发人员能够更加方便地进行数据库操作,而不需要关注底层数据库的细节。它抽象了不同数据库之间的差异,提供了一套通用的API,使开发人员能够以相同的方式操作不同的数据库。

JPA的核心概念包括实体(Entity)、实体管理器(EntityManager)、持久化上下文(Persistence Context)等。开发人员可以通过注解或XML配置来定义实体类和数据库表之间的映射关系,然后使用EntityManager进行增删改查等数据库操作。

JPA的实现有很多,比较常用的有Hibernate、EclipseLink等。开发人员可以根据自己的需求选择合适的JPA实现框架来使用。

Jpa的使用

创建实体类

javax

  • @Entity

    @Table

    • @Id
    • @GeneratedValue(strategy) AUTO/IDENTITY(数据库自己的主键自增长策略???)
    • @Column

GenerationType.AUTO:会多一张表,记录键
GenerationType.IDENTITY:用数据库自增的主键
@GeneratedValue(strategy = GenerationType.IDENTITY) // 用数据库自增长策略

在jpa中,ddl-auto共分为四种:

spring.jpa.hibernate.ddl-auto = create ----每次启动SpringBoot程序时,没有表会新建表格,表内有数据会清空;

spring.jpa.hibernate.ddl-auto = create-drop ----每次启动SpringBoot程序时,会清空表数据;

spring.jpa.hibernate.ddl-auto = update ---- 每次启动SpringBoot程序时,没有表格会新建表格,表内有数据不会清空,只会更新;

spring.jpa.hibernate.ddl-auto = validate ---- 每次启动SpringBoot程序时,会校验实体类字段与数据库字段的类型是否相同,不同则会报错;

在这里插入图片描述

package com.tianju.jpa.entity;import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;import javax.persistence.*;
import java.math.BigDecimal;@Data
@NoArgsConstructor
@AllArgsConstructor// 表示这个实体类是和数据库表对应的
@Entity
@Table(name = "car_tab") // 对应的表名
public class Car {@Id // 是主键// GenerationType.AUTO:会多一张表,记录键// GenerationType.IDENTITY:用数据库自增的主键@GeneratedValue(strategy = GenerationType.IDENTITY) // 用数据库自增的策略@Column(name = "car_id")private Integer id;@Column(name = "car_num")private String carNum; // 车牌@Column(name = "car_brand")private String brand; // 品牌@Column(name = "car_color")private String color; // 颜色@Column(name = "car_price")private BigDecimal price; // 价格
}

在这里插入图片描述

写dao接口类

JpaRepository<Identity,String>:实体类以及主键的类型

在这里插入图片描述

package com.tianju.jpa.mapper;import com.tianju.jpa.entity.Car;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;/*** JpaRepository<Identity,String>:实体类以及主键的类型*/
@Repository // 用在持久化对象上,类似于mapper
public interface CarDao extends JpaRepository<Car,Integer> {
}

写服务类

package com.tianju.jpa.service.impl;import com.tianju.jpa.entity.Car;
import com.tianju.jpa.mapper.CarDao;
import com.tianju.jpa.service.ICarService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;@Service
public class CarServiceImpl implements ICarService {@Autowiredprivate CarDao carDao;@Overridepublic void add(Car car) {carDao.save(car);}
}

crud增删改查

增加

carDao.save(car);

在这里插入图片描述

插入多条数据

在这里插入图片描述

插入后的结果

在这里插入图片描述

修改

在这里插入图片描述

    @Overridepublic void update(Car car) {carDao.save(car);}@Overridepublic Car findById(int id) {Car car = carDao.findById(id).get();return car;}

根据id删除

在这里插入图片描述

    @Overridepublic void deleteById(int id) {carDao.deleteById(id);}

全查询

    @Overridepublic List<Car> findAll() {return carDao.findAll();}

在这里插入图片描述

分页查询

import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;

    @Overridepublic Page findByPage(int pageNum, int pageSize) {PageRequest pageRequest = PageRequest.of(pageNum, pageSize);Page<Car> carPage = carDao.findAll(pageRequest);return carPage;}

在这里插入图片描述

分页查询的sql

在这里插入图片描述

条件查询模糊查询

在这里插入图片描述

单条件查询

package com.tianju.jpa.mapper;import com.tianju.jpa.entity.Car;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;import java.util.List;/*** JpaRepository<Identity,String>:实体类以及主键的类型*/
@Repository // 用在持久化对象上,类似于mapper
public interface CarDao extends JpaRepository<Car,Integer> {List<Car> findCarsByColor(String color);
}

在这里插入图片描述

多条件查询

package com.tianju.jpa.mapper;import com.tianju.jpa.entity.Car;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;import java.util.List;/*** JpaRepository<Identity,String>:实体类以及主键的类型*/
@Repository // 用在持久化对象上,类似于mapper
public interface CarDao extends JpaRepository<Car,Integer> {List<Car> findCarsByColor(String color);List<Car> findByColorAndBrand(String color,String brand);List<Car> findByColorOrBrand(String color,String brand);}

在这里插入图片描述

or查询

在这里插入图片描述

模糊查询

package com.tianju.jpa.mapper;import com.tianju.jpa.entity.Car;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;import java.util.List;/*** JpaRepository<Identity,String>:实体类以及主键的类型*/
@Repository // 用在持久化对象上,类似于mapper
public interface CarDao extends JpaRepository<Car,Integer> {List<Car> findCarsByColor(String color);List<Car> findByColorAndBrand(String color,String brand);List<Car> findByColorOrBrand(String color,String brand);List<Car> findByBrandLike(String brand);}

在这里插入图片描述

排序查询

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

package com.tianju.jpa.service.impl;import com.tianju.jpa.entity.Car;
import com.tianju.jpa.mapper.CarDao;
import com.tianju.jpa.service.ICarService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Sort;
import org.springframework.stereotype.Service;import java.util.List;@Service
public class CarServiceImpl implements ICarService {@Autowiredprivate CarDao carDao;@Overridepublic void add(Car car) {carDao.save(car);}@Overridepublic void update(Car car) {carDao.save(car);}@Overridepublic Car findById(int id) {Car car = carDao.findById(id).get();return car;}@Overridepublic void deleteById(int id) {carDao.deleteById(id);}@Overridepublic List<Car> findAll() {return carDao.findAll();}@Overridepublic Page findByPage(int pageNum, int pageSize) {PageRequest pageRequest = PageRequest.of(pageNum, pageSize);Page<Car> carPage = carDao.findAll(pageRequest);return carPage;}@Overridepublic List<Car> findCarsByColor(String color) {return carDao.findCarsByColor(color);}@Overridepublic List<Car> findByColorAndBrand(String color, String brand) {return carDao.findByColorAndBrand(color, brand);}@Overridepublic List<Car> findByColorOrBrand(String color, String brand) {return carDao.findByColorOrBrand(color,brand);}@Overridepublic List<Car> findByBrandLike(String brand) {return carDao.findByBrandLike(brand);}@Overridepublic List<Car> orderByPrice() {Sort price = Sort.by(Sort.Direction.DESC, "price");return carDao.findAll(price);}
}

多对一查询

在这里插入图片描述

定义实体类

package com.tianju.jpa.entity;import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;import javax.persistence.*;
import java.math.BigDecimal;@Data
@NoArgsConstructor
@AllArgsConstructor// 表示这个实体类是和数据库表对应的
@Entity
@Table(name = "car_tab") // 对应的表名
public class Car {@Id // 是主键// GenerationType.AUTO:会多一张表,记录键// GenerationType.IDENTITY:用数据库自增的主键@GeneratedValue(strategy = GenerationType.IDENTITY) // 用数据库自增的策略@Column(name = "car_id")private Integer id;@Column(name = "car_num")private String carNum; // 车牌@Column(name = "car_brand")private String brand; // 品牌@Column(name = "car_color")private String color; // 颜色@Column(name = "car_price")private BigDecimal price; // 价格@ManyToOne@JoinColumn(name = "factory_id")private Factory factory; // 多对一的工厂
}
package com.tianju.jpa.entity;import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;import javax.persistence.*;/*** 生产车的工厂,多个车对应一个工厂*/@Data
@NoArgsConstructor
@AllArgsConstructor// 表示这个实体类是和数据库表对应的
@Entity
@Table(name = "car_factory") // 对应的表名public class Factory {@Id@GeneratedValue(strategy = GenerationType.AUTO)@Column(name = "factory_id")private Integer id;@Column(name = "factory_name")private String name;}

在这里插入图片描述

自动建的表

在这里插入图片描述

auto主键策略下新增

在这里插入图片描述

新增后的表

在这里插入图片描述

在这里插入图片描述

进行全查询测试

在这里插入图片描述

运行的SQL语句

在这里插入图片描述

全部代码

application.yml配置类

在jpa中,ddl-auto共分为四种:

spring.jpa.hibernate.ddl-auto = create ----每次启动SpringBoot程序时,没有表会新建表格,表内有数据会清空;

spring.jpa.hibernate.ddl-auto = create-drop ----每次启动SpringBoot程序时,会清空表数据;

spring.jpa.hibernate.ddl-auto = update ---- 每次启动SpringBoot程序时,没有表格会新建表格,表内有数据不会清空,只会更新;

spring.jpa.hibernate.ddl-auto = validate ---- 每次启动SpringBoot程序时,会校验实体类字段与数据库字段的类型是否相同,不同则会报错;

spring:datasource:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://192.168.111.130:3306/jpa_db?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8&allowMultiQueries=trueusername: rootpassword: 123jpa:# 允许显示sqlshow-sql: truehibernate:# 自动对表进行增删改查的操作,创建表# 可以开始的时候打开,等表创建好之后关闭ddl-auto: updateserver:port: 9089

pom配置文件

<?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>com.tianju.jpa</groupId><artifactId>spring-boot-jpa</artifactId><version>1.0-SNAPSHOT</version><properties><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><!--    起步依赖--><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.6.13</version></parent><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><scope>test</scope></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><!--mysql驱动--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><scope>runtime</scope></dependency><dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-openapi2-spring-boot-starter</artifactId><version>4.0.0</version></dependency><!--        Jpa的包--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-jpa</artifactId></dependency></dependencies></project>

实体类

Car实体类

package com.tianju.jpa.entity;import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;import javax.persistence.*;
import java.math.BigDecimal;@Data
@NoArgsConstructor
@AllArgsConstructor// 表示这个实体类是和数据库表对应的
@Entity
@Table(name = "car_tab") // 对应的表名
public class Car {@Id // 是主键// GenerationType.AUTO:会多一张表,记录键// GenerationType.IDENTITY:用数据库自增的主键@GeneratedValue(strategy = GenerationType.IDENTITY) // 用数据库自增的策略@Column(name = "car_id")private Integer id;@Column(name = "car_num")private String carNum; // 车牌@Column(name = "car_brand")private String brand; // 品牌@Column(name = "car_color")private String color; // 颜色@Column(name = "car_price")private BigDecimal price; // 价格@ManyToOne@JoinColumn(name = "factory_id")private Factory factory; // 多对一的工厂
}

Factory实体类

package com.tianju.jpa.entity;import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;import javax.persistence.*;/*** 生产车的工厂,多个车对应一个工厂*/@Data
@NoArgsConstructor
@AllArgsConstructor// 表示这个实体类是和数据库表对应的
@Entity
@Table(name = "car_factory") // 对应的表名public class Factory {@Id@GeneratedValue(strategy = GenerationType.AUTO)@Column(name = "factory_id")private Integer id;@Column(name = "factory_name")private String name;}

dao接口类

package com.tianju.jpa.mapper;import com.tianju.jpa.entity.Car;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;import java.util.List;/*** JpaRepository<Identity,String>:实体类以及主键的类型*/
@Repository // 用在持久化对象上,类似于mapper
public interface CarDao extends JpaRepository<Car,Integer> {List<Car> findCarsByColor(String color);List<Car> findByColorAndBrand(String color,String brand);List<Car> findByColorOrBrand(String color,String brand);List<Car> findByBrandLike(String brand);}

service服务类

package com.tianju.jpa.service.impl;import com.tianju.jpa.entity.Car;
import com.tianju.jpa.mapper.CarDao;
import com.tianju.jpa.service.ICarService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Sort;
import org.springframework.stereotype.Service;import java.util.List;@Service
public class CarServiceImpl implements ICarService {@Autowiredprivate CarDao carDao;@Overridepublic void add(Car car) {carDao.save(car);}@Overridepublic void update(Car car) {carDao.save(car);}@Overridepublic Car findById(int id) {Car car = carDao.findById(id).get();return car;}@Overridepublic void deleteById(int id) {carDao.deleteById(id);}@Overridepublic List<Car> findAll() {return carDao.findAll();}@Overridepublic Page findByPage(int pageNum, int pageSize) {PageRequest pageRequest = PageRequest.of(pageNum, pageSize);Page<Car> carPage = carDao.findAll(pageRequest);return carPage;}@Overridepublic List<Car> findCarsByColor(String color) {return carDao.findCarsByColor(color);}@Overridepublic List<Car> findByColorAndBrand(String color, String brand) {return carDao.findByColorAndBrand(color, brand);}@Overridepublic List<Car> findByColorOrBrand(String color, String brand) {return carDao.findByColorOrBrand(color,brand);}@Overridepublic List<Car> findByBrandLike(String brand) {return carDao.findByBrandLike(brand);}@Overridepublic List<Car> orderByPrice() {Sort price = Sort.by(Sort.Direction.DESC, "price");return carDao.findAll(price);}
}

测试代码

package com.tianju.jpa.mapper;import com.tianju.jpa.entity.Car;
import com.tianju.jpa.entity.Factory;
import com.tianju.jpa.service.ICarService;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.domain.Page;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;import java.math.BigDecimal;
import java.util.List;
import java.util.Random;import static org.junit.Assert.*;@SpringBootTest
@RunWith(SpringJUnit4ClassRunner.class)
public class CarDaoTest {@Autowiredprivate ICarService carService;@Testpublic void addCar(){for (int i =0;i<10;i++){double random = Math.round(Math.random() * 100) / 100.0 + 8888;
//            carService.add(new Car(null,"苏A888" +i,"BMW","红色",new BigDecimal(random)));}}@Testpublic void updateCar(){Car car = carService.findById(10);car.setCarNum("浙江888");carService.update(car);}@Autowiredprivate FactoryDao factoryDao;@Testpublic void addFactory(){factoryDao.save(new Factory(null,"上海工厂"));factoryDao.save(new Factory(null,"南京工厂"));factoryDao.save(new Factory(null,"山西工厂"));}@Testpublic void deleteById(){carService.deleteById(11);}@Testpublic void findCarsByColor(){List<Car> cars = carService.findCarsByColor("红色");cars.forEach(System.out::println);}@Testpublic void findCarsByColorAndBrand(){List<Car> cars = carService.findByColorAndBrand("红色","BYD");cars.forEach(System.out::println);}@Testpublic void findCarsByColorOrBrand(){List<Car> cars = carService.findByColorOrBrand("红色","BYD");cars.forEach(System.out::println);}@Testpublic void findByPage(){Page page = carService.findByPage(1, 3);page.forEach(car -> {System.out.println(car);});}@Testpublic void findAll(){List<Car> all = carService.findAll();all.forEach(car -> {System.out.println(car);});}@Testpublic void findLike(){List<Car> all = carService.findByBrandLike("B"+"%");all.forEach(car -> {System.out.println(car);});}@Testpublic void orderByPrice(){List<Car> all = carService.orderByPrice();all.forEach(car -> {System.out.println(car);});}public static void main(String[] args) {double random = Math.round(Math.random() * 100) / 100.0;System.out.println(random);}}

总结

1.jpa是啥?java持久层的api,SpringBoot官方支持;
2.约定大于配置的理念,增删改查,save,deleteById,findAll;
3.多条件查询,and,or,like,约定大于配置;
4.多对一的查询,@ManyToOne;

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

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

相关文章

Java反射机制是什么?

Java反射机制是 Java 语言的一个重要特性。 在学习 Java 反射机制前&#xff0c;大家应该先了解两个概念&#xff0c;编译期和运行期。 编译期是指把源码交给编译器编译成计算机可以执行的文件的过程。在 Java 中也就是把 Java 代码编成 class 文件的过程。编译期只是做了一些…

iPhone(iPad)安装deb文件

最简单的方法就是把deb相关的文件拖入手机对应的目录&#xff0c;一般是DynamicLibraries文件夹 参考&#xff1a;探讨手机越狱和安装deb文件的几种方式研究 1、在 Mac 上安装 dpkg 命令 打包 deb 教程之在 Mac 上安装 dpkg 命令_xcode打包root权限deb_qq_34810996的博客-CS…

驱动DAY4 字符设备驱动分步注册和ioctl函数点亮LED灯

头文件 #ifndef __HEAD_H__ #define __HEAD_H__ typedef struct{unsigned int MODER;unsigned int OTYPER;unsigned int OSPEEDR;unsigned int PUPDR;unsigned int IDR;unsigned int ODR; }gpio_t; #define PHY_LED1_ADDR 0X50006000 #define PHY_LED2_ADDR 0X50007000 #d…

一百五十八、Kettle——Kettle各版本及其相关安装包分享(网盘链接,不需积分、不需验证码) 持续更新、持续分享

一、目的 最近因为kettle9.3的shim问题看了好多博客&#xff0c;都没有网盘分享。后来有一位博主分享了kettle9.2的shim安装包&#xff0c;已经很感谢他&#xff0c;但是是博客分享&#xff0c;下载还需要搞验证码下载码之类的。 kettle9.2的shim安装包下载好后&#xff0c;一…

图数据库_Neo4j基于docker服务版安装_Neo4j Desktop桌面版安装---Neo4j图数据库工作笔记0004

然后我们来看看如何用docker来安装Neo4j community server 首先去执行docker pull neo4j:3.5.22-community 去拉取镜像 然后执行命令就可以安装了 可以用docker ps查看一下 看看暴露了哪些端口 然后再看一下访问一下这个时候,要用IP地址了注意 然后再来看一下安装Desktop 去下…

Sigmastar SSC8826Q 2K行车记录仪解决方案

一、方案描述 行车记录仪是智能辅助汽车驾驶&#xff0c;和管理行车生活的车联网智能终端设备&#xff0c;利用智能芯片处理器、GPS定位、网络通信、自动控制等技术&#xff0c;将与行车生活有关的各项数据有机地结合在一起。 行车记录仪如今已经成了必不可少的车载用品之一&…

双向-->带头-->循环链表

目录 一、双向带头循环链表概述 1.什么是双向带头循环链表 2.双向带头循环链表的优势 3.双向带头循环链表简图 二、双向带头循环链表的增删查改图解及代码实现 1.双向带头循环链表的头插 2.双向带头循环链表的尾插 3.双向带头循环链表的头删 4.双向带头循环链表的尾删…

ATF(TF-A) 威胁模型汇总

安全之安全(security)博客目录导读 目录计划如下&#xff0c;相关内容补充中&#xff0c;待完成后进行超链接&#xff0c;敬请期待&#xff0c;欢迎您的关注 1、通用威胁模型 2、SPMC威胁模型 3、EL3 SPMC威胁模型 4、fvp_r 平台威胁模型 5、RSS-AP接口威胁模型 威胁建模是安全…

浅学实战:探索PySpark实践,解锁大数据魔法!

文章目录 Spark和PySpark概述1.1 Spark简介1.2 PySpark简介 二 基础准备2.1 PySpark库的安装2.2 构建SparkContext对象2.3 SparkContext和SparkSession2.4 构建SparkSession对象2.5 PySpark的编程模型 三 数据输入3.1 RDD对象3.2 Python数据容器转RDD对象3.3 读取文件转RDD对象…

IDEA的常用设置,让你更快速的编程

一、前言 在使用JetBrains的IntelliJ IDEA进行软件开发时&#xff0c;了解和正确配置一些常用设置是非常重要的。IDEA的强大功能和定制性使得开发过程更加高效和舒适。 在本文中&#xff0c;我们将介绍一些常用的IDEA设置&#xff0c;帮助您更好地利用IDEA进行开发。这些设置包…

Java面向对象——封装以及this关键字

封 装 封装是面向对象编程&#xff08;OOP&#xff09;的三大特性之一&#xff0c;它将数据和操作数据的方法组合在一个单元内部&#xff0c;并对外部隐藏其具体实现细节。在Java中&#xff0c;封装是通过类的访问控制修饰符&#xff08;如 private、protected、public&#x…

Linux MQTT智能家居项目(智能家居界面布局)

文章目录 前言一、创建工程项目二、界面布局准备工作三、正式界面布局总结 前言 一、创建工程项目 1.选择工程名称和项目保存路径 2.选择QWidget 3.添加保存图片的资源文件&#xff1a; 在工程目录下添加Icon文件夹保存图片&#xff1a; 将文件放入目录中&#xff1a; …

网络层协议

网络层协议 IP协议基本概念协议头格式网段划分特殊的IP地址IP地址的数量限制私有IP地址和公网IP地址路由IP协议头格式后续 在复杂的网络环境中确定一个合适的路径 IP协议 承接上文&#xff0c;TCP协议并不会直接将数据传递给对方&#xff0c;而是交付给下一层协议&#xff0c;…

音视频FAQ(三):音画不同步

摘要 本文介绍了音画不同步问题的五个因素&#xff1a;编码和封装阶段、网络传输阶段、播放器中的处理阶段、源内容产生的问题以及转码和编辑。针对这些因素&#xff0c;提出了相应的解决方案&#xff0c;如使用标准化工具、选择强大的传输协议、自适应缓冲等。此外&#xff0…

uniapp微信小程序区分正式版,开发版,体验版

小程序代码区分是正式版&#xff0c;开发版&#xff0c;还是体验版 通常正式和开发环境需要调用不同域名接口&#xff0c;发布时需要手动更换 或者有些东西不想在正式版显示&#xff0c;只在开发版体验版中显示&#xff0c;也需要去手动隐藏 官方没有明确给出判断环境的方法&a…

SciencePub学术 | CCF推荐重点计算机SCIE征稿中

SciencePub学术 刊源推荐: CCF推荐重点计算机SCIE征稿中&#xff01;信息如下&#xff0c;录满为止&#xff1a; 一、期刊概况&#xff1a; CCF推荐重点SCIE简介 【期刊简介】IF&#xff1a;4.0&#xff0c;JCR2区&#xff0c;中科院3区&#xff1b; 【版面类型】正刊&#…

Swift 基础

工程目录 请点击下面工程名称&#xff0c;跳转到代码的仓库页面&#xff0c;将工程 下载下来 Demo Code 里有详细的注释 点击下载代码&#xff1a;swift-01

记录一下基于jeecg-boot3.0的待办消息移植记录

因为之前没有记录&#xff0c;所以还要看代码进行寻找&#xff0c;比较费劲&#xff0c;所以今天记录一下&#xff1a; 1、后端 SysAnnouncementController 下面函数增加待办的几个显示内容给前端用 具体代码如下&#xff1a; /*** 功能&#xff1a;补充用户数据&#xff0c…

由小波变换模极大值重建信号

给定信号&#xff0c; 令小波变换的尺度 则x(t)的二进小波变换为 令为取模极大值时的横坐标&#xff0c;那么就是模极大值。 目标是由坐标、模极大值及最后一级的低频分量重建信号x(t) 为了重建x(t)&#xff0c;假定有一信号集合h(t)&#xff0c;该集合中信号的小波变换和x(…

打印出二进制的奇数位和偶数位

void print(int a) {int i0;printf("奇数位&#xff1a;");for(i30;i>0;i-2){printf("%d ",(a>>i)&1);}printf("\n");printf("偶数位&#xff1a;");for(i31;i>1;i-2){printf("%d ",(a>>i)&1);} …