EasyUI+JavaWeb奖助学金管理系统[15]-人员管理功能实现

点此查看本系列文章目录、源代码、配套视频教程

1. 本章任务

之前已陆续实现了登录、后台管理主页面、项目管理、机构管理功能。

本章来实现下人员管理功能,人员管理功能由学校管理员角色使用,其他学校管理员、班主任、学生均不允许进行人员管理操作。

由于常规的增删改查之前已经讲解的非常详细了,所以本篇主要讲解一些比较重点难点的内容。同时为了方便新手学习,在本篇的最后也会附上人员管理功能的全部相关类代码,便于粘贴使用。我就是这么NICE,无需感谢,哈哈。

2. 人员分页浏览的实现

人员的分页浏览,是有需要注意的地方的。

首先,是人员表关联了机构表,需要从机构表中获取人员对应的机构名称,此时涉及到联表查询。

第二,数据库中存储的人员的角色是英文字符串,但是在界面上显示时需要格式化为对应的中文含义,所以此处涉及到EasyUI表格列的格式化问题。

好的,为了能够在页面上显示机构名称,修改User实体类添加显示字段departName。

/**
 * 用户
 */
public class User {
	private String id;
	private String userName;
	private String loginName;
	private String password;
	private String role;
	private String departId;
	/**
	 * 冗余查询字段
	 */
	private String departName;
	// 省略get set
}

EasyUI数据表格显示时,直接使用departName字段即可。

		<table id="mainTable" title="人员列表" class="easyui-datagrid" url="CoreServlet?method=getUserPage" pagination="true"
		 singleSelect="true" fitColumns="true">
			<thead>
				<tr>
					<th data-options="field:'id',width:50">序号</th>
					<th data-options="field:'userName',width:50">姓名</th>
					<th data-options="field:'loginName',width:50">登录名</th>
					<th data-options="field:'role',width:50" formatter="formatRole">角色</th>
					<th data-options="field:'departName',width:100">所属机构</th>
				</tr>
			</thead>
		</table>

此时由于数据库中存储的角色是英文字符串,需要通过格式化方法转化为中文,即formatRole方法。

		// 格式化类型
		function formatRole(val, row) {
			if (val == "schoolmaster") {
				return "学校管理员";
			} else if (val == "collegemaster") {
				return "学院管理员";
			} else if (val == "classmaster") {
				return "班主任";
			} else {
				return "学生";
			}
		}

最后,数据库操作层要实现联表查询,修改UserDao如下。

	/**
	 * 获取数量
	 */
	public int getCount() throws Exception {
		Connection conn = ConnectionUtils.getConnection();
		String sql = "select count(id) from user ";
		QueryRunner runner = new QueryRunner();
		Number number = (Number) runner.query(conn, sql, new ScalarHandler());
		int value = number.intValue();
		ConnectionUtils.releaseConnection(conn);
		return value;
	}

	/**
	 * 分页查询
	 */
	public List<User> getPage(int page, int rows) throws Exception {
		Connection conn = ConnectionUtils.getConnection();
		String sql = "select u.*,d.name as departName from user u left join depart d on u.departId=d.id limit ?,?";
		QueryRunner runner = new QueryRunner();
		Object[] params = { (page - 1) * rows, rows };
		List<User> users = runner.query(conn, sql, new BeanListHandler<User>(User.class), params);
		ConnectionUtils.releaseConnection(conn);
		return users;
	}

3. 人员新增功能的实现

人员新增时,有两个关键节点。

第一是人员的角色,需要通过下拉框(easyui-combobox)来实现,下拉框的显示内容和值分别对应角色的中文名称和英文存储值。

第二是人员所属的机构,也是下拉框实现的,但是机构的信息是从数据库中获取的。下拉框的内容和值分别对应机构的id和name。

OK,我们先来设计下新增弹窗,注意两个下拉框:

	<!-- 新增弹窗 -->
	<div id="dialog-add" class="easyui-dialog" title="新增" data-options="iconCls:'icon-ok',closed:'true'" style="width: 600px; height: 400px; padding: 10px">
		<table>
			<tr>
				<td>姓名</td>
				<td><input id="add-userName" class="easyui-textbox" style="width: 200px"></td>
			</tr>
			<tr>
				<td>登录名:</td>
				<td><input id="add-loginName" class="easyui-textbox" style="width: 200px"></td>
			</tr>
			<tr>
				<td>角色:</td>
				<td><select id="add-role" class="easyui-combobox" style="width: 200px;">
						<option value="schoolmaster">学校管理员</option>
						<option value="collegemaster">学院管理员</option>
						<option value="classmaster">班主任</option>
						<option value="student">学生</option>
					</select></td>
			</tr>
			<tr>
				<td>所属机构:</td>
				<td><select id="add-departId" class="easyui-combobox" style="width: 200px;">
					</select></td>
			</tr>
			<tr>
				<td></td>
				<td><a id="btn" onclick="btnAddSubmit()" href="#" class="easyui-linkbutton">保存</a></td>
			</tr>
		</table>
	</div>

然后在页面初始化时,从数据库中获取机构信息,将加载到所属机构的下拉框add-departId中。

		// 初始化
		$(function() {
			loadDeparts();
		});
		// 加载机构
		function loadDeparts() {
			$.ajax({
				url: "CoreServlet?method=getDepartList",
				type: "post",
				dataType: "json",
				data: null,
				success: function(res) {
					console.log(res);
					if (res.code == 0) {
						// 为指定下拉框增加选项
						addItemsForSelect("#add-departId", res.data);
						addItemsForSelect("#edit-departId", res.data);
					} else { //提示错误信息
						alert(res.msg);
					}
				},
			});
		}
		// 为下拉框增加选项
		function addItemsForSelect(id, data) {
			// 清空选项
			$(id).combobox("clear");
			var items = [];
			// 动态添加的选项
			$.each(data, function(i, v) { //遍历返回值
				items.push({
					"value": v.id,
					"text": v.name
				});
			});
			// 加载数据
			$(id).combobox("loadData", items);
			// 设置默认选中值
			$(id).combobox("setValue", items[0].value);
		}

其他的保存就跟之前的项目、机构管理类似了,此处不再详述。需要注意新增用户时,可以将其密码设置为默认123456,用户登录后自行修改即可。

3. 人员编辑功能的实现

需要注意编辑人员时,人员的所属机构同样是从数据库中获取的,所以在上面代码中会有如下代码,即同时为新增弹窗、编辑弹窗的机构下拉框增加机构列表选项。

addItemsForSelect("#add-departId", res.data);
addItemsForSelect("#edit-departId", res.data);

其他功能就是常规的编辑功能了,此处不再赘述。

4. 人员删除功能的实现

之前项目管理、机构管理均没有删除功能,主要是担心会删除被引用的基础数据。

人员管理是需要删除功能的,毕竟人员录入错误的可能性还是比较大的。PS:在实际的项目中,对业务数据的删除大多采用软删除,即通过一个数据库字段描述数据是否被业务删除,此处我们就简单点,直接将其从数据库中删除。

由于删除操作风险性比较高,为了避免不小心点到删除按钮导致的误删除,我们在删除之前应该弹窗提示当前用户是否确认删除。

		// 删除
		function btnRemoveClick() {
			// 获取当前选中行
			var row = $('#mainTable').datagrid('getSelected');
			if (row == null) {
				alert("请选择要删除的行");
				return;
			}
			// 提示用户确认
			$.messager.confirm('确认?', '您确认删除吗?', function(r) {
				if (r) { //用户选择确认
					$.ajax({
						url: "CoreServlet?method=removeUser",
						type: "post",
						dataType: "json",
						data: {
							id: row.id
						},
						success: function(res) {
							console.log(res);
							if (res.code == 0) { //成功则刷新表格
								$('#mainTable').datagrid('reload');
							} else { //提示错误信息
								alert(res.msg);
							}
						},
					});
				}
			});
		}

后台添加对应删除方法即可:

		// 删除用户
		else if (method.equals("removeUser")) {
			UserDao userDao = new UserDao();
			userDao.deleteById(request.getParameter("id"));
			result.setCode(0);
			result.setMsg("操作成功");
		}

5. 本章完整源代码

为了方便大家学习,贴上本章完整源码。

5.1 userManager.html

<!DOCTYPE html>
<html>

	<head>
		<meta charset="UTF-8">
		<title>用户管理</title>
		<link rel="stylesheet" type="text/css" href="easyui/themes/default/easyui.css">
		<link rel="stylesheet" type="text/css" href="easyui/themes/icon.css">
		<link rel="stylesheet" type="text/css" href="css/main.css">
		<script type="text/javascript" src="easyui/jquery.min.js"></script>
		<script type="text/javascript" src="easyui/jquery.easyui.min.js"></script>
		<script type="text/javascript" src="easyui/locale/easyui-lang-zh_CN.js"></script>
	</head>

	<body>
		<div class="tool-box">
			<a id="btn" onclick="btnAddClick()" href="#" class="easyui-linkbutton" data-options="iconCls:'icon-add'">新增</a> <a
			 id="btn" onclick="btnEditClick()" href="#" class="easyui-linkbutton" data-options="iconCls:'icon-edit'">编辑</a> <a
			 id="btn" onclick="btnRemoveClick()" href="#" class="easyui-linkbutton" data-options="iconCls:'icon-remove'">删除</a>
		</div>
		<table id="mainTable" title="人员列表" class="easyui-datagrid" url="CoreServlet?method=getUserPage" pagination="true"
		 singleSelect="true" fitColumns="true">
			<thead>
				<tr>
					<th data-options="field:'id',width:50">序号</th>
					<th data-options="field:'userName',width:50">姓名</th>
					<th data-options="field:'loginName',width:50">登录名</th>
					<th data-options="field:'role',width:50" formatter="formatRole">角色</th>
					<th data-options="field:'departName',width:100">所属机构</th>
				</tr>
			</thead>
		</table>
		<!-- 新增弹窗 -->
		<div id="dialog-add" class="easyui-dialog" title="新增" data-options="iconCls:'icon-ok',closed:'true'" style="width: 600px; height: 400px; padding: 10px">
			<table>
				<tr>
					<td>姓名</td>
					<td><input id="add-userName" class="easyui-textbox" style="width: 200px"></td>
				</tr>
				<tr>
					<td>登录名:</td>
					<td><input id="add-loginName" class="easyui-textbox" style="width: 200px"></td>
				</tr>
				<tr>
					<td>角色:</td>
					<td><select id="add-role" class="easyui-combobox" style="width: 200px;">
							<option value="schoolmaster">学校管理员</option>
							<option value="collegemaster">学院管理员</option>
							<option value="classmaster">班主任</option>
							<option value="student">学生</option>
						</select></td>
				</tr>
				<tr>
					<td>所属机构:</td>
					<td><select id="add-departId" class="easyui-combobox" style="width: 200px;">
						</select></td>
				</tr>
				<tr>
					<td></td>
					<td><a id="btn" onclick="btnAddSubmit()" href="#" class="easyui-linkbutton">保存</a></td>
				</tr>
			</table>
		</div>
		<!-- 编辑弹窗 -->
		<div id="dialog-edit" class="easyui-dialog" title="编辑" data-options="iconCls:'icon-ok',closed:'true'" style="width: 600px; height: 400px; padding: 10px">
			<table>
				<tr>
					<td>编号:</td>
					<td><input id="edit-id" class="easyui-textbox" style="width: 200px" disabled></td>
				</tr>
				<tr>
					<td>姓名</td>
					<td><input id="edit-userName" class="easyui-textbox" style="width: 200px"></td>
				</tr>
				<tr>
					<td>登录名:</td>
					<td><input id="edit-loginName" class="easyui-textbox" style="width: 200px"></td>
				</tr>
				<tr>
					<td>角色:</td>
					<td><select id="edit-role" class="easyui-combobox" style="width: 200px;">
							<option value="schoolmaster">学校管理员</option>
							<option value="collegemaster">学院管理员</option>
							<option value="classmaster">班主任</option>
							<option value="student">学生</option>
						</select></td>
				</tr>
				<tr>
					<td>所属机构:</td>
					<td><select id="edit-departId" class="easyui-combobox" style="width: 200px;">
						</select></td>
				</tr>
				<tr>
					<td></td>
					<td><a id="btn" onclick="btnEditSubmit()" href="#" class="easyui-linkbutton">保存</a></td>
				</tr>
			</table>
		</div>
	</body>
	<script>
		// 初始化
		$(function() {
			loadDeparts();
		});
		// 加载机构
		function loadDeparts() {
			$.ajax({
				url: "CoreServlet?method=getDepartList",
				type: "post",
				dataType: "json",
				data: null,
				success: function(res) {
					console.log(res);
					if (res.code == 0) {
						// 为指定下拉框增加选项
						addItemsForSelect("#add-departId", res.data);
						addItemsForSelect("#edit-departId", res.data);
					} else { //提示错误信息
						alert(res.msg);
					}
				},
			});
		}
		// 为下拉框增加选项
		function addItemsForSelect(id, data) {
			// 清空选项
			$(id).combobox("clear");
			var items = [];
			// 动态添加的选项
			$.each(data, function(i, v) { //遍历返回值
				items.push({
					"value": v.id,
					"text": v.name
				});
			});
			// 加载数据
			$(id).combobox("loadData", items);
			// 设置默认选中值
			$(id).combobox("setValue", items[0].value);
		}

		// 新增点击
		function btnAddClick() {
			$('#dialog-add').dialog('open');
		}
		// 新增保存
		function btnAddSubmit() {
			var param = {
				userName: $("#add-userName").val(),
				loginName: $("#add-loginName").val(),
				role: $("#add-role").combobox("getValue"), //获取选中项的值
				departId: $("#add-departId").combobox("getValue"), //获取选中项的值
			}
			$.ajax({
				url: "CoreServlet?method=addUser",
				type: "post",
				dataType: "json",
				data: param,
				success: function(res) {
					console.log(res);
					if (res.code == 0) { //成功则刷新表格
						$('#mainTable').datagrid('reload');
						$('#dialog-add').dialog('close');
					} else { //提示错误信息
						alert(res.msg);
					}
				},
			});
		}
		// 编辑点击
		function btnEditClick() {
			// 获取当前选中行
			var row = $('#mainTable').datagrid('getSelected');
			if (row == null) {
				alert("请选择要修改的行");
				return;
			}
			// 将选中行信息设置到弹窗 
			$("#edit-id").textbox("setValue", row.id);
			$("#edit-userName").textbox("setValue", row.userName);
			$("#edit-loginName").textbox("setValue", row.loginName);
			$("#edit-role").combobox("setValue", row.role);
			$("#edit-departId").combobox("setValue", row.departId);
			$('#dialog-edit').dialog('open');
		}
		// 编辑保存
		function btnEditSubmit() {
			var param = {
				id: $("#edit-id").val(),
				userName: $("#edit-userName").val(),
				loginName: $("#edit-loginName").val(),
				role: $("#edit-role").combobox("getValue"),
				departId: $("#edit-departId").combobox("getValue"),
			}
			$.ajax({
				url: "CoreServlet?method=editUser",
				type: "post",
				dataType: "json",
				data: param,
				success: function(res) {
					console.log(res);
					if (res.code == 0) { //成功则刷新表格
						$('#mainTable').datagrid('reload');
						$('#dialog-edit').dialog('close');
					} else { //提示错误信息
						alert(res.msg);
					}
				},
			});
		}
		// 格式化类型
		function formatRole(val, row) {
			if (val == "schoolmaster") {
				return "学校管理员";
			} else if (val == "collegemaster") {
				return "学院管理员";
			} else if (val == "classmaster") {
				return "班主任";
			} else {
				return "学生";
			}
		}
		// 删除
		function btnRemoveClick() {
			// 获取当前选中行
			var row = $('#mainTable').datagrid('getSelected');
			if (row == null) {
				alert("请选择要删除的行");
				return;
			}
			// 提示用户确认
			$.messager.confirm('确认?', '您确认删除吗?', function(r) {
				if (r) { //用户选择确认
					$.ajax({
						url: "CoreServlet?method=removeUser",
						type: "post",
						dataType: "json",
						data: {
							id: row.id
						},
						success: function(res) {
							console.log(res);
							if (res.code == 0) { //成功则刷新表格
								$('#mainTable').datagrid('reload');
							} else { //提示错误信息
								alert(res.msg);
							}
						},
					});
				}
			});
		}
	</script>

</html>

5.2 CoreServlet.java

@WebServlet("/CoreServlet")
public class CoreServlet extends HttpServlet {
	public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// 设置输入输出格式、编码
		response.setContentType("text/html");
		request.setCharacterEncoding("utf-8");
		response.setCharacterEncoding("utf-8");
		PrintWriter out = response.getWriter(); // 获取writer方法,用于将数据返回给ajax
		// 获取用户在网页输入的用户名和密码
		Result result = null;
		try {
			result = handleRequest(request);
		} catch (Exception ex) {
			result = new Result();
			result.setCode(9999);
			result.setMsg(ex.getMessage());
			System.err.println(ex.getMessage());
		} finally {
			out.write(JSON.toJSONString(result));
			out.flush();
			out.close();
		}
	}

	/**
	 * 具体处理请求
	 */
	public Result handleRequest(HttpServletRequest request) throws Exception {
		Result result = new Result();
		String method = request.getParameter("method");
		// 如果未登录,且不是请求的登录方法,直接抛出异常
		User loginUser = (User) request.getSession().getAttribute("loginUser");
		if (loginUser == null && !method.equals("login")) {
			throw new Exception("未登录!");
		}
		// 请求页码、每页显示行数、总数
		int page = 1, rows = 10, total = 0;
		if (method.contains("Page") == true) {// 当前为分页请求
			// 获取
			String inputPage = request.getParameter("page");
			String inputRows = request.getParameter("rows");
			page = (inputPage == null) ? 1 : Integer.parseInt(inputPage);
			rows = (inputRows == null) ? 10 : Integer.parseInt(inputRows);
		}
		// 登录处理
		if (method.equals("login")) {
			String loginName = request.getParameter("loginName");
			String password = request.getParameter("password");
			UserDao userDao = new UserDao();
			List<User> users = userDao.getUsersByLoginNameAndPassword(loginName, password);
			if (users != null && users.size() == 1) {// 登录成功
				result.setCode(0);
				result.setMsg("操作成功");
				result.setData(users.get(0));
				request.getSession().setAttribute("loginUser", users.get(0));
			} else {// 登录失败
				result.setCode(9999);
				result.setMsg("操作失败");
			}
		}
		// 查询登录用户拥有的菜单
		else if (method.equals("getMenusOfUser")) {
			MenuDao menuDao = new MenuDao();
			result.setData(menuDao.getMenusOfUser(loginUser));// 返回数据为对应菜单
			result.setCode(0);
			result.setMsg("操作成功");
		}
		// 获取项目分页
		else if (method.equals("getProjectPage")) {
			ProjectDao projectDao = new ProjectDao();
			total = projectDao.getCount();
			result.setTotal(total);
			result.setRows(projectDao.getPage(page, rows));
		}
		// 新增项目保存
		else if (method.equals("addProject")) {
			ProjectDao projectDao = new ProjectDao();
			Project project = new Project();
			project.setType(request.getParameter("type"));
			project.setName(request.getParameter("name"));
			project.setAbout(request.getParameter("about"));
			projectDao.insert(project);
			result.setCode(0);
			result.setMsg("操作成功");
		}
		// 编辑项目保存
		else if (method.equals("editProject")) {
			ProjectDao projectDao = new ProjectDao();
			Project project = new Project();
			project.setId(request.getParameter("id"));
			project.setType(request.getParameter("type"));
			project.setName(request.getParameter("name"));
			project.setAbout(request.getParameter("about"));
			projectDao.update(project);
			result.setCode(0);
			result.setMsg("操作成功");
		}
		// 获取机构列表
		else if (method.equals("getDepartList")) {
			DepartDao departDao = new DepartDao();
			result.setCode(0);
			result.setData(departDao.getAll());
		}
		// 获取机构分页
		else if (method.equals("getDepartPage")) {
			DepartDao departDao = new DepartDao();
			total = departDao.getCount();
			result.setTotal(total);
			result.setRows(departDao.getPage(page, rows));
		}
		// 新增机构保存
		else if (method.equals("addDepart")) {
			DepartDao departDao = new DepartDao();
			Depart depart = new Depart();
			depart.setType(request.getParameter("type"));
			depart.setName(request.getParameter("name"));
			depart.setParentId(request.getParameter("parentId"));
			departDao.insert(depart);
			result.setCode(0);
			result.setMsg("操作成功");
		}
		// 编辑机构保存
		else if (method.equals("editDepart")) {
			DepartDao departDao = new DepartDao();
			Depart depart = new Depart();
			depart.setId(request.getParameter("id"));
			depart.setType(request.getParameter("type"));
			depart.setName(request.getParameter("name"));
			depart.setParentId(request.getParameter("parentId"));
			departDao.update(depart);
			result.setCode(0);
			result.setMsg("操作成功");
		}
		// 获取人员分页
		else if (method.equals("getUserPage")) {
			UserDao userDao = new UserDao();
			total = userDao.getCount();
			result.setTotal(total);
			result.setRows(userDao.getPage(page, rows));
		}
		// 新增人员保存
		else if (method.equals("addUser")) {
			UserDao userDao = new UserDao();
			User user = new User();
			user.setUserName(request.getParameter("userName"));
			user.setLoginName(request.getParameter("loginName"));
			user.setRole(request.getParameter("role"));
			user.setDepartId(request.getParameter("departId"));
			user.setPassword("123456");
			userDao.insert(user);
			result.setCode(0);
			result.setMsg("操作成功");
		}
		// 编辑人员保存
		else if (method.equals("editUser")) {
			UserDao userDao = new UserDao();
			User user = new User();
			user.setId(request.getParameter("id"));
			user.setUserName(request.getParameter("userName"));
			user.setLoginName(request.getParameter("loginName"));
			user.setRole(request.getParameter("role"));
			user.setDepartId(request.getParameter("departId"));
			userDao.update(user);
			result.setCode(0);
			result.setMsg("操作成功");
		}
		// 删除用户
		else if (method.equals("removeUser")) {
			UserDao userDao = new UserDao();
			userDao.deleteById(request.getParameter("id"));
			result.setCode(0);
			result.setMsg("操作成功");
		}
		return result;
	}
}

5.3 UserDao.java


/**
 * 用户数据访问类
 */
public class UserDao {

	/**
	 * 通过登录名、密码获取用户
	 */
	public List<User> getUsersByLoginNameAndPassword(String loginName, String password) throws SQLException {
		Connection conn = ConnectionUtils.getConnection();
		String sql = "select * from user where loginName=? and password=?";
		QueryRunner runner = new QueryRunner();
		Object[] params = { loginName, password };
		List<User> users = runner.query(conn, sql, new BeanListHandler<User>(User.class), params);
		ConnectionUtils.releaseConnection(conn);
		return users;
	}

	/**
	 * 新增
	 */
	public void insert(User user) throws Exception {
		Connection conn = ConnectionUtils.getConnection();
		String sql = "insert into user(userName,loginName,password,role,departId)values(?,?,?,?,?)";
		Object[] params = { user.getUserName(), user.getLoginName(), user.getPassword(), user.getRole(), user.getDepartId() };
		QueryRunner runner = new QueryRunner();
		runner.update(conn, sql, params);
		ConnectionUtils.releaseConnection(conn);
	}

	/**
	 * 移除
	 */
	public void deleteById(String id) throws Exception {
		Connection conn = ConnectionUtils.getConnection();
		String sql = "delete from user where id =?";
		Object[] params = { id };
		QueryRunner runner = new QueryRunner();
		runner.update(conn, sql, params);
		ConnectionUtils.releaseConnection(conn);
	}

	/**
	 * 更新
	 */
	public void update(User user) throws Exception {
		Connection conn = ConnectionUtils.getConnection();
		String sql = "update user set userName=?,loginName=?,password=?,role=?,departId=? where id =?";
		Object[] params = { user.getUserName(), user.getLoginName(), user.getPassword(), user.getRole(), user.getDepartId(), user.getId() };
		QueryRunner runner = new QueryRunner();
		runner.update(conn, sql, params);
		ConnectionUtils.releaseConnection(conn);
	}

	/**
	 * 获取一个
	 */
	public User getById(String id) throws Exception {
		Connection conn = ConnectionUtils.getConnection();
		String sql = "select * from user where id =?";
		Object[] params = { id };
		QueryRunner runner = new QueryRunner();
		User user = (User) runner.query(conn, sql, new BeanHandler<User>(User.class), params);
		ConnectionUtils.releaseConnection(conn);
		return user;
	}

	/**
	 * 获取全部
	 */
	public List<User> getAll() throws Exception {
		Connection conn = ConnectionUtils.getConnection();
		String sql = "select * from user ";
		QueryRunner runner = new QueryRunner();
		List<User> users = runner.query(conn, sql, new BeanListHandler<User>(User.class));
		ConnectionUtils.releaseConnection(conn);
		return users;
	}

	/**
	 * 获取数量
	 */
	public int getCount() throws Exception {
		Connection conn = ConnectionUtils.getConnection();
		String sql = "select count(id) from user ";
		QueryRunner runner = new QueryRunner();
		Number number = (Number) runner.query(conn, sql, new ScalarHandler());
		int value = number.intValue();
		ConnectionUtils.releaseConnection(conn);
		return value;
	}

	/**
	 * 分页查询
	 */
	public List<User> getPage(int page, int rows) throws Exception {
		Connection conn = ConnectionUtils.getConnection();
		String sql = "select u.*,d.name as departName from user u left join depart d on u.departId=d.id limit ?,?";
		QueryRunner runner = new QueryRunner();
		Object[] params = { (page - 1) * rows, rows };
		List<User> users = runner.query(conn, sql, new BeanListHandler<User>(User.class), params);
		ConnectionUtils.releaseConnection(conn);
		return users;
	}
}

6. 总结

万变不离其宗,都是套路。

界面写的多了,自然就知道如何应对新功能。

稳得很。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员大阳

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值