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(侵删)

  • 相关阅读:
    一个datagrid中嵌入checkBox典型的例子
    堆排序算法
    堆排序(利用最大堆)
    动态代理模式的实现
    [转载]C#如何实现对外部程序的动态调用
    9.Jmeter 多个threadgroup 中的配置元件会一次性进行初始化
    二十七。
    三十。接口2
    三十三。日志
    大道至简读后感
  • 原文地址:https://www.cnblogs.com/21-forever/p/11248306.html
Copyright © 2011-2022 走看看