支持事件信息表(zhrj_alarm_info)表分页查询,并且需要将以下两个字段进行返回: 事件信息表中“部门ID(dept_id)”列,对应的dept_name。 事件信息表中“事件类型(event_type)”列,对应的display_value。 事件信息表中“事件状态(event_status)”列,对应的display_value。 支持按照event_reasons列进行模糊匹配查询。java代码怎么写
时间: 2024-02-23 10:02:40 浏览: 126
好的,以下是Java代码示例,用于查询事件信息表中的数据并满足要求:
```java
import java.sql.*;
public class EventInfoDao {
private Connection conn = null;
private PreparedStatement pstmt = null;
public EventInfoDao() {
try {
Class.forName("com.mysql.jdbc.Driver");
String url = "jdbc:mysql://localhost:3306/db_name?useUnicode=true&characterEncoding=UTF-8";
String username = "root";
String password = "password";
conn = DriverManager.getConnection(url, username, password);
} catch (ClassNotFoundException | SQLException e) {
e.printStackTrace();
}
}
public ResultSet getEventInfo(int pageSize, int pageNum, String eventReasons) {
ResultSet rs = null;
try {
String sql = "SELECT zhrj_alarm_info.*, zhrj_dept.dept_name, " +
"menu1.display_value AS event_type_name, " +
"menu2.display_value AS event_status_name " +
"FROM zhrj_alarm_info " +
"LEFT JOIN zhrj_dept ON zhrj_alarm_info.dept_id = zhrj_dept.dept_id " +
"LEFT JOIN zhrj_menu AS menu1 ON zhrj_alarm_info.event_type = menu1.actual_value AND menu1.menu_name = 'event_type' " +
"LEFT JOIN zhrj_menu AS menu2 ON zhrj_alarm_info.event_status = menu2.actual_value AND menu2.menu_name = 'event_status' " +
"WHERE zhrj_alarm_info.event_reasons LIKE ? " +
"ORDER BY zhrj_alarm_info.create_time DESC " +
"LIMIT ?, ?";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, "%" + eventReasons + "%");
pstmt.setInt(2, (pageNum - 1) * pageSize);
pstmt.setInt(3, pageSize);
rs = pstmt.executeQuery();
} catch (SQLException e) {
e.printStackTrace();
}
return rs;
}
public static void main(String[] args) throws SQLException {
EventInfoDao dao = new EventInfoDao();
ResultSet rs = dao.getEventInfo(10, 1, "test");
while (rs.next()) {
System.out.println("event_id: " + rs.getInt("event_id") +
", dept_name: " + rs.getString("dept_name") +
", event_type_name: " + rs.getString("event_type_name") +
", event_status_name: " + rs.getString("event_status_name"));
}
}
}
```
在上面的代码中,我们使用了MySQL数据库,并且假设数据库名为"db_name"。您需要将上面的代码中的数据库连接相关信息更改为您自己数据库的信息。同时,为了避免SQL注入攻击,我们使用了PreparedStatement来执行SQL查询,并且通过设置参数的方式来传递用户输入的数据。
在`getEventInfo()`方法中,我们使用了LEFT JOIN来关联组织机构表(zhrj_dept)和菜单表(zhrj_menu),并且使用了LIKE运算符来进行事件原因(event_reasons)的模糊匹配查询。同时,我们在SQL查询中使用了ORDER BY来按照创建时间(create_time)进行降序排序,并且使用了LIMIT来进行分页查询。
最后,在`main()`方法中,我们调用`getEventInfo()`方法并展示了查询结果。您可以根据实际情况进行修改。
阅读全文