DBUtils以及学生管理系统

本文介绍了如何使用DBUtils进行通用的增删改查操作,详细讲解了开发模式,包括直接在JSP中写Java代码和MVC设计模式。接着,深入探讨了学生管理系统的实现,包括项目的创建、配置、DAO层、Service层以及Servlet的具体功能实现,涉及物理分页和逻辑分页的方法。
摘要由CSDN通过智能技术生成
一、DBUtils通用增删改查代码
  • 第一种:没有释放资源,有if条件语句
    在这里插入图片描述
  • object…args与onject[]args的区别
    在这里插入图片描述
    在这里插入图片描述以问号个数为准
  • 元数据(Meata data)
    描述数据的数据 String sql,描述这份sql字符串的数据叫做元数据
    数据库元数据:DatabaseMetaData
    参数元数据:ParameterMetaData
    结果集元数据:ResultSetMetaData
    在这里插入图片描述
二、开发模式
  • 1)开发模式一:
    在jsp里面直接写java代码
  • 2)开发模式二:MVC设计模式
    M:model(模型层)封装数据JavaBean
    V:View(视图层)jsp专注于显示
    C:Controller(控制层)Servlet接收页面的请求,找模型层去处理,然后响应数据输出
    对于大型项目:分层,逻辑比较清楚,便于维护,拓展项目
  • 3)三层架构
    在这里插入图片描述

三、学生管理系统

1)准备阶段

Eclipse “new”“other”“New Dynamic Web Project”
在这里插入图片描述 “WebContent”“new”“JSP file”
“Java Resources”“src”“new”“servlet”
日期对象时倒入util包
在这里插入图片描述
Eclipse导入jar包:
右击项目“properties”
在这里插入图片描述

  • DBUtils:
    DbUtils是一种 JDBC Utility Component (翻译过来大概就是:JDBC实用部件),故名思意,和数据库操作有关(DbUtils是一个工具类库,用来进行数据库通信的)
    在 DbUtils 中的核心类/接口为 QueryRunner 和 ResultSetHandler
    QueryRunner
    QueryRunner中一共有6种方法:
    execute(执行SQL语句)
    batch(批量处理语句)
    insert(执行INSERT语句)
    insertBatch(批量处理INSERT语句)
    query(SQL中 SELECT 语句)
    update(SQL中 INSERT, UPDATE, 或 DELETE 语句)
    源码:
    导入c3p0的jar包和c3p0的配置文件后,配置数据源:
//获取数据源
private static ComboPooledDataSource dataSource = new ComboPooledDataSource();
//QueryRunner需要一个数据源作为参数
private static QueryRunner queryRunner = new QueryRunner(dataSource);
private static void showAll(){
   
        try{
   
            String sql = "SELECT * FROM test;";
            List<Object[]> list = queryRunner.query(sql, new ArrayListHandler());
            for (Object[] aList : list) {
   
                System.out.println(Arrays.toString(aList) + " ");
            }
        }catch (SQLException e){
   
            throw new RuntimeException(e);
        }
    }

在这里插入图片描述

  • 获取单选框或者复选框的值
    1)利用js得到其value的值并将其赋值给name,传到servlet
    单选框:
    在这里插入图片描述 复选框:
    在这里插入图片描述2)利用jstl来来判断单选框的值或者复选框中是否包含某值,再将它定义为checked
    在这里插入图片描述单选框
    在这里插入图片描述复选框
    在这里插入图片描述
  • 分页功能
    物理分页:来数据库查询的时候,只查一页的数据就返回了
    逻辑分页:一口去把所有的数据全部查询出来,然后放置在内存中
2)学生管理系统

Dao

StudentDao接口

public interface StudentDao {
   
	//接口里定义的都是常量,一页显示多少条数据
	int PAGE_SIZE = 5;
	//分页查询
	List<Student> findStudentByPage (int currentPage) throws SQLException;
	//查询所有学生
	List<Student> findAll()throws SQLException;
	//根据学生id查询单个学生对象
	Student findStudentById(int sid)throws SQLException;
	//根据学生姓名或者id模糊查询,返回值可能是list
	List<Student>searchStudent(String sname,String sgender) throws SQLException;
	//添加信息
	void insert(Student student)throws SQLException;
	//根据id删除学生
	void delete(int sid) throws SQLException;
	//更新学生信息
	void update(Student student)throws SQLException;
    //查询总的学生记录
	int findCount()throws SQLException;
}

StudentDaoImpl

public class StudentDaoImpl implements StudentDao {
   
	//分页查询
	@Override
	public List<Student> findStudentByPage(int currentPage) throws SQLException {
   
		QueryRunner runner = new QueryRunner(JDBCUtil.getDataSource());
		//第一个问号表示一页返回多少条记录,第二个问号表示跳过前面多少条记录
		//5   0  第一页(1-1)*5
		//5   5  第二页(2-1)*5
		//5   10 第三页(3-1)*5
		//从第几条(第二个问号)开始读取几条(第一个问号)
		return runner.query("select * from stu limit ? offset ?", new BeanListHandler<Student>(Student.class),PAGE_SIZE,(currentPage-1)*PAGE_SIZE);
	}
	//全部查询
	@Override
	public List<Student> findAll() throws SQLException {
   
		QueryRunner runner = new QueryRunner(JDBCUtil.getDataSource());
		return runner.query("select * from stu", new BeanListHandler<Student>(Student.class));
	}
	//根据ID查询
	@Override
	public Student findStudentById(int sid) throws SQLException {
   
		QueryRunner runner = new QueryRunner(JDBCUtil.getDataSource());
		return runner.query("select * from stu where sid = ?",new BeanHandler<Student>(Student.class),sid);
	}
	//模糊查询(根据name或者性别查询)
	@Override
	public List<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值