简单的增删改查练习
数据库
## 服务器
给nginx设置负载均衡即可
## 具体编码
1. BeanUtils的使用
2. DigestUtils md5加密
- 一些借鉴
jwt拦截器,md5加密,全局错误处理,ThreadLocal 进行线程内部传递变量
PageHelper分页
```java
//设置分页和分页大小
PageHelper.startPage(employeePageQueryDTO.getPage(), employeePageQueryDTO.getPageSize());
//进行查询
Page<Employee> page = employeeMapper.pageQuery(employeePageQueryDTO);//后续定义
xml中的mapper示例:
<select id="pageQuery" resultType="com.sky.entity.Employee">
select * from employee
<where>
<if test="name != null and name != ''">
and name like concat('%',#{name},'%')
</if>
</where>
order by create_time desc
</select>
对于时间格式的全局管理,在mvcconfig中
protected void extendMessageConverters(List<HttpMessageConverter<?>> converters) {
log.info("扩展消息转换器...");
//创建一个消息转换器对象
MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();
//需要为消息转换器设置一个对象转换器,对象转换器可以将Java对象序列化为json数据
converter.setObjectMapper(new JacksonObjectMapper());
//将自己的消息转化器加入容器中
converters.add(0,converter);
}
aop
Apache POI 来进行文件格式转换,导出为excel
Apache ECharts 可视化图表
Spring Task 定时任务
HttpClient
HttpClient的核心API:HttpClient:Http客户端对象类型,使用该类型对象可发起Http请求。
HttpClients:可认为是构建器,可创建HttpClient对象。
CloseableHttpClient:实现类,实现了HttpClient接口。
HttpGet:Get方式请求类型。
HttpPost:Post方式请求类型。
HttpClient发送请求步骤:
创建HttpClient对象
创建Http请求对象
调用HttpClient的execute方法发送请求
需求分析
学生管理系统
一.功能要求
添加学生功能:姓名、学号、性别、出生年月日。(学号自动生成且唯一)
添加学生成绩功能:每个人都有数学、Java、英语、体育四门课,可分课程输入成绩。
根据学生学号查找学生成绩功能:在界面上显示姓名、学号和成绩,学号不存在的能给出提示信息。
根据学生姓名(支持模糊匹配)查找学生成绩功能:并在界面上显示姓名、学号和成绩,如果有多个相同姓名学生存在,一起显示出来,姓名不存在的给出提示信息。
支持对单个学生各科成绩画出柱状分布图。
学生信息的修改与删除功能:不能修改学号。
生成学生学习情况报表功能:报表包含学号、姓名、各科目成绩及对应的该科目班级平均值,总成绩以及班级总成绩平均值,并将该排序结果输出至excel文件。
数据库设计
- admin
id username password
- student
id (学号自动生成且唯一) name birthday
- score
sql设计id Math Java English PE
CREATE DATABASE management;
USE management;
CREATE TABLE admin(
Id INT AUTO_INCREMENT PRIMARY KEY,
Username char(20) NOT NULL,
Password char(20) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE student(
Id INT AUTO_INCREMENT PRIMARY KEY,
StudentId char(10) NOT NULL UNIQUE,
StudentName char(20) NOT NULL,
Birthday date NOT NULL
);
CREATE TABLE score(
Id INT AUTO_INCREMENT PRIMARY KEY,
Math DOUBLE NOT NULL,
Java DOUBLE NOT NULL,
English DOUBLE NOT NULL,
PE DOUBLE NOT NULL
);
ps: 使用方式 mysql -u username -p < xxx.sql ,之后输入密码即可
xml配置
druid
knife4j生成接口文档
- 部署
服务器配置:
mysql
将服务器上的mysql配置文件修改
redisvim /etc/mysql/mysql.conf.d/mysqld.cnf 将bind-address 的127.0.0.1 改为 0.0.0.0 服务器开放端口 3306
1.打开redis的配置文件“redis.conf”。
2.将“bind 127.0.0.1”注释掉。
3.将“protected-mode yes”改成“protected-mode no”。
4.添加以下一行代码。
daemonize no
复制
5.重启redis服务即可sudo service redis restart
配置
knif4j注意设置好扫描的包
开发
- common module
- 返回类封装Result
- pageHelper所需的分页参数
苍穹外卖项目
仓库: 已完成 https://github.com/qiuEly/sky-take-out
知识
- 当前端传输的数据与实体类差距比较大时使用DTO来封装
- 数据传输对象(DTO)(Data Transfer Object),是一种设计模式之间传输数据的软件应用系统。数据传输目标往往是数据访问对象从数据库中检索数据。数据传输对象与数据交互对象或数据访问对象之间的差异是一个以不具有任何行为除了存储和检索的数据(访问和存取器)。
- ThreadLocal 不是一个线程,但是可以用于保存Thread的一个变量,相当于设置线程内部的变量,可以用来存token和cookie
- mybatis-plus 分页插件的使用,并且配合queryWrapper来封装自定义查询
- 使用配置jackson和java格式互相转化器
- ‘ALTER TABLE table_name AUTO_INCREMENT = value;’ 记得删除没有用的数据之后并且让value大于当前的行数
- mp 实现递增需要在配置文件中加上 ‘mybatis-plus:
global-config:
db-config:
id-type: auto’ - 自定义注解:
@Target
注解:@Target注解:
- 作用:
@Target
注解用于指定可以将注解应用到的元素类型。它决定了注解可以用于标记哪些程序元素,例如类、方法、字段等。 - 参数:
@Target
的参数是一个ElementType
枚举数组,你可以在其中指定一个或多个目标元素类型。对于@ComponentScan
来说,@Target(ElementType.TYPE)
表示该注解可以用于标记类。
- 作用:
@Retention
注解:- 作用:
@Retention
注解用于指定注解在编译后是否保留到运行时,并且是否可以通过反射访问注解。有三个可能的RetentionPolicy
值:SOURCE
、CLASS
和RUNTIME
。 - 参数:
@Retention
的参数是一个RetentionPolicy
枚举值。@Retention(RetentionPolicy.RUNTIME)
表示注解会在运行时保留,并可以通过反射访问。
- 作用:
@Documented
注解:- 作用:
@Documented
注解用于指示该注解应该包含在生成的文档中。如果你想要将注解的信息包含在 Java 文档中,可以使用@Documented
注解。 - 参数:
@Documented
注解没有参数,它只是一个标记注解,用于指示文档工具要包括注解信息。
- 作用:
- 阿里云oss使用,主要使用的是spring 中的MultipartFile
- Redis的使用
- 通过给RestController设置标识名来防止依赖注入无法识别相同名称的Bean
- vivo50
HttpClient的核心API:
HttpClient:Http客户端对象类型,使用该类型对象可发起Http请求。
HttpClients:可认为是构建器,可创建HttpClient对象。
CloseableHttpClient:实现类,实现了HttpClient接口。
HttpGet:Get方式请求类型。
HttpPost:Post方式请求类型。
HttpClient发送请求步骤:
创建HttpClient对象
创建Http请求对象
调用HttpClient的execute方法发送请求
用例:package com.sky.test; import org.apache.http.HttpEntity; import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; import org.apache.http.util.EntityUtils; import org.junit.jupiter.api.Test; import org.springframework.boot.test.context.SpringBootTest; @SpringBootTest public class HttpClientTest { /** * 测试通过httpclient发送GET方式的请求 */ @Test public void testGET() throws Exception{ //创建httpclient对象 CloseableHttpClient httpClient = HttpClients.createDefault(); //创建请求对象 HttpGet httpGet = new HttpGet("http://localhost:8080/user/shop/status"); //发送请求,接受响应结果 CloseableHttpResponse response = httpClient.execute(httpGet); //获取服务端返回的状态码 int statusCode = response.getStatusLine().getStatusCode(); System.out.println("服务端返回的状态码为:" + statusCode); HttpEntity entity = response.getEntity(); String body = EntityUtils.toString(entity); System.out.println("服务端返回的数据为:" + body); //关闭资源 response.close(); httpClient.close(); } }
- spring cache
在SpringCache中提供了很多缓存操作的注解,常见的是以下的几个:
注解 | 说明 |
---|---|
@EnableCaching | 开启缓存注解功能,通常加在启动类上 |
@Cacheable | 在方法执行前先查询缓存中是否有数据,如果有数据,则直接返回缓存数据;如果没有缓存数据,调用方法并将方法返回值放到缓存中 |
@CachePut | 将方法的返回值放到缓存中 |
@CacheEvict | 将一条或多条数据从缓存中删除 |
在spring boot项目中,使用缓存技术只需在项目中导入相关缓存技术的依赖包,并在启动类上使用@EnableCaching开启缓存支持即可。
- spring task 定时任务
- websocket
WebSocket 是基于 TCP 的一种新的网络协议。它实现了浏览器与服务器全双工通信——浏览器和服务器只需要完成一次握手,两者之间就可以创建持久性的连接, 并进行双向数据传输。
HTTP协议和WebSocket协议对比:
HTTP是短连接
WebSocket是长连接
HTTP通信是单向的,基于请求响应模式
WebSocket支持双向通信
HTTP和WebSocket底层都是TCP连接
- Apache ECharts
- Apache POI
- 部署!!!
- build过程中出现检测问题 https://www.cnblogs.com/SparkMore/p/15919302.html
- 当springboot项目不识别application配置文件时,右键resource -> Mark Directory as > Resources Root
修改建议Todo:
- 密码加密 使用 security + jwt ,前端保存session
- 微信小程序开发 + 前端 vue
- docker环境下使用
需求
- admin 界面来管理