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="width: 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(侵刪)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM