在公司也做了有快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.onload=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>
以上就是我这些时间里学到的一些总结,希望以后更加努力,更上一层楼。