在公司也做了有快2个月了,乘现在有点空闲时间,就把这段时间内学到的一些知识,心得写下来,也好以后可以方便回忆查询。
在做项目的过程中,遇到的异常都能自己解决,不懂的就网上百度,网上百度这个很好,有很多知识,在此很感谢那些共享资源
的朋友,因为你们的分享,才让我们这些新手对程序更有信心。以前我有个很不好的习惯,遇到困难,解决不了的,就容易放弃,
或者请别人来解决,不懂就问人,而不会自己先想办法解决,这样会对开发越来越没兴趣;后来在看程序员的修养这本书之后,我
把这个习惯给改了,遇到异常,首先是想想它是什么异常,为什么会报出这样的异常,自己想想办法,自己想不出来也不要硬想,
然后上网百度,看看有没有哪个人遇到同样的问题,有没有解决方法,有就好解决,解决之后还要理解为什么,再次遇到了该怎么解决,
最后实在找不到解决的方法,问问前辈能不能解决,最后就是把遇到的异常记录到自己的异常库里面,以便以后遇到同样的问题,有解决
的方法。
做项目的过程中,大部分都是查询,条件查询,排序查询,模糊查询,(左,右)外连接,这些代码大部分都是重复的,没什么技术含量
但是还是花费了我很多时间,原因就是在工作量大,而且有时候会遇到一些细节问题,都需要解决,所以就比较麻烦。但是我也在其中学到
了不少东西。
第一点:无论做什么事情,都能静得心来,不急不躁
第二点:前期做好准备,一旦下手,就能成竹在胸
第三点:后期做好总结,把以前一些不经意漏掉的细节补回来,梳理一遍做到心中有数。
公司的项目其中一个模块是我负责的,主要负责的就是根据条件查询:用的是SSI框架iBatis2.3
在jsp页面,有个很好的方法,使用jq写的,非常好,它能是查询的时候,进行异步刷新,对数据库查询的效率有很大的提高。我对于jq不是很熟悉
所以很佩服写出这个方法的人。
<form method="post" name="hiddenform" class="hiddenform">
<input type="text" name="cn.coid" id="coid"/>
<input type="text" name="are.aid" id="aid"/>
<input type="text" name="county" id="county"/>
<input type="text" name="btype.buildtype" id="buildtype"/>
<input type="text" name="sortsign" id="sortsign" value="0"/>
<input type="text" name="pageNo" id="pageNo" value="1"/>
</form>
<script type="text/javascript">
function changeValue(obj,val){
$("#"+obj).val(val);
if(obj=="pageSize")$("#pageNo").val('1');
if(obj=='hid'){
$("#coid").val('');
$("#aid").val('');
$("#county").val('');
$("#buildtype").val('');
$("#sortsign").val('');
$("#pageNo").val('');
}
searchHouseList();
//document.hiddenform.submit();
}
searchHouseList();
function searchHouseList(){
var p={
'cn.coid':$("#coid").val(),
'are.aid':$().val("#aid"),
'pageNo':$("#pageNo").val(),
'county':$("#county").val(),
'buildtype':$("#buildtype").val(),
'typename':'车位',
'forlive':'是',
'sortsign':$("#sortsign").val()
};
$.post("<%=basePath%>carport/queryPropertyCarport",p,function(msg){
var strs=msg.split("|");
msg0=strs[0];
msg1=strs[1];
$("#tabWrap").empty();
$("#tabWrap").append(" <a class='tabFocus' >车位新房房源</a><span class='findResult' id='number'>找到<strong>"+msg1+"</strong>条房源</span>");
$("#mainD").html(msg0);
});
}
window.οnlοad=function(){searchHouseList();};
</script>
在controller层
public void queryPropertyCarport(@Valid PropertyProject property,@Valid PropertyRoom room,@Valid PropertyHousemodel house,
@Valid PropertyProfeature profeature,@Valid PropertyBuildtype buildtype,@Valid PropertyInformation information,
@Valid int pageNo,@Valid int sortsign,PrintWriter out){
StringBuffer sb = new StringBuffer();
switch(sortsign){
case 0:sb.append("");break;
case 1:sb.append(" ORDER BY info.price ASC");break;
case 2:sb.append(" ORDER BY info.area asc");break;
case 3:sb.append(" ORDER BY info.postime DESC");break;
}
//查询主表信息
Pages<PropertyProject> pages = projectService.findAllProperty(property, room, house, profeature, buildtype, information,pageNo, sb.toString());
sb = new StringBuffer();
for(int i = 0 ; i < pages.getPageList().size() ; i++){
//根据ID查询info表
PropertyInformation infor = projectService.findProjectInfoByID(pages.getPageList().get(i).getProid());
//根据info表ID查询exp表
PropertyExpansion expan = projectService.findProjectExpanByID(infor.getPrid());
sb.append("<li class=\"item itemNew\">");
sb.append("<div class=\"photo\"><a href=\"javascript:void(0)\"><img src=\"/search/images/photo.jpg\" /></a></div>");
sb.append("<div class=\"detail detailNew\">");
sb.append("<p class=\"pNewOne\"><span class=\"pNewOneL\">"+infor.getProname()+"</span><span class=\"pNewOneR\">["+infor.getCounty()+"-"+infor.getTypename()+"]</span></p>");
sb.append("<p class=\"pNewTwo\">开发商:"+infor.getDevelopename()+"</p>");
sb.append("<p class=\"pNewThree\">地址:"+infor.getPadress()+"</p>");
sb.append("<p class=\"pNewFour\"><span class=\"pNewFourL\">热线:<strong>"+infor.getHotline()+"</strong></span><span class=\"pNewFourR\">资料:"+expan.getAdvantage()+"</span></p>");
sb.append("</div>");
sb.append("<div class=\"mainR\">");
sb.append("<p class=\"pFirst\"><strong>"+infor.getPrice()+"</strong> 元/㎡</p>");
sb.append("</div>");
sb.append("</li>");
System.out.println("============OK===============");
}
out.println(sb.toString()+"|"+pages.getTotalCount());
out.flush();
System.out.println("------------查询完毕!--------------");
}
service层
//查询所有表信息,通过外连接
public Pages<PropertyProject> findAllProperty(PropertyProject property,PropertyRoom room,PropertyHousemodel house,
PropertyProfeature profeature, PropertyBuildtype buildtype, PropertyInformation information, int pageNo, String sortsign){
Pages<PropertyProject> pages = new Pages<PropertyProject>(findProjectCount(property, room, house, profeature, buildtype, information));
pages.setPageList(projectDao.findAllProperty(property, room, house, profeature, buildtype,information,pages.getStart(pageNo),pages.getPageSize(),sortsign));
return pages;
}
dao层
//查询所有表,通过外连接查询
public List<PropertyProject> findAllProperty(PropertyProject property,PropertyRoom room, PropertyHousemodel house,
PropertyProfeature profeature, PropertyBuildtype buildtype, PropertyInformation information,int start,int pageSize,String sortsign){
Map<String, Object> map = new HashMap<String, Object>();
map.put("property", property);
map.put("room", room);
map.put("house", house);
map.put("profeature", profeature);
map.put("buildtype", buildtype);
map.put("information", information);
map.put("start", start);
map.put("pageSize", pageSize);
map.put("sortsign", sortsign);
return getSqlMapClientTemplate().queryForList("findAllProperty", map);
}
sql-xml文件
<!-- 查询主表和其他表的信息,通过左外连接 -->
<select id="findAllProperty" parameterClass="Map"
resultClass="PropertyProject">
select distinct pro.proid , pro.* from property_project as pro
LEFT JOIN property_room as ro ON (pro.proid=ro.proid) LEFT JOIN
property_housemodel as ho ON (ho.proid=pro.proid) LEFT JOIN
property_profeature as prof ON (pro.proid=prof.proid) LEFT JOIN
property_buildtype as bt ON (pro.proid=bt.proid) LEFT JOIN
property_information as info ON (pro.proid=info.proid)
<dynamic prepend="WHERE">
<isNotEmpty prepend="AND" property="property.typename">
<isEqual property="property.typename" compareValue="居住">
(pro.typename="住宅" or pro.typename="公寓" or pro.typename="别墅")
</isEqual>
<isNotEqual property="property.typename" compareValue="居住">
pro.typename like '%$property.typename$%'
</isNotEqual>
</isNotEmpty>
<isNotEmpty prepend="AND" property="room.room">
<isEqual property="room.room" compareValue="5">
(ro.room=5 or ro.room=6 or ro.room=7 or ro.room=8 or ro.room=9 or ro.room=10)
</isEqual>
<isNotEqual property="room.room" compareValue="5">
ro.room=#room.room#
</isNotEqual>
</isNotEmpty>
<isNotEmpty prepend="AND" property="house.housemodel">
ho.housemodel=#house.housemodel#
</isNotEmpty>
<isNotEmpty prepend="AND" property="profeature.profeature">
prof.profeature=#profeature.profeature#
</isNotEmpty>
<isNotEmpty prepend="AND" property="buildtype.buildtype">
bt.buildtype=#buildtype.buildtype#
</isNotEmpty>
<isNotEmpty prepend="AND" property="information.salestate">
info.salestate=#information.salestate#
</isNotEmpty>
<isNotEmpty prepend="AND" property="information.county">
info.county like '%$information.county$%'
</isNotEmpty>
$sortsign$ limit #start#,#pageSize#
</dynamic>
</select>
以上就是我这些时间里学到的一些总结,希望以后更加努力,更上一层楼。