【Java-SpringBoot+Vue+MySql】Day3.3-MybatisPlus说明与使用

news2024/9/22 9:35:10

目录

一、MybatisPlus快速入门

1、知识轰炸

2、实操演练

(1)新建项目

(2)添加依赖

(3)添加配置

(4)添加映射层

(5)启动类中添加注解

(6)创建控制层

(7)添加控制类

(8)创建UserMapper接口

(9)创建用户实体类

(10)继续编写UserMapper接口 

 (10)在UserController类中实现UserMapper接口中的find方法

(11)修改返回值类型

(12)实现插入功能

(13)发现问题,解决问题

(14)使用MybatisPlus简化语法

查询:

 插入:

删除:

​修改:

二、多表查询及分页查询

1、知识轰炸

2、实操演练

多表查询

(1)建立关联表

表一:t_user

表二:t_order

  (2)创建Order类

(3)修改User类

(4)创建UserMapper映射

(5)创建OrderMapper映射

 条件查询

 条件构造器 | MyBatis-Plus

 分页查询


一、MybatisPlus快速入门

1、知识轰炸

 

 

2、实操演练

(1)新建项目

(2)添加依赖

<!-- 链接数据库 -->
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.4.2</version>
</dependency>
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.47</version>
</dependency>
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid-spring-boot-starter</artifactId>
    <version>1.1.20</version>
</dependency>

(3)添加配置

spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/test?useSSL=false
spring.datasource.username=root
spring.datasource.password=123456
mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl

 (注意:数据库、账号、密码改成自己的)

 

(4)添加映射层

(5)启动类中添加注解

mapper包右键copy path 选最后一项复制路径,添加到mapperscan中

(6)创建控制层

(7)添加控制类

package com.example.bilibili_demo02.controller;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class UserController {
    @GetMapping("/user")
    public String query(){
        return "查询用户";
    }
}

(8)创建UserMapper接口

 

package com.example.bilibili_demo02.mapper;

public interface UserMapper {
    //public List<>
}

 发现需要查询用户信息,将全部信息放入集合中。所以需要用户的实体类,立刻去创建。

(9)创建用户实体类

package com.example.bilibili_demo02.entity;

public class User {
    private int id;
    private String username;
    private String password;
    private String birthday;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getBirthday() {
        return birthday;
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", username='" + username + '\'' +
                ", password='" + password + '\'' +
                ", birthday='" + birthday + '\'' +
                '}';
    }

    public void setBirthday(String birthday) {
        this.birthday = birthday;
    }
}

(10)继续编写UserMapper接口 

package com.example.bilibili_demo02_1.mapper;

import com.example.bilibili_demo02_1.entity.User;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;

import java.util.List;
@Mapper
public interface UserMapper {
    @Select("select * from user")//后面不加分号
    public List<User> find();
}

 (10)在UserController类中实现UserMapper接口中的find方法

package com.example.bilibili_demo02_1.controller;

import com.example.bilibili_demo02_1.entity.User;
import com.example.bilibili_demo02_1.mapper.UserMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

@RestController
public class UserController {

    @Autowired
    private UserMapper userMapper;// @Autowired自动注入属性

    @GetMapping("/user")
    public String query(){
        List<User> list =  userMapper.find();
        System.out.println(list);
        return "查询用户";
    }
}

运行程序看看效果:

http://localhost:8080/user

 

(11)修改返回值类型

由于前后端分离项目中数据是json格式传递的,那么我们从数据库返回的数据类型就应该是List。List中的数据会自动转换成json格式数据传递到前端,这样前端拿到json格式的数据就方便展示了。

UserController类
package com.example.bilibili_demo02_1.controller;

import com.example.bilibili_demo02_1.entity.User;
import com.example.bilibili_demo02_1.mapper.UserMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

@RestController
public class UserController {

    @Autowired
    private UserMapper userMapper;// @Autowired自动注入属性

    @GetMapping("/user")
    public List query(){
        List<User> list =  userMapper.find();
        System.out.println(list);
        return list;
    }
}

 看看效果:

http://localhost:8080/user

(12)实现插入功能

 在UserMapper接口添加插入语句

@Insert("insert into user values (#{id},#{username},#{password},#{birthday})")
    public int insert(User user);//插入成功返回1,失败返回0

 UserController类中新增post请求

@PostMapping("/user")
    public String save(User user){
        int i = userMapper.insert(user);
        if (i>0){
            return "插入成功!";
        }else {
            return "插入失败!";
        }
    }

 在apipost中进行插入测试

 数据库中插入成功,因为没有给id赋值,所以默认为0。

(13)发现问题,解决问题

同样,再次不给id赋值插入数据会发生报错,因为id是主键,主键不能有相同值,为解决这个问题,我们在设计表时,给id字段加入自增条件即可。

(14)使用MybatisPlus简化语法

在UserMapper接口中继承BaseMapper

package com.example.bilibili_demo02_1.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.example.bilibili_demo02_1.entity.User;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;

import java.util.List;
@Mapper
public interface UserMapper extends BaseMapper<User> {
    //@Select("select * from user")//后面不加分号
    //public List<User> find();
    //@Insert("insert into user values (#{id},#{username},#{password},#{birthday})")
    //public int insert(User user);//插入成功返回1,失败返回0

}

继承BaseMapper后,传入User表,就可以直接使用BaseMapper类中写好的方法就行crud操作了。

(BaseMapper中的方法如下:)

 

 在UserController类中将find方法改为BaseMapper类自带的selectList方法

查询:

    @GetMapping("/user")
    public List query(){
        List<User> list =  userMapper.selectList(null);
        System.out.println(list);
        return list;
    }

 效果相同。

 插入:

@PostMapping("/user")
    public String save(User user){
        int i = userMapper.insert(user);
        if (i>0){
            return "插入成功!";
        }else {
            return "插入失败!";
        }
    }

删除:

    @PostMapping ("/user/del")
    public String remove(int id){
        userMapper.deleteById(id);
        return "删除成功!";
    }

 修改:

    @PostMapping("/user/upd")
    public String update(User user){
        userMapper.updateById(user);
        return "修改成功!";
    }

 

@TableName,当表名与实体类名称不一致时,可以使用@TableName注解进行关联。 @TableField,当表中字段名称与实体类属性不一致时,使用@TableField进行关联 @TableId,用于标记表中的主键字段,MybatisPlus也提供了主键生成策略 

 更多MyBatisPlus功能请到官网查阅:简介 | MyBatis-Plus

二、多表查询及分页查询

1、知识轰炸

MyBatisPlus对单表的查询做了增强,但是多表查询没有,多表查询需要用到的是Mybatis内容。

 

 

2、实操演练

多表查询

(1)建立关联表

表一:t_user

表二:t_order

 

 

  (2)创建Order类

表名和类名不对应需要加注解,在Order中添加一个不存在的字段User,用来进行数据库的映射。并添加对应的toString方法

package com.example.bilibili_demo02_1.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.springframework.format.annotation.DateTimeFormat;

import java.util.Date;

@TableName("t_order")
public class Order
{
    @TableId(type = IdType.AUTO)//获取自增id值
    private int id;
    //@DateTimeFormat(pattern="yyyy-MM-dd")
    //@TableField("ordertime")//表中的字段名字不一致使用该注解进行绑定
    //@JsonFormat(pattern="yyyy-MM-dd")
    @DateTimeFormat(pattern="yyyy-MM-dd")
    private String ordertime;//springboot实体类列不能输入大写字母
    private int total;
    private int uid;

    @TableField(exist = false)//表中不存在该属性,加注释
    
    private User user;//一个订单对应一个用户,在订单类中创建一个user属性

    @Override
    public String toString() {
        return "Order{" +
                "id=" + id +
                ", ordertime='" + ordertime + '\'' +
                ", total=" + total +
                ", uid=" + uid +
                ", user=" + user +
                '}';
    }

    public User getUser() {
        return user;
    }

    public void setUser(User user) {
        this.user = user;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getOrderTime() {
        return ordertime;
    }

    public void setOrderTime(String orderTime) {
        this.ordertime = orderTime;
    }

    public int getTotal() {
        return total;
    }

    public void setTotal(int total) {
        this.total = total;
    }

    public int getUid() {
        return uid;
    }

    public void setUid(int uid) {
        this.uid = uid;
    }

}

(3)修改User类

表名和类名不对应需要加注解,在User中添加一个不存在的字段Order,用来进行数据库的映射。并添加对应的toString方法

package com.example.bilibili_demo02_1.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;

import java.util.List;

//如果类名和表名不一致,那么为了使用MybatisPlus减少工作量
//这里可以使用注释,将User类名与数据库表名进行绑定
//@TableName("表名")
//根据这个注释MybatisPlus会自动找到这张表
@TableName("t_user")
public class User {
    @TableId(type = IdType.AUTO)//获取自增id值
    private int id;
    private String username;
    private String password;
    private String birthday;

    //描述用户所有订单
    @TableField(exist = false)//告诉MybatisPlus orders字段在数据库中是不存在的,避免使用BaseMapper时出现错误
    private List<Order> orders;

    //在User中添加一个不存在的字段,用来进行数据库的映射。并添加对应的toString方法
    public List<Order> getOrders() {
        return orders;
    }

    public void setOrders(List<Order> orders) {
        this.orders = orders;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getBirthday() {
        return birthday;
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", username='" + username + '\'' +
                ", password='" + password + '\'' +
                ", birthday='" + birthday + '\'' +
                ", orders=" + orders +
                '}';
    }

    public void setBirthday(String birthday) {
        this.birthday = birthday;
    }
}

(4)创建UserMapper映射

package com.example.bilibili_demo02_1.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.example.bilibili_demo02_1.entity.User;
import org.apache.ibatis.annotations.*;

import java.util.List;
@Mapper
public interface UserMapper extends BaseMapper<User> {//User是类名同时也是数据库的表名,在没有特殊注释下二者必须保持一致
    @Select("select * from t_user where id =#{id}")
    User selectById(int id);
    //查询用户所有订单
    @Select("select * from t_user")//此数查询表名用的t_user,所以User类中的注解就失效了@TableName("t_user")
    @Results( {
            @Result(column = "id", property = "id"),
            @Result(column = "username", property = "username"),
            @Result(column = "password", property = "password"),
            @Result(column = "birthday", property = "birthday"),
            @Result(column = "id", property = "orders", javaType = List.class,
                    many = @Many(select = "com.example.bilibili_demo02_1.mapper.OrderMapper.selectById")//将id传递给selectById(id)
                    //全路径copy path
                    //一个用户有多个订单,用many注解
            ),
    })
    List<User> selectAllOrdersAndUser();
}

在Controller编写方法查询用户和订单(一对多)

 

    @GetMapping("user/findAll")
    public List<User> find(){
        return userMapper.selectAllOrdersAndUser();
    }

 

 

(5)创建OrderMapper映射

package com.example.bilibili_demo02_1.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.example.bilibili_demo02_1.entity.Order;
import com.example.bilibili_demo02_1.entity.User;
import org.apache.ibatis.annotations.*;

import java.util.List;

@Mapper
public interface OrderMapper extends BaseMapper<Order> {
    @Select("select * from t_order where uid = #{uid}")
    List<Order> selectByUid(int uid);
    //查询所有订单,同时查询订单的用户
    @Select("select * from t_order")
    @Results({//@Results的基本用法。当数据库字段名与实体类对应的属性名不一致时,
            // 可以使用@Results映射来将其对应起来。column为数据库字段名,
            // porperty为实体类属性名,jdbcType为数据库字段数据类型,id为是否为主键。
            @Result(column = "id",property="id"),
            @Result(column = "ordertime",property="ordertime"),
            @Result(column = "total",property="total"),
            @Result(column = "uid",property="user",javaType = User.class,
                one = @One(select = "com.example.bilibili_demo02_1.mapper.UserMapper.selectById")
            ),

    })
    List<Order> selectOneOrdersAndUser();//这个方法不在OrderController实现,要在UserMapper中实现
}

在控制层创建OrderController编写方法,查询用户和订单(一对一)

package com.example.bilibili_demo02_1.controller;

import com.example.bilibili_demo02_1.entity.Order;
import com.example.bilibili_demo02_1.entity.User;
import com.example.bilibili_demo02_1.mapper.OrderMapper;
import com.example.bilibili_demo02_1.mapper.UserMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

@RestController
public class OrderController {
    @Autowired
    private OrderMapper orderMapper;// @Autowired自动注入属性
    @GetMapping("/order")
    public List query(){
        List<Order> list =  orderMapper.selectList(null);
        System.out.println(list);
        return list;
    }
    @GetMapping("/order/findAll")
    public List findAll(){
        List orders = orderMapper.selectOneOrdersAndUser();
        return orders;
    }
}

条件查询

MybatisPlus条件查询

 条件构造器 | MyBatis-Plus

使用MybatisPlus的语法糖通过条件构造器进行符合条件的查询

在UserController创建以下代码进行测试

    //条件查询
    @GetMapping("/user/find")
    public List<User> findByCond(){
        QueryWrapper<User> queryWrapper = new QueryWrapper();
        queryWrapper.eq("username","111");
        return userMapper.selectList(queryWrapper);//条件查询
    }

http://localhost:8080/user/find 

 

 单表查询使用MybatisPlus非常便捷,多表查询使用sql或者consults注解。

 分页查询

在user表中多添加一些数据

 定义分页查询的配置类

 

package com.example.bilibili_demo02_1.config;

import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.InnerInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class MybatisPlusConfig {
    @Bean
    public MybatisPlusInterceptor paginationInterceptor(){
        MybatisPlusInterceptor mybatisPlusInterceptor = new MybatisPlusInterceptor();
        PaginationInnerInterceptor paginationInnerInterceptor = new PaginationInnerInterceptor(DbType.MYSQL);//选择数据库类型
        mybatisPlusInterceptor.addInnerInterceptor(paginationInnerInterceptor);
        return mybatisPlusInterceptor;
    }
}

在UserController中编写分页测试代码

起始页0,每页两条数据

    //分页查询
    @GetMapping("/user/findBypage")
    public IPage findByPage(){
        //设置其实值及每页条数
        Page<User> page = new Page<>(0,2);
        IPage iPage = userMapper.selectPage(page,null);//分页查询,查询条件为null
        return iPage;
    }

起始页0,每页两条数据 

 

 

参考:Notion – The all-in-one workspace for your notes, tasks, wikis, and databases.

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

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

相关文章

【通过Data Studio连接openGauss】---快速入门

【通过Data Studio连接openGauss】---快速入门 &#x1f53b; 一、访问openGauss&#x1f530; 1.1 确认连接信息&#xff08;单节点&#xff09;&#x1f530; 1.2 使用gsql访问openGauss&#xff08;本地连接数据库&#xff09;&#x1f530; 1.3 使用gsql访问openGauss&…

玩机搞机------安卓手机分区操作中的的各种工具 提取分区 备份分区 檫除分区 推荐一

喜欢玩机搞机的朋友们经常对手机系统进行安装玩机操作。但有时候指令类输入和操作步骤比较繁琐。耽误时间。有些工具就比较方便操作。陆续会整理一些玩机搞机中的简单工具给爱好者使用。本期整理一些关于手机分区的工具推荐 &#x1f494;&#x1f494;&#x1f494; AB AVB分…

Android的详细介绍

目录&#xff1a; Android诞生 Android系统架构 Android系统版本 Android应用开发特色 Android诞生 2003年10月&#xff0c;Andy Rubin等人创建了Android公司&#xff0c;并组建了Android团队。 2005年8月17日&#xff0c;Google低调收购了成立仅22个月的高科技企…

【新星计划·2023】Linux目录结构

作者&#xff1a;Insist-- 个人主页&#xff1a;insist--个人主页 作者会持续更新网络知识和python基础知识&#xff0c;期待你的关注 前言 本文将讲解Linux目录结构与功能&#xff0c;以及目录解释&#xff0c;最近这段时间会持续更新关于Linux的基础知识&#xff0c;期待你的…

机器视觉初步6-1:基于梯度的图像分割

把基于梯度的图像分割单独拿出来。 文章目录 一、图像梯度相关算子的原理1. Sobel算子2. Prewitt算子3. Roberts算子 二、python和halcon算子实现1.python实现2.halcon实现 基于梯度的图像分割方法利用像素之间的梯度信息来进行图像分割。 梯度 1是图像中像素灰度值变化最快的…

macOS Monterey 12.6.7 (21G651) 正式版发布,ISO、IPSW、PKG 下载

macOS Monterey 12.6.7 (21G651) 正式版发布&#xff0c;ISO、IPSW、PKG 下载 本站下载的 macOS 软件包&#xff0c;既可以拖拽到 Applications&#xff08;应用程序&#xff09;下直接安装&#xff0c;也可以制作启动 U 盘安装&#xff0c;或者在虚拟机中启动安装。另外也支持…

macOS Big Sur 11.7.8 (20G1351) 正式版 ISO、PKG、DMG、IPSW 下载

macOS Big Sur 11.7.8 (20G1351) 正式版 ISO、PKG、DMG、IPSW 下载 本站下载的 macOS 软件包&#xff0c;既可以拖拽到 Applications&#xff08;应用程序&#xff09;下直接安装&#xff0c;也可以制作启动 U 盘安装&#xff0c;或者在虚拟机中启动安装。另外也支持在 Window…

Windows 10 |VMware开启虚拟化的最全面说明

前言&#xff1a; Windows作为工作机&#xff0c;对于计算机系的同学来说&#xff0c;主要是在于利用图形化的界面直观的创建虚拟机&#xff08;典型的有代表性的是virtualbox和VMware这两家公司的桌面级虚拟化软件&#xff09;&#xff0c;尤其是小白这样的初学者&#xff0c…

吴恩达ChatGPT《Prompt Engineering》笔记

ChatGPT 提示词工程师教程 1. 课程介绍 1.1 ChatGPT 相关术语 LLM&#xff1a;Large Language Model&#xff0c;大语言模型 Instruction Tuned LLM&#xff1a;经过指令微调的大语言模型 Prompt&#xff1a;提示词 RLHF&#xff1a;Reinforcement Learning from Human F…

英特尔oneAPI人工智能黑客松 - 机器视觉挑战案例

写在前面&#xff1a;博主是一只经过实战开发历练后投身培训事业的“小山猪”&#xff0c;昵称取自动画片《狮子王》中的“彭彭”&#xff0c;总是以乐观、积极的心态对待周边的事物。本人的技术路线从Java全栈工程师一路奔向大数据开发、数据挖掘领域&#xff0c;如今终有小成…

K8S 生态周报| Kubernetes 公布两个全版本受影响的漏洞

“ 「K8S 生态周报」内容主要包含我所接触到的 K8S 生态相关的每周值得推荐的一些信息。欢迎订阅知乎专栏「k8s生态」[1]。 ” 大家好&#xff0c;我是张晋涛。 KIND v0.20.0 正式发布 KIND 是我一直参与&#xff0c;也日常一直在使用的项目&#xff0c;用于快速的在本地或者 C…

强化学习:AI领域的下一步里程碑

第一章&#xff1a;引言 近年来&#xff0c;人工智能&#xff08;AI&#xff09;的快速发展引起了全球范围内的广泛关注。在AI的众多技术领域中&#xff0c;强化学习&#xff08;Reinforcement Learning&#xff09;作为一种类似于人类学习的方式&#xff0c;在解决复杂问题方…

VMware虚拟机中安装Ubuntu20.04小白教程

安装Ubuntu20.04 1.Ubuntu镜像下载2.配置Ubuntu 2.1创建新的虚拟机&#xff0c;进入新建虚拟机向导2.2选择自定义类型配置2.3选择硬件兼容性2.4选择稍后安装操作系统2.5选择客户机操作系统2.6命名虚拟机2.7处理器配置2.8 虚拟机内存2.9配置网络类型2.10选择I/O控制器类型2.11选…

webpakc原理之开发一个清除console.log(xxx)的loader

一、webpack中清除console的方法 当然想要清除console我们可以使用babel-loader结合babel-plugin-transform-remove-console插件来实现。 安装babel-loader和babel-plugin-transform-remove-console插件 npm install babel-loader babel-plugin-transform-remove-console -D…

TOGAF10®标准中文版--(阶段B — 业务架构)方法

4.5 方法 业务架构是能力、端到端价值交付、信息和组织结构的整体、多维业务视图的表示&#xff1b;以及这些业务视图和战略、产品、政策、计划和利益相关者之间的关系。 业务架构将业务元素与业务目标和其他领域的要素联系起来。 4.5.1 概述 业务架构知识是任何其他领域&a…

HIFUSE:用于医学图像分类的分层多尺度特征融合网络

文章目录 HIFUSE: HIERARCHICAL MULTI-SCALE FEATURE FUSION NETWORK FOR MEDICAL IMAGE CLASSIFICATION摘要本文方法实验结果 HIFUSE: HIERARCHICAL MULTI-SCALE FEATURE FUSION NETWORK FOR MEDICAL IMAGE CLASSIFICATION 摘要 在卷积神经网络&#xff08;CNN&#xff09;的…

Spring核心容器——从配置文件到注解开发 创建对象+成员变量赋值 增强方法

目录 引出Spring入门案例初识Spring入门案例1----用配置文件实现 Druid JDBCTemplate dao1.之前的方式&#xff1a;new对象2.用配置文件的方法把new对象交给Spring3.如果要用对象&#xff0c;从spring的容器中获取ac.getBean("userDao");4.实体类和dao层的代码--问…

NodeFormer:一种用于节点分类的可扩展图结构学习Transformer

文章目录 NodeFormer: A Scalable Graph Structure Learning Transformer for Node ClassificationAbstract方法General Model and Key ChallengesEfficient Learning Discrete Structures可微随机结构学习Input Structures as Relational BiasLearning Objective NodeFormer: …

网络的基础介绍

文章目录 1. 网络发展2. 认识 "协议"3. 网络协议初识3.1 协议分层 4. OSI七层模型4.1 TCP/IP五层(或四层)模型 5. 网络传输基本流程5.1 同一个网段内的主机文件传输5.2 认识MAC地址5.3 跨网段的主机文件传输 6. 数据包封装和分用 1. 网络发展 很早之前&#xff0c;计…

基于强化学习(Reinforcement learning,RL)的机器人路径规划MATLAB

一、Q-learning算法 Q-learning算法是强化学习算法中的一种&#xff0c;该算法主要包含&#xff1a;Agent、状态、动作、环境、回报和惩罚。Q-learning算法通过机器人与环境不断地交换信息&#xff0c;来实现自我学习。Q-learning算法中的Q表是机器人与环境交互后的结果&#…