(熊猫大哥大教程)EasyUI+JavaWeb奖助学金管理系统[5]-使用ApacheCommonDbUtils进行数据访问类开发

全部教程:熊猫大哥大教程索引
期待您的关注,继续咱们的缘分!

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
1
1
1

大功告成!说实话小项目用Apache Common DbUtils已经足够简洁完美了,非常推荐使用!

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 点我我会动 设计师:上身试试 返回首页