crm项目遇到的问题总结

17 篇文章 0 订阅

   

1.hql数据库查询对于几次连接查询的操作

    需求描述:我有两张表(client,family),两张表中通过family_id 关联。每个client有很多家庭成员,每个家庭成员的基本信息在client中,我首先需要把我的两张表做left join连接,连接后得到多条家庭成员的client_id,再通过client_id去表查询client家庭成员信息显示出来。由于hql的表是通过两个实体类映射的,所以无法直接做两次连接操作,需求需要的sql是:


SELECT * from
(SELECT name,client_id ,from(select a.client_id from family_client a, Client b 
where a.family_id = b.family_id and b.family_id =?)as c
LEFT JOIN client on c.client_id=client.id) as e;


所以想到把两次连接操作分两次hql查询

String sql="select new FamilyClient(a.client_id,b.name) from FamilyClient a, Client b "
+ "where b.family_id = ? and a.family_id = b.family_id and b.status='1'";
//返回第一次连接查询结果,里面包含了所有家庭成员的client_id
List<FamilyClient> list=this.find(sql,family_id);

//通过循环家庭成员个数次来拿到clientinfo,最后再放入一个List<FamilyClient>

String sql1="select new FamilyClient(b.id,b.name) from Client b"
+" where b.id=? and b.status='1'";
List<FamilyClient> listt=new ArrayList<FamilyClient>();
for(int i=0;i<list.size();i++){
listt.addAll(this.find(sql1,list.get(i).getClient_id()));
}


2.对于谷歌安卓模式调试程序无法点击原因:(转载http://blog.csdn.net/id_no_chinese/article/details/70228121)

chrome56版本以后修复form提交的bug,
form = $('<form></form>')创建好后,要$(document.body).append(form);
        然后form.submit();  


3.对于jquery通过formData形式提交的字符串数组数据,后台通过request取到的值为空:前台要通过JSON.tostringify(clientList)转化为json,后台通过

String[]  clientIdList = request.getParameterValues("clientIdList");可以取到值

var clientList = new Array();
		$(".customer_ul").find("input.checkbox:checked").each(function(){
			var clientName = $(this).siblings("input.clientName").val();
			var clientId = $(this).siblings("input.clientId").val();
			clientList.push({'clientName':clientName,'client_id':clientId});
		})

$("#save").click(function(){
	if(validateInputRequired()){
		
		var name = $.trim($("#name").val());
		if(name!=""){
			var pinyinName = toPinyin(name);
			$("#pinyinName").val(pinyinName);
		}
		var formData = new FormData($("#customerAddForm")[0]);
		formData.append("clientList",JSON.stringify(clientList));
		$.ajax({
			url:'${ctxPath}/web/ajax/client/saveClientAction.html',
			dataType:'json',
			type:'post',
			processData:false,
			contentType:false,
			beforeSend:function(){
				$("#loading").show();
			},
			data:formData,
			success:function(data){
				$("#loading").hide();
				if(data!=null && data.body.code=="0"){
					$("#customerId").val(data.body.customerId);
					activeBtn();
					alert("保存成功!");
					history.go(-1);
				}else{
					alert("系统发生异常,请与管理员联系!");
				}
			},
			error:function(data){
				$("#loading").hide();
				alert("error!");
			}
		})
	}
}) 


4.对于图片上传:后台无法取到图片信息和使得每个用户的资料文件夹唯一

String customerId = client.getId();
			
			  MultipartHttpServletRequest multipartResolver = (MultipartHttpServletRequest) request; 
			  Iterator<String> fileNames = multipartResolver.getFileNames(); 
			  while(fileNames.hasNext()){ // 遍历请求中的图片信息  
		            String fileName = fileNames.next(); // 图片对应的参数名  
		            MultipartFile file = multipartResolver.getFile(fileName);		      
		            //图片存放路径
		            String filePath = request.getSession().getServletContext().getRealPath("/") + "upload/"  
	                 +client.getId()+"/"+ file.getOriginalFilename();  
		            
		            File fi = new File(filePath);
		            if (!fi.getParentFile().exists()){
		             fi.getParentFile().mkdirs();
		            }		            
	                // 转存文件  
		            file.transferTo(new File(filePath)); 
		            //System.out.println("图片名字:"+fileName);
		            switch(fileName){
		            case "clientIdCardPic": client.setIdcard_photo(filePath);
		            break;
		            case "clientIdCardPico":client.setIdcard_photoo(filePath);
			            break;
		            case "clientBankPic": client.setBank_photo(filePath);
			            break;
		            }	
		            client.setFamily_id(client.getFamily_id());
		            //System.out.println("9999999"+client.getFamily_id());
		            this.clientService.saveOrUpdate(client,userCustomer,labelIds,contactTypeTbls);
		            //System.out.println(fileName);	 
		            
		        } 
配置文件需要做的操作,可以多图片同时上传

<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <property name="defaultEncoding" value="UTF-8"></property>
        <property name="maxInMemorySize" value="10240000"></property>
    </bean>











评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值