EasyUI+JavaWeb奖助学金管理系统[5]-使用ApacheCommonDbUtils进行数据访问类开发

简介: 本文目录1. 本章任务2. 数据模型类开发3. 数据访问类选型4. 数据访问类开发5. 测试验证

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-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<Menu>(Menu.class), params);
    ConnectionUtils.releaseConnection(conn);
    return menu;
  }
  /**
   * 获取全部
   */
  public List<Menu> getAll() throws Exception {
    Connection conn = ConnectionUtils.getConnection();
    String sql = "select * from menu ";
    QueryRunner runner = new QueryRunner();
    List<Menu> menus = runner.query(conn, sql, new BeanListHandler<Menu>(Menu.class));
    ConnectionUtils.releaseConnection(conn);
    return menus;
  }
  /**
   * 获取数量
   */
  public int getCount() throws Exception {
    Connection conn = ConnectionUtils.getConnection();
    String sql = "select count(id) from menu ";
    QueryRunner runner = new QueryRunner();
    Number number = (Number) runner.query(conn, sql, new ScalarHandler());
    int value = number.intValue();
    ConnectionUtils.releaseConnection(conn);
    return value;
  }
  /**
   * 分页查询
   */
  public List<Menu> getPage(int page, int rows) throws Exception {
    Connection conn = ConnectionUtils.getConnection();
    String sql = "select * from menu limit ?,?";
    QueryRunner runner = new QueryRunner();
    Object[] params = { (page - 1) * rows, rows };
    List<Menu> menus = runner.query(conn, sql, new BeanListHandler<Menu>(Menu.class), params);
    ConnectionUtils.releaseConnection(conn);
    return menus;
  }
}
操作模式非常简单,获取连接后,通过DbUtils提供的类库进行增删改查操作,然后关闭连接即可。
5. 测试验证
开发一个测试类进行验证:
public class MenuTest {
  public static void main(String[] args) throws Exception {
    MenuDao menuDao = new MenuDao();
    Menu addMenu = new Menu();
    addMenu.setName("菜单xxx");
    addMenu.setPath("/xxx");
    menuDao.insert(addMenu);
    Menu updateMenu = new Menu();
    updateMenu.setId("1");
    updateMenu.setName("菜单yyy");
    updateMenu.setPath("/yyy");
    menuDao.update(updateMenu);
    Menu queryMenu = menuDao.getById("1");
    System.out.println(queryMenu.getName());
    System.out.println(menuDao.getAll().size());
    System.out.println(menuDao.getCount());
    System.out.println(menuDao.getPage(1, 10).size());
    menuDao.deleteById("2");
  }
}
输出结果如下
菜单yyy
大功告成!说实话小项目用Apache Common DbUtils已经足够简洁完美了,非常推荐使用!
相关文章
|
6月前
|
Java
struts+hibernate+oracle+easyui实现lazyout组件的简单案例——Action的实现类
struts+hibernate+oracle+easyui实现lazyout组件的简单案例——Action的实现类
|
5月前
基于EasyUI的后台管理系统页面原型_示例图_下载地址
基于EasyUI的后台管理系统页面原型_示例图_下载地址
34 0
|
6月前
|
JavaScript
EasyUi js 加载数据进下拉框combobox
EasyUi js 加载数据进下拉框combobox
|
6月前
|
JavaScript 前端开发
EasyUi js 加载数据表格DataGrid
EasyUi js 加载数据表格DataGrid
|
JavaScript
EasyUI的datagrid每行数据添加操作按钮的方法
EasyUI的datagrid每行数据添加操作按钮的方法
241 0
21EasyUI 数据网格- 取得选中行数据
21EasyUI 数据网格- 取得选中行数据
50 0
easyui06(datagrid数据删改)
easyui06(datagrid数据删改)
|
前端开发
easyui05(datagrid数据新增)
easyui05(datagrid数据新增)
|
数据可视化 安全 Java
【项目源码】基于spring boot+mybatis+easyui开发的质量溯源系统
粮油溯源系统是从种植到加工、包装、库存、物流、销售、售出、异常反馈的全流程可视化质量溯源系统。技术架构:spring boot+mybatis+easyui+mysql
151 0
【项目源码】基于spring boot+mybatis+easyui开发的质量溯源系统