SpringBoot(整合MyBatis + MyBatis-Plus + MyBatisX插件使用)
文章目录
-
- 1.整合MyBatis
-
-
- 1.需求分析
- 2.数据库表设计
- 3.数据库环境配置
-
- 1.新建maven项目
- 2.pom.xml 引入依赖
- 3.application.yml 配置数据源
- 4.Application.java 编写启动类
- 5.测试
- 6.配置类切换druid数据源
- 7.测试数据源是否成功切换
- 4.Mybatis基础配置
-
- 1.编写映射表的bean
- 2.MonsterMapper.java 编写mapper接口
- 3.MonsterMapper.xml 编写mapper.xml实现mapper接口
- 4.application.yml 扫描mapper.xml配置文件的位置
- 5.测试
- 5.MyBatis高级配置
-
- 1.方式一:在application.yml中配置mybatis.config-location指定mybatis-config.xml配置文件的位置
- 2.方式二:直接在application.yml中配置
- 6.继续编写Service层和Controller层
-
- 1.MonsterService.java
- 2.MonsterServiceImpl.java
- 3.测试
- 4.MonsterController.java
- 5.测试
- 6.解决时间问题
- 7.完整文件目录
-
- 2.整合MyBatis-Plus
-
-
- 1.MyBatis-Plus基本介绍
- 2.数据库表设计
- 3.数据库环境配置
-
- 1.创建maven项目
- 2.pom.xml 导入依赖
- 3.application.yml 配置数据源
- 4.DruidDataSourceConfig.java 配置类切换druid数据源
- 5.编写启动类Application.java,测试运行
- 4.MyBatis-Plus基础配置
-
- 1.编写映射表的bean
- 2.MonsterMapper.java 编写Mapper接口
- 3.测试接口方法使用
- 5.MyBatis-Plus高级配置
-
- application.yml 进行配置
- 6.继续编写Service层和Controller层
-
- 1.MonsterService.java
- 2.MonsterServiceImpl.java
- 3.测试
- 4.细节说明
- 5.MonsterController.java
- 7.细节说明
-
- 1.@MapperScan 扫描包下的所有Mapper
-
- 启动类配置注解
- 2.@TableName bean的类名与表名不一致时使用
- image-20240317200951971
- 3.MyBatis引入了哪些依赖
- 8.MyBatisX快速开发
-
- 1.安装插件
- 2.使用方式
-
- 1.挑一个带小鸟的方法
- 2.直接alt + Enter
- 3.生成sql语句
- 4.查看生成的方法
- 5.点击左边的小鸟就可以直接跳转到指定方法或者xml
- 9.完整文件目录
- 10.MyBatis-Plus小结
-
1.整合MyBatis
1.需求分析
2.数据库表设计
CREATE DATABASE `springboot_mybatis`;use `springboot_mybatis`;CREATE TABLE `monster` (`id` INT NOT NULL AUTO_INCREMENT,`age` INT NOT NULL, `birthday` DATE DEFAULT NULL, `email` VARCHAR(255) DEFAULT NULL,`gender` char(1) DEFAULT NULL,`name` VARCHAR(255) DEFAULT NULL, `salary` DOUBLE NOT NULL,PRIMARY KEY (`id`)
);SELECT * FROM `monster`;insert into monster values(null, 20, '2000-11-11', 'nmw@sohu.com', '男', '牛魔王', 5000.88);
insert into monster values(null, 10, '2011-11-11', 'bgj@sohu.com', '女', '白骨精', 2000.00);
3.数据库环境配置
1.新建maven项目
2.pom.xml 引入依赖
<!--导入springboot父工程--><parent><artifactId>spring-boot-starter-parent</artifactId><groupId>org.springframework.boot</groupId><version>2.5.3</version></parent><!--引入相关依赖--><dependencies><!--常规依赖--><!--web场景启动器--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!--lombok--><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><!--引入测试场景启动器--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><!--配置处理器--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-configuration-processor</artifactId><optional>true</optional></dependency><!--数据库配置--><!--引入data-jdbc数据源--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-jdbc</artifactId></dependency><!--mysql依赖使用版本仲裁--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><scope>runtime</scope></dependency><!-- 引入 druid 依赖 --><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.1.17</version></dependency><!--MyBatis场景启动器--><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.2.2</version></dependency></dependencies>
3.application.yml 配置数据源
-
数据库名
-
用户名
-
密码
-
驱动是mysql8的(因为上面使用了版本仲裁)
server:
port: 8080
spring:
datasource: #配置数据源
url: jdbc:mysql://localhost:3306/springboot_mybatis?useSSL=false&useUnicode=true&characterEncoding=UTF-8
username: root
password: root
driver-class-name: com.mysql.cj.jdbc.Driver
4.Application.java 编写启动类
package com.sun.springboot.mybatis;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;/*** @author 孙显圣* @version 1.0*/
@SpringBootApplication
public class Application {public static void main(String[] args) {SpringApplication.run(Application.class, args);}
}
5.测试
package com.sun.springboot.mybatis;import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.jdbc.core.JdbcTemplate;import javax.annotation.Resource;/*** @author 孙显圣* @version 1.0*/
@SpringBootTest
public class ApplicationTest {//依赖注入@Resourceprivate JdbcTemplate jdbcTemplate;@Testpublic void t1() {//查看目前数据源System.out.println(jdbcTemplate.getDataSource().getClass());}
}
6.配置类切换druid数据源
package com.sun.springboot.mybatis.config;import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.support.http.StatViewServlet;
import com.alibaba.druid.support.http.WebStatFilter;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;import javax.sql.DataSource;
import java.sql.SQLException;
import java.util.Arrays;/*** @author 孙显圣* @version 1.0*/
@Configuration
public class DruidDataSourceConfig {//注入一个德鲁伊数据源@ConfigurationProperties("spring.datasource") //读取yaml配置文件的参数,获取数据源配置@Beanpublic DataSource dataSource() throws SQLException {DruidDataSource druidDataSource = new DruidDataSource();druidDataSource.setFilters("stat, wall"); //开启sql监控return druidDataSource;}//配置德鲁伊监控sql功能@Beanpublic ServletRegistrationBean statViewServlet() {StatViewServlet statViewServlet = new StatViewServlet();ServletRegistrationBean<StatViewServlet> registrationBean =new ServletRegistrationBean<>(statViewServlet, "/druid/*");//配置登录监控页面用户名和密码registrationBean.addInitParameter("loginUsername", "root");registrationBean.addInitParameter("loginPassword", "root");return registrationBean;}//配置webStatFilter@Beanpublic FilterRegistrationBean webStatFilter() {WebStatFilter webStatFilter = new WebStatFilter();FilterRegistrationBean<WebStatFilter> filterRegistrationBean =new FilterRegistrationBean<>(webStatFilter);//默认对所有 URL 请求监控filterRegistrationBean.setUrlPatterns(Arrays.asList("/*"));//排除 URLfilterRegistrationBean.addInitParameter("exclusions", "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*");return filterRegistrationBean;}
}
7.测试数据源是否成功切换
package com.sun.springboot.mybatis;import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.jdbc.core.JdbcTemplate;import javax.annotation.Resource;/*** @author 孙显圣* @version 1.0*/
@SpringBootTest
public class ApplicationTest {//依赖注入@Resourceprivate JdbcTemplate jdbcTemplate;@Testpublic void t1() {//查看目前数据源System.out.println(jdbcTemplate.getDataSource().getClass());}
}
4.Mybatis基础配置
1.编写映射表的bean
package com.sun.springboot.mybatis.bean;import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;import java.util.Date;/*** @author 孙显圣* @version 1.0*/
@Data
public class Monster {private Integer id;private Integer age;@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone="GMT+8")private Date birthday;private String email;private String name;private String gender;private Double salary;
}
2.MonsterMapper.java 编写mapper接口
-
使用注解注入容器
package com.sun.springboot.mybatis.mapper;
import com.sun.springboot.mybatis.bean.Monster;
import org.apache.ibatis.annotations.Mapper;/**
- @author 孙显圣
- @version 1.0
*/
@Mapper //将接口注入容器
public interface MonsterMapper {
public Monster getMonsterById(Integer id);
}
3.MonsterMapper.xml 编写mapper.xml实现mapper接口
-
使用namespace指定要实现的接口
<?xml version="1.0" encoding="UTF-8" ?> select * from monster where id = #{id}
4.application.yml 扫描mapper.xml配置文件的位置
-
扫描类路径下mapper文件夹下的所有文件
mybatis:
#指定要扫描的mapper.xml
mapper-locations: classpath:mapper/*.xml
5.测试
package com.sun.springboot.mybatis;import com.sun.springboot.mybatis.bean.Monster;
import com.sun.springboot.mybatis.mapper.MonsterMapper;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.jdbc.core.JdbcTemplate;import javax.annotation.Resource;/*** @author 孙显圣* @version 1.0*/
@SpringBootTest
public class ApplicationTest {//依赖注入@Resourceprivate JdbcTemplate jdbcTemplate;//注意这里注入的是MonsterMapper的代理对象@Resourceprivate MonsterMapper monsterMapper;@Testpublic void t1() {//查看目前数据源System.out.println(jdbcTemplate.getDataSource().getClass());}@Testpublic void t2() {//测试mybatisMonster monsterById = monsterMapper.getMonsterById(1);System.out.println(monsterById);}
}
5.MyBatis高级配置
1.方式一:在application.yml中配置mybatis.config-location指定mybatis-config.xml配置文件的位置
2.方式二:直接在application.yml中配置
mybatis:#指定要扫描的mapper.xmlmapper-locations: classpath:mapper/*.xml#配置类型别名包,这样只要在这个包下的类型都可以简写type-aliases-package: com/sun/springboot/mybatis/bean#输出日志configuration:log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
6.继续编写Service层和Controller层
1.MonsterService.java
package com.sun.springboot.mybatis.service;import com.sun.springboot.mybatis.bean.Monster;/*** @author 孙显圣* @version 1.0*/
public interface MonsterService {public Monster getMonsterById(Integer id);
}
2.MonsterServiceImpl.java
package com.sun.springboot.mybatis.service.Impl;import com.sun.springboot.mybatis.bean.Monster;
import com.sun.springboot.mybatis.mapper.MonsterMapper;
import com.sun.springboot.mybatis.service.MonsterService;
import org.springframework.stereotype.Service;import javax.annotation.Resource;/*** @author 孙显圣* @version 1.0*/
@Service
public class MonsterServiceImpl implements MonsterService {@Resourceprivate MonsterMapper monsterMapper; //返回代理对象@Overridepublic Monster getMonsterById(Integer id) {return monsterMapper.getMonsterById(id);}
}
3.测试
package com.sun.springboot.mybatis;import com.sun.springboot.mybatis.bean.Monster;
import com.sun.springboot.mybatis.mapper.MonsterMapper;
import com.sun.springboot.mybatis.service.MonsterService;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.jdbc.core.JdbcTemplate;import javax.annotation.Resource;/*** @author 孙显圣* @version 1.0*/
@SpringBootTest
public class ApplicationTest {//依赖注入@Resourceprivate MonsterService monsterService;@Testpublic void getMonsterById() {Monster monsterById = monsterService.getMonsterById(1);System.out.println(monsterById);}
}
4.MonsterController.java
package com.sun.springboot.mybatis.Controller;import com.sun.springboot.mybatis.bean.Monster;
import com.sun.springboot.mybatis.service.MonsterService;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.ResponseBody;import javax.annotation.Resource;/*** @author 孙显圣* @version 1.0*/
@Controller
public class MonsterController {@Resourceprivate MonsterService monsterService;@GetMapping("/getMonster/{id}") //路径参数的请求@ResponseBody //响应一个jsonpublic Monster getMonsterById(@PathVariable("id") Integer id) {Monster monsterById = monsterService.getMonsterById(id);return monsterById;}
}
5.测试
6.解决时间问题
7.完整文件目录
2.整合MyBatis-Plus
1.MyBatis-Plus基本介绍
2.数据库表设计
CREATE DATABASE `springboot_mybatisplus`;USE `springboot_mybatisplus`;CREATE TABLE `monster` (
`id` INT NOT NULL AUTO_INCREMENT,
`age` INT NOT NULL,
`birthday` DATE DEFAULT NULL,
`email` VARCHAR(255) DEFAULT NULL,
`gender` CHAR(1) DEFAULT NULL,
`name` VARCHAR(255) DEFAULT NULL,
`salary` DOUBLE NOT NULL,
PRIMARY KEY (`id`)
);
SELECT * FROM `monster`;
INSERT INTO monster VALUES(NULL, 20, '2000-11-11', 'xzj@sohu.com', '男', ' 蝎 子 精 ',
15000.88);
INSERT INTO monster VALUES(NULL, 10, '2011-11-11', 'ytj@sohu.com', '女', ' 玉 兔 精 ',
18000.88);
3.数据库环境配置
1.创建maven项目
2.pom.xml 导入依赖
<!--导入springboot父工程--><parent><artifactId>spring-boot-starter-parent</artifactId><groupId>org.springframework.boot</groupId><version>2.5.3</version></parent><!--引入相关依赖--><dependencies><!--常规依赖--><!--web场景启动器--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!--lombok--><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><!--引入测试场景启动器--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><!--配置处理器--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-configuration-processor</artifactId><optional>true</optional></dependency><!--数据库配置--><!--mysql依赖使用版本仲裁--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><scope>runtime</scope></dependency><!-- 引入 druid 依赖 --><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.1.17</version></dependency><!--引入MyBatis-Plus场景启动器,会自动引入jdbc和MyBatis--><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.4.3</version></dependency></dependencies>
3.application.yml 配置数据源
-
数据库名称
-
用户名
-
密码
server:
port: 8080
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/springboot_mybatisplus?useSSL=false&useUnicode=true&characterEncoding=UTF-8
username: root
password: root
4.DruidDataSourceConfig.java 配置类切换druid数据源
package com.sun.springboot.mybatisplus.config;import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.support.http.StatViewServlet;
import com.alibaba.druid.support.http.WebStatFilter;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;import javax.sql.DataSource;
import java.sql.SQLException;
import java.util.Arrays;/*** @author 孙显圣* @version 1.0*/
@Configuration
public class DruidDataSourceConfig {//注入一个德鲁伊数据源@ConfigurationProperties("spring.datasource") //读取yaml配置文件的参数,获取数据源配置@Beanpublic DataSource dataSource() throws SQLException {DruidDataSource druidDataSource = new DruidDataSource();druidDataSource.setFilters("stat, wall"); //开启sql监控return druidDataSource;}//配置德鲁伊监控sql功能@Beanpublic ServletRegistrationBean statViewServlet() {StatViewServlet statViewServlet = new StatViewServlet();ServletRegistrationBean<StatViewServlet> registrationBean =new ServletRegistrationBean<>(statViewServlet, "/druid/*");//配置登录监控页面用户名和密码registrationBean.addInitParameter("loginUsername", "root");registrationBean.addInitParameter("loginPassword", "root");return registrationBean;}//配置webStatFilter@Beanpublic FilterRegistrationBean webStatFilter() {WebStatFilter webStatFilter = new WebStatFilter();FilterRegistrationBean<WebStatFilter> filterRegistrationBean =new FilterRegistrationBean<>(webStatFilter);//默认对所有 URL 请求监控filterRegistrationBean.setUrlPatterns(Arrays.asList("/*"));//排除 URLfilterRegistrationBean.addInitParameter("exclusions", "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*");return filterRegistrationBean;}
}
5.编写启动类Application.java,测试运行
package com.sun.springboot.mybatisplus;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;/*** @author 孙显圣* @version 1.0*/
@SpringBootApplication
public class Application {public static void main(String[] args) {SpringApplication.run(Application.class, args);}
}
4.MyBatis-Plus基础配置
1.编写映射表的bean
package com.sun.springboot.mybatisplus.bean;import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;import java.util.Date;/*** @author 孙显圣* @version 1.0*/
@Data
public class Monster {private Integer id;private Integer age;@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")private Date birthday;private String email;private String name;private String gender;private Double salary;
}
2.MonsterMapper.java 编写Mapper接口
package com.sun.springboot.mybatisplus.mapper;import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.sun.springboot.mybatisplus.bean.Monster;
import org.apache.ibatis.annotations.Mapper;/*** @author 孙显圣* @version 1.0*/
//直接继承BaseMapper接口
@Mapper //注入容器
public interface MonsterMapper extends BaseMapper<Monster> {//如果提供的方法不够用再自定义方法
}
3.测试接口方法使用
package com.sun.springboot.mybatisplus;import com.sun.springboot.mybatisplus.bean.Monster;
import com.sun.springboot.mybatisplus.mapper.MonsterMapper;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;import javax.annotation.Resource;/*** @author 孙显圣* @version 1.0*/
@SpringBootTest
public class MonsterMapperTest {//注入针对Mapper接口的代理对象@Resourceprivate MonsterMapper monsterMapper;@Testpublic void t1() {Monster monster = monsterMapper.selectById(1);System.out.println(monster);}
}
5.MyBatis-Plus高级配置
application.yml 进行配置
#进行mybatis-plus配置
mybatis-plus:configuration:log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
6.继续编写Service层和Controller层
1.MonsterService.java
package com.sun.springboot.mybatisplus.service.Impl;import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.sun.springboot.mybatisplus.bean.Monster;
import com.sun.springboot.mybatisplus.mapper.MonsterMapper;
import com.sun.springboot.mybatisplus.service.MonsterService;
import org.springframework.stereotype.Service;/*** 这里* @author 孙显圣* @version 1.0*/
@Service
public class MonsterServiceImpl extends ServiceImpl<MonsterMapper, Monster> implements MonsterService {//自定义方法实现
}
2.MonsterServiceImpl.java
package com.sun.springboot.mybatisplus.service.Impl;import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.sun.springboot.mybatisplus.bean.Monster;
import com.sun.springboot.mybatisplus.mapper.MonsterMapper;
import com.sun.springboot.mybatisplus.service.MonsterService;
import org.springframework.stereotype.Service;/*** 这里* @author 孙显圣* @version 1.0*/
@Service
public class MonsterServiceImpl extends ServiceImpl<MonsterMapper, Monster> implements MonsterService {//自定义方法实现
}
3.测试
package com.sun.springboot.mybatisplus;import com.sun.springboot.mybatisplus.bean.Monster;
import com.sun.springboot.mybatisplus.mapper.MonsterMapper;
import com.sun.springboot.mybatisplus.service.MonsterService;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;import javax.annotation.Resource;/*** @author 孙显圣* @version 1.0*/
@SpringBootTest
public class MonsterServiceTest {@Resourceprivate MonsterService monsterService;@Testpublic void t1() {Monster byId = monsterService.getById(2);System.out.println(byId);}
}
4.细节说明
- 简单来说就是MonsterServiceImpl只需要实现MonsterService接口的方法
- 可以调用IService接口的方法,也可以调用MonsterService接口的方法
5.MonsterController.java
package com.sun.springboot.mybatisplus.controller;import com.sun.springboot.mybatisplus.bean.Monster;
import com.sun.springboot.mybatisplus.service.MonsterService;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.ResponseBody;import javax.annotation.Resource;/*** @author 孙显圣* @version 1.0*/
@Controller
public class MonsterController {@Resource//注入的是MonsterServiceImpl的bean对象,可以直接调用IService接口的方法private MonsterService monsterService;@GetMapping("/getMonster/{id}")@ResponseBodypublic Monster getMonsterById(@PathVariable("id") Integer id) {Monster byId = monsterService.getById(id);return byId;}
}
7.细节说明
1.@MapperScan 扫描包下的所有Mapper
启动类配置注解
2.@TableName bean的类名与表名不一致时使用
3.MyBatis引入了哪些依赖
8.MyBatisX快速开发
1.安装插件
2.使用方式
1.挑一个带小鸟的方法
2.直接alt + Enter
3.生成sql语句
4.查看生成的方法
5.点击左边的小鸟就可以直接跳转到指定方法或者xml
9.完整文件目录
10.MyBatis-Plus小结
相关文章:
SpringBoot(整合MyBatis + MyBatis-Plus + MyBatisX插件使用)
文章目录 1.整合MyBatis 1.需求分析2.数据库表设计3.数据库环境配置 1.新建maven项目2.pom.xml 引入依赖3.application.yml 配置数据源4.Application.java 编写启动类5.测试6.配置类切换druid数据源7.测试数据源是否成功切换 4.Mybatis基础配置 1.编写映射表的bean2.MonsterMap…...
【2024最新】基于Springboot+Vue的网上图书商城平台Lw+PPT
作者:计算机搬砖家 开发技术:SpringBoot、php、Python、小程序、SSM、Vue、MySQL、JSP、ElementUI等,“文末源码”。 专栏推荐:SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏:Java精选实战项…...
JAVA-面向对象基础
文章目录 概要封装多态抽象类接口内部类为什么需要内部类 概要 面向对象是一种编程范式或设计哲学,它将软件系统设计为由多个对象组成,这些对象通过特定的方式相互作用 封装 将数据和操作数据的方法封装在一个类中,并通过访问修饰符控制对…...
Y3编辑器官方文档1:编辑器简介及菜单栏详解(文件、编辑、窗口、细节、调试)
文章目录 一、新建项目二、 编辑器主界面2.1 游戏场景2.2 导航栏/菜单栏2.3 功能栏三、菜单栏详细介绍3.1 文件3.1.1 版本管理3.1.2 项目管理(多关卡)3.1.2.1 多关卡功能说明3.1.2.2 关卡切换与关卡存档3.2 编辑3.2.1 通用设置3.2.2 键位设置3.3 窗口(日志)3.4 细节3.4.1 语言…...
力扣94题:二叉树的中序遍历
力扣94题:二叉树的中序遍历(C语言实现详解) 题目描述 给定一个二叉树的根节点 root ,返回它的中序遍历(Inorder Traversal)。 中序遍历的规则是: 先访问左子树;再访问根节点&…...
【数据结构】二叉树的性质和存储结构
性质 在二叉树的第i层上至多有2^{i-1}个结点,至少有1个结点 深度为k的二叉树至多有2^{k-1}个结点(k≥1),至少有k个结点 对任何一棵二叉树T,如果其叶子数为n0,度为2的结点数为n2,则n0n21 具有n个结点的完…...
【Spring项目】图书管理系统
阿华代码,不是逆风,就是我疯 你们的点赞收藏是我前进最大的动力!! 希望本文内容能够帮助到你!! 目录 一:项目实现准备 1:需求 (1)登录 2:准备…...
TCP编程案例
笔记:(本题可能需要的) TCP协议: TCP协议进行通信的两个应用进程:客户端、服务端。 使用TCP协议前,须先建立TCP连接,形成基于字节流的传输数据通道 传输前,采用“三次握手”方式…...
PyTorch 实现动态输入
使用 PyTorch 实现动态输入:支持训练和推理输入维度不一致的 CNN 和 LSTM/GRU 模型 在深度学习中,处理不同大小的输入数据是一个常见的挑战。许多实际应用需要模型能够灵活地处理可变长度的输入。本文将介绍如何使用 PyTorch 实现支持动态输入的 CNN 和…...
网络数据库
创建删除修改模式create schemadrop schema表create tabledrop tablealter table视图create view drop view索引create indexdrop index alter index 定义模式:create schema 《模式名》 authorization 《用户名》表定义语句 视图定义语句 授权定义语句//未指…...
【软考速通笔记】系统架构设计师⑲——专业英语
文章目录 一、前言二、常用名词三、架构风格四、非功能需求五、应用架构六、软件架构重用 一、前言 笔记目录大纲请查阅:【软考速通笔记】系统架构设计师——导读 二、常用名词 名词翻译architecture架构system系统design设计requirements需求components组件constr…...
Android APP自学笔记
摘抄于大学期间记录在QQ空间的一篇自学笔记,当前清理空间,本来想直接删除掉的,但是感觉有些舍不得,因此先搬移过来。 Android导入已有外部数据库 2015.06.26在QQ空间记录:在Android中不能直接打开res aw目录中的数据…...
Spring 事务和事务传播机制
Spring 事务和事务传播机制 一、Spring 事务的基本概念 事务是一组操作,被视为一个不可分割的工作单元,要么全部完成,要么全部失败回滚,以此来确保数据的一致性和完整性。Spring事务管理允许我们在应用程序中声明式地或编程式地…...
VSCode(四)CMake调试
1. 工具准备 1.1 C环境插件 1.2 CMake插件 2. Cmake工程 2.1 创建项目文件夹 ex:CMAKE_TEST 2.2 创建CMake工程 (shift ctl P), 选择"CMAKE: Quick Start": 2.3 填写project name: (ex: test_cmake) 2.4 选择”Executable“ 项目文件内会自动…...
创建存储过程
在student数据库中,创建一个名为ST_CHAXUN_01的存储过程,该存储过程返回计算机系学生的“姓名”、“性别”、“出生日期”信息。 操作步骤如下: ① 在“对象资源管理器”窗格中,展开“数据库”结点。 ② 单击相应的数据库&#…...
macOS 15.1.1 (24B2091) 系统中快捷键符号及其代表的按键的对照表
以下是 macOS 15.1.1 (24B2091) 系统中快捷键符号及其代表的按键的对照表: 符号按键名称描述⌘Command (Cmd)常用的功能键,用于执行大多数快捷操作。⌥Option (Alt)Option 键,常用于辅助操作和特殊字符输入。⇧ShiftShift 键,常用…...
ftp服务器搭建-安装、配置及验证
ftp服务器搭建-安装、配置及验证 #安装 sudo apt-get install vsftpd #配置文件 cat > /etc/vsftpd.conf << "EOF" listenNO listen_ipv6YES anonymous_enableNO local_enableYES write_enableYES dirmessage_enableYES use_localtimeYES xferlog_enable…...
windows ping 执行过程分析
控制台 PS C:\Users\Admin> ping mcs.zijieapi.com正在 Ping mcs.zijieapi.com [223.109.117.226] 具有 32 字节的数据: 来自 223.109.117.226 的回复: 字节32 时间31ms TTL49 来自 223.109.117.226 的回复: 字节32 时间30ms TTL49 来自 223.109.117.226 的回复: 字节32 时…...
强大的远程同步工具-rsync
rsync 强大的远程同步工具,也可用于本地目录和本地目录的同步,它最大的特点就是会自动判断进行增量同步; # “演示文档”后加了/,代表传输的是文件,建议destination也指定一个目录,该目录可以不存在&…...
蝉联第一 | IDC云系统软件市场报告2024H1,云轴科技ZStack独立云厂商第一
2024年12月,根据全球知名的IT市场研究和咨询公司IDC最新发布的《中国云系统软件市场跟踪报告2024H1》显示,2024年上半年中国云系统软件市场规模达到27.93亿元人民币,同比增长11.6%。在这一增长趋势中,云轴科技ZStack作为云系统软件…...
【IPV6改造解读】
座右铭:我们每一个心怀希望的人,就像是一颗种子一样! 文章目录 前言一、IPV6改造基本情况分析二、IPV6针对不同场景改造方案1.网站/APP场景-IPV6云网关升级改造方案2.局域网专网(互联网侧)场景-安全大脑IPV6改造方案 总结 前言 提示…...
常用的Kali命令Top10
Kali Linux是一种基于Debian的Linux发行版,被广泛用于渗透测试和网络安全。以下是一些常用的Kali Linux命令的详细解释: ifconfig:显示和配置网络接口的信息。可以用于查看当前系统的IP地址、网关和子网掩码等。 apt-get:用于安装…...
阿里巴巴正式发布了全新大型语言模型Marco-o1
每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…...
【AI日记】24.12.07 kaggle 比赛 Titanic-10
【AI论文解读】【AI知识点】【AI小项目】【AI战略思考】【AI日记】 工作 内容: 学习 kaggle 入门比赛 Titanic - Machine Learning from Disaster学习机器学习(pandas,numpy,sklearn,seaborn,matplotlib&a…...
《QT 示例宝库:探索丰富的编程世界》
《QT 示例宝库:探索丰富的编程世界》 一、QT 基础示例(一)QRadioButton 示例(二)拦截关闭事件示例 二、QT 常用代码示例(一)QObject 相关操作(二)Qt 基本容器遍历&#x…...
子类有多个父类的情况下Super不支持指定父类来调用方法
1、Super使用方法 super()函数在Python中用于调用父类的方法。它返回一个代理对象,可以通过该对象调用父类的方法。 要使用super()方法,需要在子类的方法中调用super(),并指定子类本身以及方法的名称。这样就可以在子类中调用父类的方法。 …...
鸿蒙UI开发——渐变色效果
1、概 述 ArkTs可以通过颜色渐变接口,设置组件的背景颜色渐变效果,实现在两个或多个指定的颜色之间进行平稳的过渡。 目前提供三种渐变类型:线性渐变、角度渐变、径向渐变。 我们在鸿蒙UI布局实战 —— 个人中心页面开发中,默认…...
java基础概念47-ArrayList、LinkList和迭代器
一、ArrayList集合 1-1、ArrayList的两种添加信息的方式 1-2、ArrayList集合底层逻辑 1、利用空参创建的集合,在底层创建一个默认长度为0的数组 2、添加第一个元素时,底层会创建一个新的长度为10的数组 3、存满时,会扩容1.5倍。 4、如果…...
java编程1.5.4 - 失而复得
前言 通过实践而发现真理,又通过实践而证实真理和发展真理。从感性认识而能动地发展到理性认识,又从理性认识而能动地指导革命实践,改造主观世界和客观世界。实践、认识、再实践、再认识,这种形式,循环往复以至无穷&a…...
R语言使用“纽约市数据集中的优步皮卡”数据创建不同年度时间范围的可视化
一、项目背景 为了分析纽约市优步(https://baike.baidu.com/item/Uber/14900884)皮卡在不同年度的使用情况,需要利用R语言进行数据可视化。通过对比不同年度的数据,可以揭示出优步皮卡使用的趋势和变化。 二、数据准备 数据集&a…...
韩企研学团造访图为科技:共探人工智能创新前沿
今日,一支由韩国知名企业研学专家组成的代表团莅临图为科技深圳总部,展开了一场深度技术交流与研讨活动。 此次访问旨在通过实地探访中国领先的科技企业,促进中韩两国在科技创新领域的深入合作与交流。 韩国游学团合影 图为科技作为一家在人…...
Windows设备go环境安装配置
一、下载go安装包 官网链接:All releases - The Go Programming Language (google.cn) 安装过程比较简单,这里不再赘述,可参考这位博主的文章。本文重点在环境配置。golang环境详细安装、配置_golang安装-CSDN博客 二、环境变量配置 1.添…...
THREE.js 入门(一)xyz坐标系
一、坐标系概念 在 three.js 中,相机的默认朝向是沿着 Z 轴的负方向。也就是说,默认情况下,相机会沿着 Z 轴的负方向“看”到场景中的对象,而 X 轴和 Y 轴分别对应水平方向和垂直方向。换句话说,相机的默认位置是 (0,…...
Android仿美团左右联动购物列表
Android仿美团左右联动购物列表 左右联动购物列表,不难。 一、思路: 两个RecycleView 二、效果图: 三、关键代码: public class MainActivity extends AppCompatActivity {private RecyclerView rl_left;private RecyclerVie…...
HTML 标签语义化指南:让网页更易读
HTML 语义化标签是指在 HTML 中使用具有明确含义的标签来标记网页内容的结构和意义。这些标签可以提供更多的语义信息,有助于搜索引擎理解网页内容,并为使用辅助技术的用户提供更好的访问体验。 以下是一些常见的HTML语义化标签及其含义和用途ÿ…...
Java日志记录几种实现方案
在平时使用到一些软件中,比如某宝或者某书,通过记录用户的行为来构建和分析用户的行为数据,同时也能更好优化产品设计和提升用户体验。比如在一个订单系统中,需要确定追踪用户的行为,比如: 登录/登出浏览商…...
【C++算法】32.前缀和_矩阵区域和
文章目录 题目链接:题目描述:解法C 算法代码: 题目链接: 1314. 矩阵区域和 题目描述: 解法 防止有人看不明白题目,先解释一下题目 二维前缀和思想: 使用前缀和矩阵 ret [x1,y1]~[x2,y2] D …...
30天学会Go--第7天 GO语言 Redis 学习与实践
30天学会Go–第7天 GO语言 Redis 学习与实践 文章目录 30天学会Go--第7天 GO语言 Redis 学习与实践前言一、Redis 基础知识1.1 Redis 的核心特性1.2 Redis 常见使用场景 二、安装 Redis2.1 在 Linux 上安装2.2 在 Windows 上安装2.3 使用 Docker 安装 Redis 三、Redis 常用命令…...
面经自测——死锁/死锁的必要条件/死锁的预防/进程通信的方式
前言 本文是作者专门用来自测Java后端相关面试题的,所有问题都是在牛客、知识星球或网上找到的最近最新的面试题,全文回答都是作者按自己的真实水平仿照真实环境的回答,所以答案不一定真实(但回答一定真诚🤣࿰…...
Mysql索引,聚簇索引,非聚簇索引,回表查询
什么是索引 数据库索引是为了实现高效数据查询的一种有序的数据数据结构,类似于书的目录,通过目录可以快速的定位到想要的数据,因为一张表中的数据会有很多,如果直接去表中检索数据效率会很低,所以需要为表中的数据建立…...
Spring完整知识三(完结)
Spring集成MyBatis 注意 Spring注解形式集成MyBatis时,若SQL语句比较复杂则仍采用映射文件形式书写SQL语句;反之则用注解形式书写SQL语句,具体可详见Spring注解形式 环境准备相同步骤 Step1: 导入相关坐标,完整pom.…...
kafka-clients之ConsumerConfig
Kafka ConsumerConfig 中的配置项用于定义消费者的行为,如消费方式、偏移管理、组协调等。以下是ConsumerConfig中的关键配置项及其详细说明: 1. bootstrap.servers 类型:List<String>说明:Kafka集群的地址列表࿰…...
关于“浔川AI翻译”使用情况的调研报告
关于“浔川 AI 翻译”使用情况的调研报告 随着全球化进程加速及外语学习需求攀升,AI 翻译工具愈发普及。“浔川 AI 翻译”作为行业产品之一,为了解其市场表现与用户反馈,特开展本次问卷调查,现将关键结果汇报如下。 一、样本概…...
第一节、电路连接【51单片机-TB6600驱动器-步进电机教程】
摘要:本节介绍如何搭建一个51单片机TB6600驱动器步进电机控制电路,所用材料均为常见的模块,简单高效的方式搭建起硬件环境 一、硬件清单 ①51单片机最小控制系统 ②USB转TTL模块 ③开关电源 ④TB6600步进电机驱动器 ⑤二相四线步进电机 ⑥电…...
编程之路,从0开始:补充篇
Hello大家好!很高兴和大家又见面啦!给生活添点passion,开始今天的编程之路! 我的博客:<但凡. 我的专栏:《编程之路》、《题海拾贝》、《数据结构与算法之美》 欢迎点赞,关注! 这篇…...
<script src = “https://cdn.jsdelivr.net/npm/vue/dist/vue.js“></script>
这行代码是HTML中的一个<script>标签,用于在网页中嵌入Vue.js库。具体来说: <script>:是HTML中的一个标签,用于定义客户端的脚本,比如JavaScript。 src:是<script>标签的一个属性&#…...
RabbitMQ延时队列
RabbitMQ延时队列 什么是延时队列 延时队列顾名思义,即放置在该队列里面的消息是不需要立即消费的,而是等待一段时间之后取出消费。 应用场景 场景一:在订单系统中,一个用户下单之后通常有30分钟的时间进行支付,如…...
Java——异常机制(下)
1 异常处理之(捕获异常) (一般处理运行时异常) (try-catch-finally子句) (finally一般用于文件最后关闭) (catch捕获的子类在前父类在后——>不然父类在前面都让父类捕获掉了,会报错) (Exception是父类放在最后,如果前面没有捕获到,就…...
9. 一分钟读懂“策略模式”
9.1 模式介绍 策略模式是一种行为型设计模式,用于在运行时灵活切换对象的行为或算法,它将算法封装为独立的类,使得它们可以互相替换,而不会影响使用这些算法的客户端代码。 策略模式的核心思想是:定义一系列可互换的算…...
python调用GPT-4o实时音频 Azure OpenAI GPT-4o Audio and /realtime
发现这块网上信息很少,记录一下 微软azure入口 https://learn.microsoft.com/zh-cn/azure/ai-services/openai/realtime-audio-quickstart?pivotsprogramming-language-ai-studio sdk文档 https://github.com/azure-samples/aoai-realtime-audio-sdk?tabread…...