1. 本章任务
数据库表构建完成后,开始开发数据模型类和数据访问类。
2. 数据模型类开发
数据模型类一般跟表一一对应,这个非常简单,直接贴代码就OK。此处为了节省篇幅,省略get/set方法。
/**
* 机构
*/
public class Depart {
private String id;
private String name;
private String type;
private String parentId;
}
/**
* 流程
*/
public class Flow {
private String id;
private String studentId;
private String studentName;
private String projectId;
private String projectName;
private String content;
private String classUserId;
private String classAdvice;
private String collegeUserId;
private String collegeAdvice;
private String schoolUserId;
private String schoolAdvice;
private String currentUserId;
private String currentNode;
}
/**
* 菜单
*/
public class Menu {
private String id;
private String name;
private String path;
}
/**
* 项目
*/
public class Project {
private String id;
private String type;
private String name;
private String about;
}
/**
* 问题
*/
public class Question {
private String id;
private String userId;
private String userName;
private String departId;
private String departName;
private String content;
private String reply;
}
/**
* 角色菜单表
*/
public class RoleMenu {
private String id;
private String roleId;
private String menuId;
}
/**
* 用户
*/
public class User {
private String id;
private String userName;
private String loginName;
private String password;
private String role;
private String departId;
}
3. 数据访问类选型
之前一个系列的教程[熊猫大哥大教程–JSP+Servlet培训班作业管理系统开发教程]采用了原生的JDBC,其中重复的代码相当多,写起来挺累。
然鹅此时我们也还不想使用Spring/MyBatis等框架,这些属于后续教程的内容。
所以我们选择使用Apache组织提供的一个非常轻量级且简单的框架Apache Common DbUtils
。
打开[下载链接] commons.apache.org/proper/commons-dbutils/download_dbutils.cgi,点击标注链接下载类库,下载完成后将commons-dbutils-1.7.jar
拷贝到WebContent/WEB-INF/lib
下使用即可。
4. 数据访问类开发
Apache Common DbUtils
是用来对数据库增删改查进行访问的类库,提供了一种简洁的模板代码,非常好理解。
但是在使用之前还需要先封装一个数据库连接工具类,用来向Apache Common DbUtils
提供数据库连接。
/**
* 数据库连接工具类
*/
public class ConnectionUtils {
// 连接所需的固定参数
private static String driver = "com.mysql.jdbc.Driver";
private static String url = "jdbc:mysql://127.0.0.1:3306/scholar-system?useUnicode=true&characterEncoding=utf-8&useSSL=false";
private static String user = "root";
private static String password = "Easy@0122";
// 初始化的时候加载去的弄
static {
try {
Class.forName(driver);
} catch (ClassNotFoundException e) {
throw new ExceptionInInitializerError(e);
}
}
/**
* 获取连接
*/
public static Connection getConnection() throws SQLException {
return DriverManager.getConnection(url, user, password);
}
/**
* 释放连接
*/
public static void releaseConnection(Connection conn) {
if (conn != null)
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
接下来,就可以利用DbUtils开发数据访问类了,此处我们以MenuDao的开发为例说明下,其他类几乎一模一样。
/**
* 菜单数据访问类
*/
public class MenuDao {
/**
* 新增
*/
public void insert(Menu menu) throws Exception {
Connection conn = ConnectionUtils.getConnection();
String sql = "insert into menu(name,path)values(?,?)";
Object[] params = { menu.getName(), menu.getPath() };
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 menu where id =?";
Object[] params = { id };
QueryRunner runner = new QueryRunner();
runner.update(conn, sql, params);
ConnectionUtils.releaseConnection(conn);
}
/**
* 更新
*/
public void update(Menu menu) throws Exception {
Connection conn = ConnectionUtils.getConnection();
String sql = "update menu set name=?,path=? where id =?";
Object[] params = { menu.getName(), menu.getPath(), menu.getId() };
QueryRunner runner = new QueryRunner();
runner.update(conn, sql, params);
ConnectionUtils.releaseConnection(conn);
}
/**
* 获取一个
*/
public Menu getById(String id) throws Exception {
Connection conn = ConnectionUtils.getConnection();
String sql = "select * from menu where id =?";
Object[] params = { id };
QueryRunner runner = new QueryRunner();
Menu menu = (Menu) runner.query(conn, sql, new BeanHandler