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 {

    @Autowired
    private CarDao carDao;

    @Override
    public void add(Car car) {
        carDao.save(car);

    }
}

crud增删改查

增加

carDao.save(car);

在这里插入图片描述

插入多条数据

在这里插入图片描述

插入后的结果

在这里插入图片描述

修改

在这里插入图片描述

    @Override
    public void update(Car car) {
        carDao.save(car);
    }

    @Override
    public Car findById(int id) {
        Car car = carDao.findById(id).get();
        return car;
    }

根据id删除

在这里插入图片描述

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

全查询

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

在这里插入图片描述

分页查询

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

    @Override
    public 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 {

    @Autowired
    private CarDao carDao;

    @Override
    public void add(Car car) {
        carDao.save(car);

    }

    @Override
    public void update(Car car) {
        carDao.save(car);
    }

    @Override
    public Car findById(int id) {
        Car car = carDao.findById(id).get();
        return car;
    }

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

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

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

    @Override
    public List<Car> findCarsByColor(String color) {
        return carDao.findCarsByColor(color);
    }

    @Override
    public List<Car> findByColorAndBrand(String color, String brand) {
        return carDao.findByColorAndBrand(color, brand);
    }

    @Override
    public List<Car> findByColorOrBrand(String color, String brand) {
        return carDao.findByColorOrBrand(color,brand);
    }

    @Override
    public List<Car> findByBrandLike(String brand) {
        return carDao.findByBrandLike(brand);
    }

    @Override
    public 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.Driver
    url: jdbc:mysql://192.168.111.130:3306/jpa_db?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8&allowMultiQueries=true
    username: root
    password: 123

  jpa:
    # 允许显示sql
    show-sql: true
    hibernate:
      # 自动对表进行增删改查的操作,创建表
      # 可以开始的时候打开,等表创建好之后关闭
      ddl-auto: update


server:
  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 {

    @Autowired
    private CarDao carDao;

    @Override
    public void add(Car car) {
        carDao.save(car);

    }

    @Override
    public void update(Car car) {
        carDao.save(car);
    }

    @Override
    public Car findById(int id) {
        Car car = carDao.findById(id).get();
        return car;
    }

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

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

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

    @Override
    public List<Car> findCarsByColor(String color) {
        return carDao.findCarsByColor(color);
    }

    @Override
    public List<Car> findByColorAndBrand(String color, String brand) {
        return carDao.findByColorAndBrand(color, brand);
    }

    @Override
    public List<Car> findByColorOrBrand(String color, String brand) {
        return carDao.findByColorOrBrand(color,brand);
    }

    @Override
    public List<Car> findByBrandLike(String brand) {
        return carDao.findByBrandLike(brand);
    }

    @Override
    public 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 {

    @Autowired
    private ICarService carService;

    @Test
    public 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)));

        }
    }
    @Test
    public void updateCar(){
        Car car = carService.findById(10);
        car.setCarNum("浙江888");
        carService.update(car);
    }

    @Autowired
    private FactoryDao factoryDao;

    @Test
    public void addFactory(){
        factoryDao.save(new Factory(null,"上海工厂"));
        factoryDao.save(new Factory(null,"南京工厂"));
        factoryDao.save(new Factory(null,"山西工厂"));

    }

    @Test
    public void deleteById(){
        carService.deleteById(11);
    }
    @Test
    public void findCarsByColor(){
        List<Car> cars = carService.findCarsByColor("红色");
        cars.forEach(System.out::println);
    }
    @Test
    public void findCarsByColorAndBrand(){
        List<Car> cars = carService
                .findByColorAndBrand(
                        "红色","BYD");
        cars.forEach(System.out::println);
    }
    @Test
    public void findCarsByColorOrBrand(){
        List<Car> cars = carService
                .findByColorOrBrand(
                        "红色","BYD");
        cars.forEach(System.out::println);
    }
    @Test
    public void findByPage(){
        Page page = carService
                .findByPage(1, 3);
        page.forEach(car -> {
            System.out.println(car);
        });
    }
    @Test
    public void findAll(){
        List<Car> all = carService.findAll();
        all.forEach(car -> {
            System.out.println(car);
        });
    }
    @Test
    public void findLike(){
        List<Car> all = carService.findByBrandLike("B"+"%");
        all.forEach(car -> {
            System.out.println(car);
        });
    }
    @Test
    public 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;

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

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

相关文章

K8S核心组件etcd详解(上)

1 介绍 https://etcd.io/docs/v3.5/ etcd是一个高可用的分布式键值存储系统&#xff0c;是CoreOS&#xff08;现在隶属于Red Hat&#xff09;公司开发的一个开源项目。它提供了一个简单的接口来存储和检索键值对数据&#xff0c;并使用Raft协议实现了分布式一致性。etcd广泛应用…

国产化系统中遇到的视频花屏、卡顿以及延迟问题的记录与总结

目录 1、国产化系统概述 1.1、国产化操作系统与国产化CPU 1.2、国产化服务器操作系统 1.3、当前国产化系统的主流配置 2、视频解码花屏与卡顿问题 2.1、视频解码花屏 2.2、视频解码卡顿 2.3、关于I帧和P帧的说明 3、国产显卡处理速度慢导致图像卡顿问题 3.1、视频延…

【Android Framework (十二) 】- 智能硬件设备开发

文章目录 前言智能硬件的定义与应用智能硬件产品开发流程智能硬件开发所涉及的技术体系概述关于主板选型主板CPU芯片的选择关于串口通信 总结 前言 针对我过往工作经历&#xff0c;曾在一家智能科技任职Android开发工程师&#xff0c;简单介绍下关于任职期间接触和开发过的一些…

后端返回图片资源错误404,前端使用默认图片

后端返回的图片资源可能会因为各种原因&#xff08;后台误删&#xff0c;地址更改未及时更新&#xff0c;损毁&#xff09;出现无法展示的情况&#xff0c;比如这种报错 就会导致图片资源错误&#xff0c;页面出现这种情况 用户体验很不好&#xff0c;为了改善这种情况&#xf…

第6章:支持向量机

间隔与支持向量 w为法向量&#xff0c;决定的是超平面的方向。b是偏移项&#xff0c;决定了超平面与原点之间的距离。 为什么最大化间隔&#xff0c;得到的就是最优平面呢&#xff1f; 当超平面没有正确划分正负样本时&#xff0c;几何间隔为负数。几何间隔&#xff0c;各个…

chatglm llm实时流api接口及post访问

参考&#xff1a; https://github.com/THUDM/ChatGLM-6B/pull/573/commits/02947052eefe392fd9f9632894e9551a805c6109 https://github.com/THUDM/ChatGLM-6B/pull/573 1、代码&#xff1a; 提前安装&#xff1a; sse_starlette、fastapi python stream_api.pystream_api.p…

ssm社区管理与服务系统源码和论文

ssm社区管理与服务的设计与实现031 开发工具&#xff1a;idea 数据库mysql5.7 数据库链接工具&#xff1a;navcat,小海豚等 技术&#xff1a;ssm 研究背景 当今时代是飞速发展的信息时代。在各行各业中离不开信息处理&#xff0c;这正是计算机被广泛应用于信息管理系统的…

安装和配置 Ansible

安装和配置 Ansible 按照下方所述&#xff0c;在控制节点 control.area12.example.com 上安装和配置 Ansible&#xff1a; 安装所需的软件包 创建名为 /home/curtis/ansible/inventory 的静态清单文件&#xff0c;以满足以下要求&#xff1a; node1 是 dev 主机组的成员 node2 …

MYSQL 作业三

创建一个student表格&#xff1a; create table student( id int(10) not null unique primary key, name varchar(20) not null, sex varchar(4), birth year, department varchar(20), address varchar(50) ); 创建一个score表格 create table score( id int(10) n…

开发测试框架一 - 创建springboot工程及基础操作

一、创建及运行方式 1. 从官网导入&#xff1a; 注意&#xff1a;由于我的java版本是1.8&#xff1b;所以选中了spring2.7.14&#xff1b;如果你的java版本是9及以上&#xff0c;选中spring3相关的同时Java 版本也要对应起来 2. 创建第一个get请求 创建Controller package及…

opencv实战项目 手势识别-手势控制鼠标

手势识别系列文章目录 手势识别是一种人机交互技术&#xff0c;通过识别人的手势动作&#xff0c;从而实现对计算机、智能手机、智能电视等设备的操作和控制。 1. opencv实现手部追踪&#xff08;定位手部关键点&#xff09; 2.opencv实战项目 实现手势跟踪并返回位置信息&…

2019年9月全国计算机等级考试真题(C语言二级)

2019年9月全国计算机等级考试真题&#xff08;C语言二级&#xff09; 第1题 1、“商品”与“顾客”两个实体集之间的联系一般是 A. 一对一 B. 一对多 C. 多对一 D. 多对多 正确答案&#xff1a;D 第2题 定义学生选修课程的关系模式&#xff1a;SC&#xff08;S#&#xff0c…

.netcore grpc双向流方法详解

一、双向流处理概述 简单来讲客户端可以向服务端发送消息流&#xff0c;服务端也可以向客户端传输响应流&#xff0c;即客户端和服务端可以互相通讯客户端无需发送消息即可开始双向流式处理调用 。 客户端可选择使用 RequestStream.WriteAsync 发送消息。 使用 ResponseStream…

Golang 基础语法问答

使用值为 nil 的 slice、map 会发生什么&#xff1f; 允许对值为 nil 的 slice 添加元素&#xff0c;但是对值为 nil 的 map 添加元素时会造成运行时 panic。 // map错误示例 func main() {var m map[string]intm["one"] 1 // error: panic: assignment to entry …

(5)所有角色数据分析页面的构建-5

所有角色数据分析页面&#xff0c;包括一个时间轴柱状图、六个散点图、六个柱状图(每个属性角色的生命值/防御力/攻击力的max与min的对比)。 """绘图""" from pyecharts.charts import Timeline from find_type import FindType import pandas …

特殊链表(循环单链表,循环双链表,静态链表)

目录 1.循环单链表的初始化 2.循环双链表 3. 静态链表 (1)静态链表的初始化 (2)静态链表的插入 1.循环单链表的初始化 typedef int ElemType; typedef struct LNode{ElemType data;struct LNode *next;}LNode,*LinkList;bool InitList(LinkList &L) {L(LNode*)malloc(…

微服务基础概念【内含图解】

目录 拓展补充&#xff1a; 单体架构 分布式架构 面向服务的体系结构 云原生 微服务架构 什么是微服务&#xff1f; 微服务定义 拓展补充&#xff1a; 单体架构 单体架构&#xff1a;将业务的所有功能集中在一个项目中开发&#xff0c;最终打成一个包部署 优点&#x…

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

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

uniapp小程序实现上传图片功能,并显示上传进度

效果图&#xff1a; 实现方法&#xff1a; 一、通过uni.chooseMedia(OBJECT)方法&#xff0c;拍摄或从手机相册中选择图片或视频。 官方文档链接: https://uniapp.dcloud.net.cn/api/media/video.html#choosemedia uni.chooseMedia({count: 9,mediaType: [image,video],so…

Apache-DBUtils

目录 封装方法 引出dbutils 案例 当关闭connection后&#xff0c;resultset结果集就无法使用了&#xff0c;这就使得resultset不利于数据的管理 封装方法 我们可以将结果集先存储在一个集合中&#xff0c;当connection关闭后&#xff0c;我们可以通过访问集合来访问结果集 …