Day39

今晚要体测,所以今天学不了JavaWeb了,假如晚上还有时间,还是可以继续的,加油OVO,javaWeb争取15天内学完.

Day39MySQL+JDBC学完了

domin实体类:管理员类. 学生类. 年级类.

Service业务类:

功能:不涉及到任何输入输出的内容

方法:

  1. 登录验证方法

  2. 返回学生人数

  3. 返回学生列表

  4. 按学号查询学生

  5. 按姓名查询学生

  6. 修改学生

  7. 删除学生

  8. 新增年级

View界面类:

功能:和界面相关的模块

方法:

1. 登录界面
2. 主菜单显示
3. 查看学生人数
4. 查看所有学生
5. 按学号查询学生
6. 按姓名查询学生
7. 修改学生界面
8. 删除学生界面
9. 新增学生界面

Dao: data access object 数据访问对象层

增删改查操作都封装到这里。

通用的增删改方法,针对于任何表。

通用的查询单条记录,针对于任何表。

通用的查询多条记录,针对于任何表。

通用的查询单个值,针对于任何表。

package com.sorrymaker.dao;

import com.sorrymaker.Test11.JDBCUtilsByDruid;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import org.apache.commons.dbutils.handlers.ScalarHandler;

import java.sql.Connection;
import java.util.List;

/**
* @Author nextGame
* @Date 2021/4/26 16:31
* @Version 1.0
*
* 这里面有四个方法,
*/
public class BasicDao<T> {
   QueryRunner qr = new QueryRunner();
   /**
      通用的增删改方法
    */
   public int update(String sql,Object...param) {
       Connection connection = null;
       try {
           connection = JDBCUtilsByDruid.getConnection();
           QueryRunner qr = new QueryRunner();
           int update = qr.update(connection, sql, param);
           return update;
      }catch (Exception e){
           throw new RuntimeException(e);
      }finally {
           JDBCUtilsByDruid.close(null,null,connection);
      }
  }

   /**
    * 返回单个对象,针对于任何表.
    * @return
    */
   public T querySingle(String sql,Class<T> clazz,Object...params){
       Connection connection = null;

       try{
           connection = JDBCUtilsByDruid.getConnection();

           QueryRunner qr = new QueryRunner();
           return qr.query(connection, sql, new BeanHandler<T>(clazz), params);
      }catch (Exception e){
           throw new RuntimeException(e);
      }finally {
           JDBCUtilsByDruid.close(null,null,connection);
      }
  }
   /**
    * 返回多个对象,针对于任何表.
    * @return
    */
   public List<T> queryMulti(String sql,Class<T> clazz,Object...params){
       Connection connection = null;

       try{
           connection = JDBCUtilsByDruid.getConnection();

           QueryRunner qr = new QueryRunner();
           return qr.query(connection, sql, new BeanListHandler<T>(clazz), params);
      }catch (Exception e){
           throw new RuntimeException(e);
      }finally {
           JDBCUtilsByDruid.close(null,null,connection);
      }
  }

   /**
    * 查询单个值
    * @param sql
    * @param params
    * @return
    */
   public Object scalar(String sql,Object...params){
       Connection connection = null;
       try{
           connection = JDBCUtilsByDruid.getConnection();
           return qr.query(connection,sql,new ScalarHandler(),params);
      }catch (Exception e){
           throw new RuntimeException(e);
      }finally {
           JDBCUtilsByDruid.close(null,null,connection);
      }
  }

}

QueryRunner类


package com.sorrymaker.Test12;

import com.sorrymaker.Test11.JDBCUtilsByDruid;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import org.apache.commons.dbutils.handlers.ScalarHandler;
import org.junit.Test;

import java.sql.Connection;
import java.util.List;

/**
* QueryRunner类:
*             update(connection,sql,params):执行任何增删改
*             query(connection,sql,ResultHandler,params):执行任何查询语句
* ResultHandler接口
*             BeanHandler:将结果集的第一行,封装成对象,并返回     new BeanHanler<>(XX.class)
*             BeanListHandler:将结果集的所有行,封装成对象的集合,并返回   new BeanListHandler<>(XX.class)
*             ScalarHandler:将结果集中的第一行第一列,以Object形式返回 new ScalarHandler()
* @Author nextGame
* @Date 2021/4/26 15:26
* @Version 1.0
* 使用步骤:
*         1.导入jar包.commons-dbutils-1.3.jar
*         2.看帮助
*         3.使用.
*/
public class TestDBUtils {
   @Test
   public void testUpdate() throws Exception {
       //1.注册驱动
       Connection connection = JDBCUtilsByDruid.getConnection();

       //2.执行增删改
       QueryRunner qr = new QueryRunner();
       int update = qr.update(connection, "update boys set boyname=? where id = 4", "慕容复");

       System.out.println(update > 0 ? "success" : "failure");

       JDBCUtilsByDruid.close(null, null, connection);
  }

   @Test
   public void testQuerySingle() throws Exception {
       //1.获取连接
       Connection connection = JDBCUtilsByDruid.getConnection();

       //2.执行查询
       QueryRunner qr = new QueryRunner();
       Admin admin = qr.query(connection, "select * from admin where id=?", new BeanHandler<>(Admin.class), 3);

       System.out.println(admin);

       JDBCUtilsByDruid.close(null, null, connection);

  }

   @Test
   public void testQueryMulti() throws Exception {
       //1.获取连接
       Connection connection = JDBCUtilsByDruid.getConnection();

       //2.执行查询
       QueryRunner qr = new QueryRunner();

       List<Admin> admins = qr.query(connection, "select * from admin ", new BeanListHandler<>(Admin.class));

       for (Admin admin : admins) {
           System.out.println(admin);
      }

       JDBCUtilsByDruid.close(null, null, connection);
  }


   @Test
   public void testScalar() throws Exception {
       //1.获取连接
       Connection connection = JDBCUtilsByDruid.getConnection();

       //2.执行查询
       QueryRunner qr = new QueryRunner();

       Object query = qr.query(connection, "select count(*) from admin ", new ScalarHandler());
       System.out.println(query);

  }
}
posted @ 2021-04-26 17:06  独眼龙  阅读(57)  评论(0)    收藏  举报