您能否使用简单的 JAVA 代码示例来解释 DTO 是什么?为什么需要这个?
这段代码会是 DTO 吗?有两个类客户和银行
顾客
import java.sql.Date;
class Customer {
private String first_name;
private String last_name;
private String gedner;
private Date age;
private String address;
Customer(String first_name, String last_name, String gedner, Date age, String address) {
this.first_name = first_name;
this.last_name = last_name;
this.gedner = gedner;
this.age = age;
this.address = address;
}
public String getLast_name() {
return last_name;
}
public String getFirst_name() {
return first_name;
}
public String getGedner() {
return gedner;
}
public Date getAge() {
return age;
}
public String getAddress() {
return address;
}
}
银行
import java.sql.*;
import java.util.Scanner;
public class Bank {
private static final String URL = "jdbc:mysql://localhost/bank?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC";
private static final String USER = "root";
private static final String PASSWORD = "root";
Connection connection = null;
PreparedStatement preparedStatement = null;
Scanner in = new Scanner(System.in);
public void connect() {
try {
connection = DriverManager.getConnection(URL, USER, PASSWORD);
} catch (SQLException e) {
e.printStackTrace();
}
}
Customer readCustomer() {
Customer customer = null;
try {
preparedStatement = connection.prepareStatement("SELECT * FROM customers WHERE id_customer = ?");
System.out.print("Введите id пользователя: ");
preparedStatement.setInt(1, Integer.parseInt(in.next()));
preparedStatement.execute();
ResultSet rs = preparedStatement.executeQuery();
String first_name = rs.getString("first_name");
String last_name = rs.getString("last_name");
String gender = rs.getString("gender");
Date age = rs.getDate("age");
String address = rs.getString("address");
customer = new Customer(first_name, last_name, gender, age, address);
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
preparedStatement.close();
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
return customer;
}
}
在 read 方法中,我将 ResultSet 变成了一个客户对象。这是DTO吗?
对象
Customer- DTO。DTO 对象是不包含方法的对象。它只能包含字段、getter/setter 和构造函数。
数据传输对象 - 传输数据的对象。数据是类中的字段。
一个真实的例子是跳棋游戏。您必须有一个对象
Checker(检查器)。它不应该有方法,只有字段。或一类
Cell(棋盘)。或类
Board(板):还是一类
Coordinate。虽然它有方法(重写equals和compare),但这些是来自的方法Object,它也可以被认为是一个 DTO 对象,因为 它仅用于存储数据(坐标)。