Java 对象 ↔ JSON 互转
用 阿里巴巴 fastjson2
引入依赖(maven)
XML
<dependency>
<groupId>com.alibaba.fastjson2</groupId>
<artifactId>fastjson2</artifactId>
<version>2.0.32</version>
</dependency>
创建实体类
java
public class User {
private String name;
private int age;
// get、set、toString
public String getName() { return name; }
public void setName(String name) { this.name = name; }
public int getAge() { return age; }
public void setAge(int age) { this.age = age; }
}
核心代码:对象 ↔ JSON
对象 转 JSON(后端发给前端)
java
public static void main(String[] args) {
User user = new User();
user.setName("张三");
user.setAge(18);
// 对象 → JSON字符串
String json = JSON.toJSONString(user);
System.out.println(json);
}
//输出:{"name":"张三","age":18}
JSON 转 对象(前端发来,后端解析)
java
public static void main(String[] args) {
String json = "{\"name\":\"张三\",\"age\":18}";
// JSON → Java对象
User user = JSON.parseObject(json, User.class);
System.out.println(user.getName());
System.out.println(user.getAge());
}
//输出:张三
18
最常用 JSON 工具方法
java
// 对象 → JSON
String json = JSON.toJSONString(对象);
// JSON → 对象
User user = JSON.parseObject(json, User.class);
// JSON → List集合
List<User> list = JSON.parseArray(json, User.class);
MYSQL基础核心
建表:
sql
CREATE TABLE student(
id INT PRIMARY KEY AUTO_INCREMENT, -- 主键、自增
name VARCHAR(20) NOT NULL, -- 姓名不能为空
age INT,
gender VARCHAR(5)
);
常用的5中sql
1)增加(INSERT)
sql
INSERT INTO student(name,age,gender) VALUES('张三',20,'男');
2)删除(DELETE)
sql
DELETE FROM student WHERE id=1;
3)修改(UPDATE)
sql
UPDATE student SET age=21 WHERE id=1;
4)查询(SELECT)
sql
SELECT * FROM student;
5)条件查询 + 排序 + 分页
sql
SELECT * FROM student WHERE age>18 ORDER BY age DESC LIMIT 0,3;
简单联表查询(举例)
sql
SELECT s.name, c.cname
FROM student s
JOIN class c ON s.cid = c.id;
JDBC 核心:Java 操作数据库(最重要!)
JDBC 就是 Java 连接 MySQL 的标准 API,流程固定 6 步!
JDBC 固定 6 步(背会!)
- 加载驱动
- 获取连接
- 获取执行 SQL 的对象
- 执行 SQL
- 处理结果
- 关闭资源
完整 Java JDBC 代码(直接复制运行)
1. 先引入 MySQL 依赖(pom.xml)
XML
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.30</version>
</dependency>
2. JDBC 查询数据示例
java
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class JdbcDemo {
public static void main(String[] args) throws Exception {
// 1. 加载驱动(MySQL 5.1+ 可省略)
Class.forName("com.mysql.cj.jdbc.Driver");
// 2. 获取连接
String url = "jdbc:mysql://localhost:3306/testdb?useSSL=false&serverTimezone=UTC";
String user = "root";
String password = "123456";
Connection conn = DriverManager.getConnection(url, user, password);
// 3. 获取执行SQL的对象
Statement stmt = conn.createStatement();
// 4. 执行查询SQL
String sql = "SELECT * FROM student";
ResultSet rs = stmt.executeQuery(sql);
// 5. 处理结果集
while (rs.next()) {
int id = rs.getInt("id");
String name = rs.getString("name");
int age = rs.getInt("age");
System.out.println(id + " " + name + " " + age);
}
// 6. 关闭资源
rs.close();
stmt.close();
conn.close();
}
}
JDBC 增删改查 全套代码
1)增加
java
String sql = "INSERT INTO student(name,age,gender) VALUES('李四',22,'女')";
int n = stmt.executeUpdate(sql); // 返回受影响行数
System.out.println("增加了:" + n + " 条");
2)删除
java
String sql = "DELETE FROM student WHERE id=3";
int n = stmt.executeUpdate(sql);
3)修改
java
String sql = "UPDATE student SET age=25 WHERE id=2";
int n = stmt.executeUpdate(sql);
4)查询
java
ResultSet rs = stmt.executeQuery("SELECT * FROM student");
最重要的 3 个对象(必须懂)
- Connection :连接对象,代表 Java 和数据库的连接
- Statement :执行 SQL 的对象
- ResultSet :查询结果集,存查询出来的数据
必备关键字
- void
- 意思:无返回值
- 用在方法上:方法执行完不返回任何数据
java
public void run(){
// 没有return
}
- return
意思:返回结果 / 结束方法
java
public int getNum(){
return 10; // 返回10
}
- instanceof
意思:判断对象是否是某个类的实例
java
if( p instanceof Student ){...}
- extends
- 意思:继承
- 类 继承 类
- 子类继承父类
java
class Son extends Father{ }
- implements
- 意思:实现
- 类 实现 接口
- 必须重写所有抽象方法
java
class A implements MyInterface{ }
- interface
- 意思:接口
- 全部是公开的抽象方法(Java 8+ 可加默认方法)
java
interface MyInterface{
void run();
}
- abstract
- 意思:抽象
- 修饰 类 → 抽象类
- 修饰 方法 → 抽象方法(没有方法体)
java
abstract class Animal{
abstract void eat();
}