zoukankan      html  css  js  c++  java
  • Java项目部分总结

    一、数据库sql操作:

    1、三表查询的时候,最后的条件由于当前字段必须判断是属于哪个表,所以需要注明根据哪个表中的字段进行判断:

      并且再在后面加上limit的时候,需要注意先进行添加,避免系统不能识别具体几个参数:

    // 根据条件在员工信息表中搜索
        public List<Message> getMessageByCondition(Condition condition, int index, Integer currentCount)
                throws SQLException {
            QueryRunner qr = new QueryRunner(MyDBUtils.getDataSource());
            String sql = "select * from person join position ON person.ppid=position.ppid JOIN department ON person.pdid=department.pdid where 1=1";
            // 需要将结果存在集合中(因数组长度不可变) DISTINCT去重
            ArrayList<Object> arr = new ArrayList<Object>();
            // trim()是去掉首尾空格
            if (condition.getPpid() != null && condition.getPpid() != "") {
                // sql += " and pposition like ?"; && condition.getPteam() != ""
                // arr.add("%" + condition.getPposition() + "%");
                sql += " and person.Ppid=?";
                arr.add(condition.getPpid());
            }
            if (condition.getPdid() != null && condition.getPdid() != "") {
                sql += " and person.Pdid=?";
                arr.add(condition.getPdid());
            }
            if (condition.getPteam() != null && condition.getPteam() != "") {
                sql += " and pteam=?";
                arr.add(condition.getPteam());
            }
            sql += " limit ?,?";
            arr.add(index);
            arr.add(currentCount);
            List<Message> list = qr.query(sql, new BeanListHandler<Message>(Message.class), arr.toArray());
            return list;
        }

    2、五表查询的时候直接查询就行:

            String sql = "SELECT * FROM information JOIN person ON person.pname=information.pname JOIN human ON human.username = information.username JOIN `position` ON person.ppid=position.ppid JOIN department ON person.pdid=department.pdid ";

    3、将1表中根据条件查询出来的结果放置到2表中的某个字段上:

    String sql = "INSERT INTO `human` (username) SELECT(SELECT `username` FROM information WHERE istate ='通过')";

    4、根据在1表中查询出来的结果删除其在2表中的数据:

    String sql = "delete from information where pname =(select pname from person where pid=?)";

    二、JavaBean类:

    因为减少数据的冗余,需要将表的一些数据进行再分表,这样要是想查看所有的信息的话,需要进行多表的查询--要建个多个数据的类:

    1、可以使用继承的形式:--这样子类可以获得其和父类的所有的数据;(根据子类输出结果时只显示子类有的属性的数据,但是其可以调用父类的属性)

    package domain;
    //个人全部信息--继承登录信息页面
    public class PersonalMessage extends Information{
        private String pwd;
        private Integer pid;
        private String pposition;
        private String pdepartment;
        private Integer pteam;
        private Integer ppid;
        private Integer pdid;
        public String getPwd() {
            return pwd;
        }
        public void setPwd(String pwd) {
            this.pwd = pwd;
        }
        public Integer getPid() {
            return pid;
        }
        public void setPid(Integer pid) {
            this.pid = pid;
        }
        public String getPposition() {
            return pposition;
        }
        public void setPposition(String pposition) {
            this.pposition = pposition;
        }
        public String getPdepartment() {
            return pdepartment;
        }
        public void setPdepartment(String pdepartment) {
            this.pdepartment = pdepartment;
        }
        public Integer getPteam() {
            return pteam;
        }
        public void setPteam(Integer pteam) {
            this.pteam = pteam;
        }
        public Integer getPpid() {
            return ppid;
        }
        public void setPpid(Integer ppid) {
            this.ppid = ppid;
        }
        public Integer getPdid() {
            return pdid;
        }
        public void setPdid(Integer pdid) {
            this.pdid = pdid;
        }
        @Override
        public String toString() {
            return "PersonalMessage [pwd=" + pwd + ", pid=" + pid + ", pposition=" + pposition + ", pdepartment="
                    + pdepartment + ", pteam=" + pteam + ", ppid=" + ppid + ", pdid=" + pdid + "]";
        }
        
    }

    2、其实也可以就建一个大类,需要调用什么数据的时候,就是用哪个数据:

    //请假类
    public class Leave implements Serializable {
        private Integer lid;
        private Integer pid;
        private String pname;
        private Double lday;
        private String dateStart;
        private String dateWork;
        private String lreason;
        private String leaveType;
        private String lstate1;
        private String lstate2;
    
        // 额外的属性---连表查询用
        private Integer pdid;
        private Integer pteam;
        private Integer ppid;
        private String pdepartment;
        private String pposition;
        
        
        public Integer getLid() {
            return lid;
        }
        public void setLid(Integer lid) {
            this.lid = lid;

    3、上面代码中的

    implements Serializable

    是实现序列化的,无大碍。

    三、其他的小细节:

    1、修改:

    查询jsp内点击某行的修改按钮(带着本行的ID)-->根据本行的ID查询本行所有的数据Servlet-->请求转发 进入修改jsp页面(可以设置某些信息不能更改:disabled="true")--->修改Servlet--->重定向  查询所有的信息Servlet ---> 查询总的jsp页面

    2、form表单中action指向的地址是其submit按钮所提交的地址;

    3、当页面点击未出现预期的效果,首先检查点击事件的地址,然后去XML里查看Servlet是否存在;

      若是没有数据,查看是否将数据已取到了,是否将数据存到域中,JSP页面中的键值是否正确;

      <查看数据的话,在java内直接system.out.println(数据),在jsp内直接${数据}>

    四、使用layui:

    1、当使用其表单时:

    需要进行渲染:

    layui.use('form', function () {   
        var form = layui.form;  
            form.render();
        });

    2、弹出层:(需要使用自己的js?)

    /* 使用弹出层 */
    layui.use('layer', function() {
        var layer = layui.layer;
    });
    //第一种:主动加载jquery模块(跟自己引入的冲突会导致弹出框消失后,内容还存在在页面内)
     layui.use(['jquery', 'layer'], function(){ 
      var $ = layui.$ //重点处
      ,layer = layui.layer;
      //后面就跟你平时使用jQuery一样
         /*设置点击出现弹出框  */
            /* $("#btn").click(function() {
                layer.open({
                    title:"友情提示",
                    type : 1,
                    closeBtn : false,
                    shadeClose : true,
                    content : $("#info"),
                    cancel: function(){//关闭按钮的回调函数 
                        location.reload();//关闭时刷新页面 (防止弹出框内容再次显示在页面内)
                    }            
                }); 
            }) */

     3、使用iframe的切换时:点击时添加上SRC地址;

    <!-- 引入iframe -->
                    <iframe class="personList" style=" 100%; height: 100%; margin-top:0"
                        frameborder="0" src=""></iframe>
    
    
    
    
    
    /* 点击员工信息表按钮 */
    $(".personalMessagebtn").on(
                "click",
                function() {
                    $(".personList").attr("src",
                            "${pageContext.request.contextPath}/PersonalMessageServlet");
                    $(".layui-body").css("background", "none");
                });
    /*点击员工岗位信息表按钮  */
    $(".ConditionPersonbtn").on("click", function() {
        $(".layui-body").css("background", "none");
            $(".personList").attr("src",
                    "${pageContext.request.contextPath}/ConditionPersonServlet",
                    "display", "block")
    });
    

    4、其他详见:https://www.cnblogs.com/30go/p/11088549.html(侵删)

  • 相关阅读:
    < java.util >-- Set接口
    Codeforces 627 A. XOR Equation (数学)
    Codeforces 161 B. Discounts (贪心)
    Codeforces 161 D. Distance in Tree (树dp)
    HDU 5534 Partial Tree (完全背包变形)
    HDU 5927 Auxiliary Set (dfs)
    Codeforces 27E. Number With The Given Amount Of Divisors (暴力)
    lght oj 1257
    Codeforces 219D. Choosing Capital for Treeland (树dp)
    Codeforces 479E. Riding in a Lift (dp + 前缀和优化)
  • 原文地址:https://www.cnblogs.com/21-forever/p/11248306.html
Copyright © 2011-2022 走看看