zoukankan      html  css  js  c++  java
  • 分包+项目汇总

    上一篇将JDBC完成之后,如果要做一个完整的项目,需要在这个基础上进行分包。

    分包的意义在于将各个人的功能分开,程序运行更便利。

    • l view层作用: 视图层,即项目中的界面
    • l controller层作用: 控制层, 获取界面上的数据,为界面设置数据; 将要实现的功能交给业务层处理
    • l service层作用: 业务层, 功能的实现, controller控制层和数据访问层DAO交互, 将对数据库的操作交给DAO数据访问层来处理
    • l dao层作用: 数据访问层, 用来操作数据库表的数据
    • l db数据库: 这里指MySQL
    • l domain 实体包: 存放JavaBean
    • l tools工具包:存放项目中使用到的工具类
    • l test 测试包: 存放项目功能测试的代码

      

    每层的项目分部

    view菜单层

    domian 实体类

    controller 中转层

    service 获取dao层数据

    dao层,数据库层

    tools工具类层

    test测试类

    主要实现功能

    这是主要功能,代码因为过于多久不复制粘贴,主要是总结一下知识难点和一问题,还有一些容易混淆的地方

    知识难点:

    1、如果连续更新数据,如果只是单纯的方法联合并不需要,但结合现实我们发现,如果在修改某个数据时,往往是联合修改的。这就颠覆了最初的逻辑,后来解决这个的办法是采用了全局变量定义,局部变量在方法中定义,从而作为形参传入后续的方法中。如费用更新时的身份证,输入的费用:

    变量赋值:之后获得了某个人的身份证和费用数,从而使后面的个人信息表中的个人总金额累加+费用标记结清

    第二是中间表的作用,它就是两表之间的关系,如一个员工对应两个房间,你无法在房间表或员工表进行一个多条重新信息录入,这违反了我设计表时一个人对应一条信息的原则。

    那它们之间如何练习起来,就用到中间表,将两表的主键放入,将关系存储在中间表,从而如果需要查询两表通过它联合即可。

    中间表:

    房间表:

     

    员工表:

    语句如何查询:

    二、容易混淆的地方

    dao层的几种处理结果集。

    我用到的处理结果集,若是查询,需要便利遍历数据库中的所有内容来输出。其中分为,方法的修饰符区别,如果有返回值类型,需要对它进行赋值遍历。

        //年报表 方法重载
                public List< cost>  getBaobiao(int year ) throws SQLException{
                    //获得连接对象
                    Connection conn=JDBCUtils.getConn();
                    //数据库语句
                    String sql="SELECT username,cost.`room_num`,cost.usercard,SUM(cost) "
                            + "FROM cost JOIN userinfo ON cost.`usercard`=userinfo.`usercard` "
                            + "WHERE TIME LIKE ? GROUP BY usercard";
                    PreparedStatement pst=conn.prepareStatement(sql);
                    //运行结果集
                    pst.setString(1, "%"+year+"%");
                    ResultSet rs=pst.executeQuery();
                    //处理结果集
                    List<cost> list=new ArrayList<cost>();
                    while(rs.next()){
                        cost cost=new cost();
                        cost.setUsername(rs.getString("username"));//把数据库的username的值给cost里面的值
                        cost.setUsercard(rs.getString("usercard"));
                        cost.setRoom_num(rs.getInt("room_num"));
                        cost.setCost(rs.getDouble("sum(cost)"));    
                        list.add(cost);//最后是将封装了四个字段的cost实体类添加到list集合中,泛型。
                    }
                    //System.out.println(list);
                    //释放资源
                    JDBCUtils.close(rs, pst, conn);
                    //返回一个list集合给前台
                    return list ;

    增加修改,删除通过int值来判定是否成功,1成功,0失败。

    //新增cost表中数据
                public int addCost(UserInfo userinfo) throws SQLException{
                    Connection conn=JDBCUtils.getConn();
                    String sql="insert into cost(time,room_num,usercard,cost) values (?,?,?,?)";
                    PreparedStatement pst=conn.prepareStatement(sql);
                    //占位符赋值
                    pst.setString(1, userinfo.getStarttime());
                    pst.setInt(2, userinfo.getRoom_num());
                    pst.setString(3, userinfo.getUsercard());
                    pst.setDouble(4, userinfo.getCost());
                    //执行sql
                    int row=pst.executeUpdate();
                    //释放资源
                    JDBCUtils.close(pst, conn);
                    return row;
                }

    但有时有例外就是判断查询的内容有没有。

    如我想查询所有未审批的有几条信息,但是如果单纯返回的我获得的是整个遍历出来的东西,那就需要定义一个int来接收一下,while()中总共走了几次满足数据库代码的次数,统计出来就是几条未读信息。

    //统计未审批的数量
                public int  getBoss( ) throws SQLException{
                    Connection conn=JDBCUtils.getConn();
                    String sql="SELECT  count(*) FROM jilu WHERE shenpi='0'  and dengji='A'";
                    PreparedStatement pst=conn.prepareStatement(sql);
                    //pst.setInt(1, shenpi);
                    ResultSet rs=pst.executeQuery();
                    int count = 0;
                    while (rs.next()) {
                        count = rs.getInt(1);
                    }
                    JDBCUtils.close(rs, pst, conn);
                    return count;
                }    
  • 相关阅读:
    centos 7安装libreoffice
    python3-xlwt-Excel设置(字体大小、颜色、对齐方式、换行、合并单元格、边框、背景、下划线、斜体、加粗)
    PHP导出身份证号科学计数法
    PHP接收json格式的POST数据
    微信小程序知识
    搭建Vue开发环境的步骤
    公众号认证?小程序认证?小程序复用公众号资质进行认证?
    七牛云——批量将本地图片上传到七牛云
    身份认证接口
    php二维数组去重
  • 原文地址:https://www.cnblogs.com/a199706/p/11419306.html
Copyright © 2011-2022 走看看