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.rhkb.cn/news/93836.html

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

相关文章

易服客工作室:UberMenu WordPress插件 - 网站超级菜单插件

UberMenu WordPress插件是一个用户友好、高度可定制、响应迅速的 Mega Menu WordPress 插件。它与 WordPress 3 菜单系统一起开箱即用&#xff0c;易于上手&#xff0c;但功能强大&#xff0c;足以创建高度定制化和创意的大型菜单配置。 网址: UberMenu WordPress插件 - 网站超…

【hive】hive分桶表的学习

hive分桶表的学习 前言&#xff1a; 每一个表或者分区&#xff0c;hive都可以进一步组织成桶&#xff0c;桶是更细粒度的数据划分&#xff0c;他本质不会改变表或分区的目录组织方式&#xff0c;他会改变数据在文件中的分布方式。 分桶规则&#xff1a; 对分桶字段值进行哈…

Linux apt 命令

Linux apt 命令 apt&#xff08;Advanced Packaging Tool&#xff09;是一个在 Debian 和 Ubuntu 中的 Shell 前端软件包管理器。 apt 命令提供了查找、安装、升级、删除某一个、一组甚至全部软件包的命令&#xff0c;而且命令简洁而又好记。 apt 命令执行需要超级管理员权限…

爬虫逆向实战(十六)--某建筑市场平台

一、数据接口分析 主页地址&#xff1a;某建筑市场平台 1、抓包 通过抓包可以发现数据接口是list 2、判断是否有加密参数 请求参数是否加密&#xff1f; 无请求头是否加密&#xff1f; 无响应是否加密&#xff1f; 通过查看“响应”模块可以发现&#xff0c;返回的响应是…

Docker容器与虚拟化技术:Docker容器操作、网络模式

目录 一、理论 1.Docker 容器操作 2.Docker 网络 二、实验 1.Docker 容器操作 2.Docker 网络 2.Docker 的网络模式 三、问题 1. 批量删除所有容器未生效 2.使用bridge模式指定IP运行docker报错 3.未显示bridge网络模式名称 四、总结 一、理论 1.Docker 容器操作 &a…

Codeforces Round 893 (Div. 2) D.Trees and Segments

原题链接&#xff1a;Problem - D - Codeforces 题面&#xff1a; 大概意思就是让你在翻转01串不超过k次的情况下&#xff0c;使得a*&#xff08;0的最大连续长度&#xff09;&#xff08;1的最大连续长度&#xff09;最大&#xff08;1<a<n&#xff09;。输出n个数&…

【C++精华铺】8.C++模板初阶

目录 1. 泛型编程 2. 函数模板 2.1 函数模板的概念及格式 2.2 函数模板的原理 2.3 模板的实例化 2.4 模板参数的匹配原则 3. 类模板 3.1 类模板格式 3.2 类模板的实例化 1. 泛型编程 什么是泛型编程&#xff1f;泛型编程是避免使用某种具体类型而去使用某种通用类型来进行…

VirtualBox安装CentOS8.5

0 环境 win10 virtualbox版本 版本 7.0.10 r158379 (Qt5.15.2) 1.镜像下载 阿里镜像站 https://developer.aliyun.com/mirror/ 1.1 找到安装包下载地址 1.2 找到8.5版本 1.3 iso 再然后 1.4 选择安装包 我这里选的是最小安装包&#xff0c;centOS8.5最小安装版本&#…

VBA技术资料MF44:VBA_把数据从剪贴板粘贴到Excel

【分享成果&#xff0c;随喜正能量】人皆知以食愈饥&#xff0c;莫知以学愈愚,生命中所有的不期而遇都是你努力的惊喜.人越纯粹&#xff0c;就越能感受到美。大江、大河、大海、大山、大自然&#xff0c;这些风景从来都不会受“属于谁”的污染&#xff0c;人人都感受到它们的美…

Vue3和Vue2对比学习之全局 API 应用实例

文章目录 0.前言1.参考文档2.详细说明2.1 全局 API 应用实例 非兼容2.2 一个新的全局 API&#xff1a;createAppconfig.productionTip 移除config.ignoredElements 替换为 config.isCustomElementVue.prototype 替换为 config.globalPropertiesVue.extend 移除类型推断组件继承…

Jmeter 连接 MySQL 数据库脚本

1、创建线程组 2、创建 JDBC Connection Configuration 3、创建 JDBC Request 4、最终创建的目录 5、重点来了 5.1 在百度中下载个 MySQL-connector-Java-8.0.28.jar&#xff0c;放在 jmeter 的 bin 目录下 5.2 在测试计划中&#xff0c;将 jar 包添加到脚本中 5.3 输入参…

pycorrector一键式文本纠错工具,整合了BERT、MacBERT、ELECTRA、ERNIE等多种模型,让您立即享受纠错的便利和效果

pycorrector&#xff1a;一键式文本纠错工具&#xff0c;整合了Kenlm、ConvSeq2Seq、BERT、MacBERT、ELECTRA、ERNIE、Transformer、T5等多种模型&#xff0c;让您立即享受纠错的便利和效果 pycorrector: 中文文本纠错工具。支持中文音似、形似、语法错误纠正&#xff0c;pytho…

拿捏--->打印爱心(小心机表白)

文章目录 题目描述算法思路代码示例思路一思路二 题目描述 利用java语言编写算法在控制台打印爱心算法 算法思路代码示例 思路一 打印心形主要分为上下两部分&#xff0c;如图&#xff1a; 下边主要是一个倒立三角形&#xff0c;容易打印。 上边可以分为左右两部分&#…

python运算符

算术运算符 以下假设变量&#xff1a; a10&#xff0c;b20&#xff1a; 加 - 两个对象相加a b 输出结果 30-减 - 得到负数或是一个数减去另一个数a - b 输出结果 -10*乘 - 两个数相乘或是返回一个被重复若干次的字符串a * b 输出结果 200/除 - x除以y b / a 输出结果 2&…

如何快速优化 CnosDB 数据库性能与延迟:使用 Jaeger 分布式追踪系统

在正式的生产环境中&#xff0c;数据库的性能和延迟对于确保系统的稳定和高效运行至关重要。特别是在与 CnosDB 数据库进行交互时&#xff0c;更深入地了解其表现变得尤为重要。这时Jaeger 分布式追踪系统发挥了巨大的作用。在本篇博客中&#xff0c;我们将深入探讨如何通过使用…

使用Docker搭建MySQL主从复制(一主一从)

Docker安装MySQL docker pull mysql:5.7 docker images mysql安装步骤 1.新建主服务器容器实例3307 docker run -p 3307:3306 --name mysql-master -v /usr/local/docker/mysql5.7/data/mysql-master/logs:/var/log/mysql -v /usr/local/docker/mysql5.7/data/mysql-master/…

LangChain源码逐行解密之系统(二)

LangChain源码逐行解密之系统 20.2 serapi.py源码逐行剖析 我们可以看一下Google查询的例子,在LangChain中有多种实现的方式。 如图20-5所示,在utilities的serpapi.py代码文件中实现了SerpAPIWrapper。 图20- 5 utilities的serpapi.py的SerpAPIWrapper 在langchain目录的se…

《vue3实战》运用radio单选按钮或Checkbox复选框实现单选多选的试卷制作

文章目录 目录 系列文章目录 1.《Vue3实战》使用axios获取文件数据以及走马灯Element plus的运用 2.《Vue3实战》用路由实现跳转登录、退出登录以及路由全局守护 3.《vue3实战》运用Checkbox复选框实现单选多选的试卷展现&#xff08;本文&#xff09; 文章目录 前言 radio是什…

等保案例 6

用户简介 江苏省监狱管理局是江苏省司法厅管理下的副厅级部门管理机构&#xff0c;是主管全省监狱工作的机关。随着信息化的发展&#xff0c;江苏省监狱管理局的监狱业务对网络和信息系统的依赖不断增加&#xff0c;网络流转的信息量不断增大&#xff0c;信息化建设的需求也日…

Zabbix-6.4.4 邮箱告警SMS告警配置

目录 ​------------------------- # 邮箱告警 ---------------------------------- 1.安装mailx与postfix软件包 2.修改mailx配置文件 3. 创建文件夹 4. 编写mail-send.sh脚本 5. 将该脚本赋予执行权限 6. 进入web界面进行设置—> Alerts —> Media Types 7. 添…