@Overridepublic void addPerson(Person newPerson) { String sql = "INSERT INTO person VALUES (?, ?, ?, ?, ?, ?, ?, ?)"; try (Connection conn = DriverManager.getConnection(url, username, password); PreparedStatement ps = conn.prepareStatement(sql)) { ps.setString(1, newPerson.getUserAccount()); ps.setString(2, newPerson.getUserName()); ps.setString(3, newPerson.getUserSex()); ps.setString(4, newPerson.getUserBirthday()); ps.setString(5, newPerson.getUserIdCard()); ps.setString(6, newPerson.getUserPassword()); ps.setInt(7, newPerson.getUserIdentify()); ps.setString(8, newPerson.getUserOtherName()); ps.executeUpdate(); } catch (SQLException e) { e.printStackTrace(); }}属于orm哪一种
时间: 2024-04-28 14:20:14 浏览: 149
这段代码使用了 JDBC 的 PreparedStatement 来执行 SQL 语句,属于基于 JDBC 的 ORM(Object-Relational Mapping)的一种实现方式。ORM 是一种将对象模型和关系模型进行映射的技术,目的是让我们可以像操作对象一样操作数据库,从而屏蔽关系数据库的底层实现细节,提高开发效率。虽然这段代码没有使用任何 ORM 框架,但是使用了 JDBC 的 PreparedStatement 来执行 SQL 语句,可以看作是一种基于 JDBC 的 ORM 实现方式。
相关问题
private JButton addButton;public InterfaceCallExample() { //... addButton = new JButton("新增数据"); addButton.addActionListener(this); panel.add(addButton); //...}@Overridepublic void actionPerformed(ActionEvent e) { if (e.getSource() == callButton) { //... } else if (e.getSource() == addButton) { String id = JOptionPane.showInputDialog(this, "请输入id:"); String titleName = JOptionPane.showInputDialog(this, "请输入材料类型:"); String status = JOptionPane.showInputDialog(this, "请输入状态:"); String createTime = JOptionPane.showInputDialog(this, "请输入创建时间:"); String updateTime = JOptionPane.showInputDialog(this, "请输入更改时间:"); ArrayList<String> strings = new ArrayList<>(); strings.add(id); strings.add(titleName); strings.add(status); strings.add(createTime); strings.add(updateTime); String[] data = strings.toString().replace("[","").replace("]","").split(","); tableModel.addRow(data); }} 把新增的输入框可以一次性展示出来
您可以将输入框放在一个对话框中,以便一次性展示出来。可以使用以下代码:
```java
else if (e.getSource() == addButton) {
JPanel panel = new JPanel(new GridLayout(0, 1));
JTextField idField = new JTextField(10);
JTextField titleNameField = new JTextField(10);
JTextField statusField = new JTextField(10);
JTextField createTimeField = new JTextField(10);
JTextField updateTimeField = new JTextField(10);
panel.add(new JLabel("id:"));
panel.add(idField);
panel.add(new JLabel("材料类型:"));
panel.add(titleNameField);
panel.add(new JLabel("状态:"));
panel.add(statusField);
panel.add(new JLabel("创建时间:"));
panel.add(createTimeField);
panel.add(new JLabel("更改时间:"));
panel.add(updateTimeField);
int result = JOptionPane.showConfirmDialog(null, panel, "新增数据", JOptionPane.OK_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE);
if (result == JOptionPane.OK_OPTION) {
String id = idField.getText();
String titleName = titleNameField.getText();
String status = statusField.getText();
String createTime = createTimeField.getText();
String updateTime = updateTimeField.getText();
ArrayList<String> strings = new ArrayList<>();
strings.add(id);
strings.add(titleName);
strings.add(status);
strings.add(createTime);
strings.add(updateTime);
String[] data = strings.toString().replace("[","").replace("]","").split(",");
tableModel.addRow(data);
}
}
```
这段代码将会弹出一个带有多个输入框的对话框,用户可以在其中输入数据,单击“确定”按钮后,将会向表格中添加一行数据。
@Overridepublic void invoke(Map<Integer, String> data, AnalysisContext context) { if (context.readRowHolder().getRowIndex() < context.readSheetHolder().getSheet().getHeadLineMun()) { // 当前行是表头行,存储表头信息 for (Map.Entry<Integer, String> entry : data.entrySet()) { int columnIndex = entry.getKey(); String columnName = entry.getValue(); headMap.put(columnIndex, columnName); } } else { // 当前行是数据行,进行数据处理 for (Map.Entry<Integer, String> entry : data.entrySet()) { int columnIndex = entry.getKey(); String columnValue = entry.getValue(); String columnName = headMap.get(columnIndex); // 处理数据 } }}解释一下这些代码
这段代码是使用EasyExcel读取Excel文件并解析数据的核心逻辑,具体解释如下:
```java
@Override
public void invoke(Map<Integer, String> data, AnalysisContext context) {
if (context.readRowHolder().getRowIndex() < context.readSheetHolder().getSheet().getHeadLineMun()) {
// 当前行是表头行,存储表头信息
for (Map.Entry<Integer, String> entry : data.entrySet()) {
int columnIndex = entry.getKey();
String columnName = entry.getValue();
headMap.put(columnIndex, columnName);
}
} else {
// 当前行是数据行,进行数据处理
for (Map.Entry<Integer, String> entry : data.entrySet()) {
int columnIndex = entry.getKey();
String columnValue = entry.getValue();
String columnName = headMap.get(columnIndex);
// 处理数据
}
}
}
```
1. `public void invoke(Map<Integer, String> data, AnalysisContext context)`:该方法是实现`AnalysisEventListener`接口时必须实现的方法,用于处理Excel文件中的每一行数据。当读取到一行数据时,该方法会被调用一次。
2. `if (context.readRowHolder().getRowIndex() < context.readSheetHolder().getSheet().getHeadLineMun())`:判断当前行是否为表头行。通过`context.readRowHolder().getRowIndex()`获取当前行的索引,通过`context.readSheetHolder().getSheet().getHeadLineMun()`获取表头所在的开始行索引,如果当前行的索引小于表头开始行索引则说明当前行是表头行。
3. `for (Map.Entry<Integer, String> entry : data.entrySet())`:遍历当前行的所有列数据。`data`是当前行的数据Map,key为列索引,value为该列的数据值。通过`entry.getKey()`获取列索引,通过`entry.getValue()`获取列数据值。
4. `int columnIndex = entry.getKey();`:获取当前列的索引。
5. `String columnName = entry.getValue();`:获取当前列的数据值。
6. `headMap.put(columnIndex, columnName);`:将当前列的索引和数据值存储在`headMap`中。`headMap`是一个`TreeMap`,用于存储表头信息。在`invokeHeadMap()`方法中,会将所有的表头信息存储在`headMap`中。
7. `String columnValue = entry.getValue();`:获取当前列的数据值。
8. `String columnName = headMap.get(columnIndex);`:根据当前列的索引获取表头的名称。
9. `// 处理数据`:根据表头名称和列数据值,进行数据处理。
总的来说,这段代码的作用是:判断当前行是否为表头行,如果是则将表头信息存储在`headMap`中;如果不是则进行数据处理。在数据处理时,根据表头名称和列数据值进行处理。
阅读全文