1、數據庫sql操做:css
一、三表查詢的時候,最後的條件因爲當前字段必須判斷是屬於哪一個表,因此須要註明根據哪一個表中的字段進行判斷:html
而且再在後面加上limit的時候,須要注意先進行添加,避免系統不能識別具體幾個參數:java
// 根據條件在員工信息表中搜索 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; }
二、五表查詢的時候直接查詢就行:jquery
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 ";
三、將1表中根據條件查詢出來的結果放置到2表中的某個字段上:sql
String sql = "INSERT INTO `human` (username) SELECT(SELECT `username` FROM information WHERE istate ='經過')";
四、根據在1表中查詢出來的結果刪除其在2表中的數據:數據庫
String sql = "delete from information where pname =(select pname from person where pid=?)";
2、JavaBean類:數組
由於減小數據的冗餘,須要將表的一些數據進行再分表,這樣要是想查看全部的信息的話,須要進行多表的查詢--要建個多個數據的類:dom
一、可使用繼承的形式:--這樣子類能夠得到其和父類的全部的數據;(根據子類輸出結果時只顯示子類有的屬性的數據,可是其能夠調用父類的屬性)jsp
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 + "]"; } }
二、其實也能夠就建一個大類,須要調用什麼數據的時候,就是用哪一個數據:ide
//請假類 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;
三、上面代碼中的
implements Serializable
是實現序列化的,無大礙。
3、其餘的小細節:
一、修改:
查詢jsp內點擊某行的修改按鈕(帶着本行的ID)-->根據本行的ID查詢本行全部的數據Servlet-->請求轉發 進入修改jsp頁面(能夠設置某些信息不能更改:disabled="true")--->修改Servlet--->重定向 查詢全部的信息Servlet ---> 查詢總的jsp頁面
二、form表單中action指向的地址是其submit按鈕所提交的地址;
三、當頁面點擊未出現預期的效果,首先檢查點擊事件的地址,而後去XML裏查看Servlet是否存在;
如果沒有數據,查看是否將數據已取到了,是否將數據存到域中,JSP頁面中的鍵值是否正確;
<查看數據的話,在java內直接system.out.println(數據),在jsp內直接${數據}>
4、使用layui:
一、當使用其表單時:
須要進行渲染:
layui.use('form', function () {
var form = layui.form;
form.render();
});
二、彈出層:(須要使用本身的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();//關閉時刷新頁面 (防止彈出框內容再次顯示在頁面內)
}
});
}) */
三、使用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") });
四、其餘詳見:https://www.cnblogs.com/30go/p/11088549.html(侵刪)