数据科学与大数据技术毕业实习(一)
写在前面
今天是2022.9.19,黑马程序员开课,一共两周左右的时间,在这里记录一下学习的过程。
技术栈简介
maven: 自动下载 jar,从中央仓库 (国外,全球所有公开的jar)。
Day1
需求2:书写一个请求
书写一个请求,用来接收浏览器发起的get请求,如:https://localhost:8080/books/2
在idea控制台输出,参数接受情况
在访问后,返回数据,显示在页面上。
代码:
~~~java
package com.example.demo.controller;import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import java.util.ArrayList;
import java.util.List;//标明是控制层,用来接收前端数据
@RestController
//前端请求本类时,需要加一个前缀,ip/books
@RequestMapping(“/books”)
public class BookController {@RequestMapping("/getbook") public String getBookById(Integer id){ return "hello springboot"+id; } @RequestMapping("/getlist") public List<String> getBooks(){ ArrayList<String> strings = new ArrayList<>(); strings.add("计算机基础"); strings.add("凡人修仙传"); strings.add("遮天"); return strings; }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
### 需求3:增加其他请求方法
1. 接收2个普通参数,如http://localhost:8080/books/getById?id=2&name=zs
2. @RequestParam注解用来绑定前端参数和方法形参,解决方法形参名和前端参数不一致的问题
3. 当前端参数和形参名一致的时候,@RequestParam可以省略
4. @GetMapping("/getById")注解在方法上,表示访问这个方法的路径是:类名路经+方法路径,如:books/getById?参数1=参数值&参数2=参数值
5. 上述的结果是返回一个字符串,接下来,返回一个集合数据,相当于返回数据库中的多列数据
1. ~~~java
//4种常见的请求方式
// get获取
// post增加
// put修改
// delete删除
@GetMapping("getById")
//http://localhost:8080/books/getById?id=2&name=zs
public String getById3(@RequestParam Integer id,@RequestParam("name") String name){
System.out.println("id:"+id+" "+name);
return "getById3 hello ,springboot " + id+" "+name;
}
/**
* 需求:返回一个字符串的集合:如涉外学院 财经学院 长沙学院
* 路经:http://localhost:8080/books/list
*/
@GetMapping("/List")
public List<String> getList(){
ArrayList<String> strings = new ArrayList<>();
strings.add("涉外学院");
strings.add("财经学院");
strings.add("长沙学院");
return strings;
}
需求5:修改访问端口8080为80
将application.properties后缀名改为yml
输入port,根据提示修改 80
在依赖中添加:
<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </dependency>
### 需求6:查询数据库之准备数据1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
5. 在controller类中,新建R:
1. ~~~java
package com.example.demo.controller;
import lombok.Data;
import java.util.HashMap;
import java.util.Map;
@Data
public class R<T> {
private Integer code;//编码,1成功,0和其他数字失败
private String msg;//错误信息
private T data;//数据
private Map map = new HashMap();//动态数据
public static <T> R<T> success(T object){
R<T> r = new R<T>();
r.data = object;
r.code = 1;
return r;
}
public static <T> R<T> error(String msg){
R r = new R();
r.msg = msg;
r.code = 0;
return r;
}
public R<T> add(String key,Object value){
this.map.put(key,value);
return this;
}
}
DROP TABLE IF EXISTS `tbl_book`; CREATE TABLE `tbl_book`( `id` int(11) PRIMARY KEY AUTO_INCREMENT, `type` varchar(100) , `name` varchar(100) , `description` varchar(100) ); INSERT INTO `tbl_book` VALUES ('1','计算机理论','spring实战第5版','Spring入门经典教程'); INSERT INTO `tbl_book` VALUES ('2','计算机理论','spring 5核心原理与30个类手写实战','10年沉淀之作,手写Spring精华思想'); INSERT INTO `tbl_book` VALUES ('3','计算机理论','Spring 5 设计模式','深入Spring源码剖析'); INSERT INTO `tbl_book` VALUES ('4','计算机理论','Spring MVC+MyBatis 开发从入门到项目实战','全方位解析面向web应用的轻量级开发框架'); INSERT INTO `tbl_book` VALUES ('5','计算机理论','轻量级 Java Web企业项目实战','源码级剖析Spring框架');
2. ~~~java package com.example.demo.domain; import com.baomidou.mybatisplus.annotation.TableName; @TableName("tbl_book") public class Book { private Integer id; private String name; private String type; private String description; public Book(Integer id, String name, String type, String description) { this.id = id; this.name = name; this.type = type; this.description = description; } public Integer getId() { return id; } public String getName() { return name; } public String getType() { return type; } public String getDescription() { return description; } public void setId(Integer id) { this.id = id; } public void setName(String name) { this.name = name; } public void setType(String type) { this.type = type; } public void setDescription(String description) { this.description = description; } @Override public String toString() { return "Book{" + "id=" + id + ", name='" + name + '\'' + ", type='" + type + '\'' + ", description='" + description + '\'' + '}'; } }1
2
3
4
5
6
7
8
9
10
11
12
13
3. ![数据表已经建好](/images/python/image-20220919224532480.png)
4. 在com.example.demo的包中中创建domain包,在包中创建Book对象
1. 使用@TableName注解爆红:在依赖中导入
1. ~~~java
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.2.0</version>
</dependency>2. 在yml文件中配置数据库设置 1. ~~~java spring: datasource: type: com.alibaba.druid.pool.DruidDataSource driver-class-name: com.mysql.jdbc.Driver url: jdbc:mysql://localhost:3306/swdb?serverTimezone=UTC username: root password: 1001222001
2
3
4
5
6
7
8
9
10
11
12
13
14
3. 再添加两个依赖
1. ~~~java
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.2.9</version>
</dependency>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
### 需求8:完成数据的增删改查
![成功](/images/python/image-20220919234438299.png)
删除:
![image-20220919234822041](/images/python/image-20220919234822041.png)
![删除成功](/images/python/image-20220919234905297.png)
## Day2
### 需求9 完成SpringBoot参数传递
1. 请求方式
1. get --参数是在路径上,参数在请求行上,参数的大小有限制,一般只能传2k,安全性较低,因此get用于获取资源
2. post --参数是在请求体,参数的大小无限制,参数在请求体中,安全性较高,用于提交用户数据
3. put --提交参数,数据一般在请求体中
4. delete --用来删除数据
5. restfull风格:使用请求方式来区分请求的动作
6. 网络三要素:ip、port、协议
7. http协议的特点:
1. 请求数据(请求行、请求头、请求体)和响应数据
2. 一次请求对应一次响应
3. http协议是无状态的,不能读取上一次请求的信息 --解决方案:会话技术:cookie(存在浏览器中),session(存在服务器中,占内存)
2. ~~~java
package com.example.demo.controller;
import com.example.demo.domain.Book;
import com.example.demo.mapper.BookMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
import java.util.List;
//标明是控制层,用来接收前端数据
@RestController
//前端请求本类时,需要加一个前缀,ip/books
@RequestMapping("/books")
public class BookController {
@Autowired
BookMapper bookMapper;
@GetMapping("/{id}")
public R<Book> getBookById(@PathVariable Long id){
Book book = bookMapper.selectById(id);
book.setName("计算机基础");
return R.success(book);
}
@GetMapping
public R<List<Book>> getBooks(){
List<Book> books = bookMapper.selectList(null);
return R.success(books);
}
@PostMapping
public R<String> saveBook(Book book){
System.out.println(book);
int insert = bookMapper.insert(book);
return insert>0?R.success("save ok"):R.error("save failed");
}
//http://localhost:80/books/delete/id
//@PathVariable 代表是路径参数,当路径参数和形参名字一样的时候,@PathVariable括号可以省略
@DeleteMapping("/{id}")
public R<String> deleteBook(@PathVariable Long id){
System.out.println("删除id="+id);
int i = bookMapper.deleteById(id);
return i>0?R.success("delete ok"):R.error("delete failed");
}
//4种常见的请求方式
// get获取
// post增加
// put修改
// delete删除
@GetMapping("getById")
//http://localhost:8080/books/getById?id=2&name=zs
public String getById3(@RequestParam Long id,@RequestParam("name") String name){
System.out.println("id:"+id+" "+name);
return "getById3 hello ,springboot " + id+" "+name;
}
/**
* 需求:返回一个字符串的集合:如涉外学院 财经学院 长沙学院
* 路经:http://localhost:8080/books/list
*/
@GetMapping("/List")
public List<String> getList(){
ArrayList<String> strings = new ArrayList<>();
strings.add("涉外学院");
strings.add("财经学院");
strings.add("长沙学院");
return strings;
}
}
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 胡小宁的博客!