Dorado 5 : 7.dorado查询开发:使用自定义SQL (T1)

本节主要讲解通过将用户输入的查询条件提交至后台,在Dataset的监听器中动态拼装SQL语句的方式实现条件查询功能。

准备工作

在sample项目的src下新建ViewModel,命名sqlQuery。

图13-30

配置数据集对象

在新建的sqlQuery中Datasets节点下新建SqlDataset。步骤:【Datasets】—>【Insert】—>【SqlDataset】。

图13-31
设置新建SqlDataset的id为datasetEmployee,点击sql属性旁边按钮【Browse...】配置SqlDataset的sql属性。

图13-32
在【Sql Analyzer】窗口空白区输入查询SQL语句,点击【Run】执行该语句查看结果。

图13-33
点击【OK】完成sql属性的配置。

图13-34
执行自动生成列【Auto Create Elements】操作,生成查询结果集Dataset中所有的列对象。步骤:【datasetEmployee】—>【Auto create fields】。

图13-35
生成所有的Field列对象后,设置datasetEmployee中每个Field的label属性值。

name

dataType

label

employee_id

string

员工编号

dept_id

string

部门编号

employee_name

string

员工姓名

sex

boolean

性别

birthday

date

出生日期

married

Boolean

婚否

salary

double

薪资

degree

string

学历

email

string

电子邮件

web

string

网址

cmnt

sting

备注

image

string

其他

表13-03

配置展现形式

在【Controls】节点下新建DataTable控件,命名tableEmployee,并绑定datasetEmployee。

图13-36

配置条件输入部分

在【Datasets】节点下新建FormDataset,命名datasetConditions。然后新建AutoForm控件绑定datasetConditions。之后新建Button控件命名buttonSqlQuery,设置Button的value属性值为"查询"。

图13-37
新建sqlQuery相关JSP页面,命名sql_query.jsp。

图13-38
保存全部修改,通过【Browse】查看页面效果。

图13-39

编写客户端事件代码

在buttonSqlQuery控件的onClick事件中编写执行查询的JavaScript脚本代码。

if(datasetConditions.getCurrent()){ 
	 var record=datasetConditions.getCurrent(); 
	 datasetEmployee.parameters().setValue("EMPLOYEE_ID",record.getValue("EMPLOYEE_ID")); 
	 datasetEmployee.parameters().setValue("EMPLOYEE_NAME",record.getValue("EMPLOYEE_NAME")); 
	 datasetEmployee.parameters().setValue("SALARYMin",record.getValue("SALARYMin")); 
	 datasetEmployee.parameters().setValue("SALARYMax",record.getValue("SALARYMax")); 
	 datasetEmployee.flushData(); 
}



图13-40

创建监听器编写服务器端代码

新建datasetEmployee的监听器。步骤:【Datasets】—>【datasetEmployee】—>【Open Listener】。

图13-41
默认监听器类名为EmployeeDatasetListener。

图13-42
点击【Finish】完成监听器的创建。

图13-43
打开监听器类EmployeeDatasetListener.java。

图13-44
重载beforeLoadData方法。步骤:【选中AbstractDatasetListener右键】—>【Source】—>【Override/Implement Methods...】。

图13-45
在【Override/Implement Methods】窗口中,选中beforeLoadData(Dataset)重载该方法。

图13-46
点击【OK】,完成方法重载的配置。

图13-47
在beforeLoadData方法中编写Java处理代码。

public boolean beforeLoadData(Dataset dataset) throws Exception { 
	// TODO Auto-generated method stub 
 
	 String employee_id=dataset.parameters().getString("EMPLOYEE_ID"); 
	 String employee_name=dataset.parameters().getString("EMPLOYEE_NAME"); 
	 String salaryMin=dataset.parameters().getString("SALARYMin"); 
	 String salaryMax=dataset.parameters().getString("SALARYMax"); 
 
	 SqlDataset datasetEmployee=(SqlDataset)dataset; 
	 String sql=datasetEmployee.getSql(); 
 
	 if(StringHelper.isNotEmpty(employee_id)){ 
	 	sql=sql+" and employee_id='"employee_id"'"; 
	 } 
	 if(StringHelper.isNotEmpty(employee_name)){ 
	 	sql=sql+" and employee_name like '%"employee_name"%'"; 
	 } 
	 if(salaryMin!=null){ 
	 	sql=sql+" and salary >"+salaryMin.toString(); 
	 } 
	 if(salaryMax!=null){ 
	 	sql=sql+" and salary <"+salaryMax.toString(); 
	 } 
 
	 System.out.println("========="+sql); 
	 datasetEmployee.setSql(sql); 
 
	 return super.beforeLoadData(dataset); 
}



图13-48
代码编写完成后,全部保存,编译EmployeeDatasetListener.java。编译完成后,刷新JSP页面,查看控制台打印日志信息。

图13-49
查看此时页面效果。

图13-50
在EMPLOYEE_ID文本框中输入"ANLIN",点击【查询】,查看页面效果。

图13-51
查看此时控制台打印日志信息。

图13-52
删除"ANLIN",在SALARYMin文本框中输入"3000",在SALARYMax中输入"5000",点击【查询】,查看页面查询效果。

图13-53
查看此时控制台打印日志信息。

图13-54

开发步骤

通过flushData方法,将浏览器端的Dataset数据集对象中的参数集提交至服务器端,重构Dataset对象,触发beforeLoadData监听器事件,最终实现利用提交的参数值动态拼装SQL语句达到查询的目的。

开发步骤

 


第一步:新建ViewModel。


第二步: 新建SqlDataset数据集对象。


第三步:新建DataTable绑定SqlDataset。


第四步:新建条件数据集和AutoForm并设置绑定。


第五步:新建Button查询按钮。


第六步:在Button的onClick事件中编写JavaScript代码。


第七步:新建SqlDataset的监听器,在监听器的beforeLoadData方法中处理查询操作。











第八步:新建JSP页面,查看查询效果。


详细步骤图

 

Attachments:

worddavaf5f0d9559d2aed8effc01521c965093.png (image/png)
worddav988903a8ff4078bff547a7b6a0966e4d.png (image/png)
worddav3e2a410a9500858451b24ae59c8f2402.png (image/png)
worddavb5d9e550d4ef10349f5cca2cf01bc340.png (image/png)
worddavf6d9522c8bef055965cc0e8b0d179df9.png (image/png)
worddav15144547dd6b64bbbc5e1b19a02cbc3c.png (image/png)
worddav434c4c7a1e0eecf96936d35f2bc44c17.png (image/png)
worddav491118700bfb7a650bb3cc3b6aa8094b.png (image/png)
worddav274d6ceae736f2acad460b5a0cb082c7.png (image/png)
worddav98d4e1470dd73483ccc6ee688e381765.png (image/png)
worddavd55df6bc587c1a4f3063e9012f8270d3.png (image/png)
worddave633086753316bec3f9e15d690a97e5f.png (image/png)
worddav1b8bbae3e325ca18b6f333724ec11d2b.png (image/png)
worddav3a0ff85edf6cae5198b68c9eeff43ca9.png (image/png)
worddavd6fd5badbddd84b95d43f3127c25f940.png (image/png)
worddavf6ce14ce2417b713192dc43108e73829.png (image/png)
worddav9a384719ea9909a7efec90351e37dce9.png (image/png)
worddav9ca508ac7ef2dbfc21beb87eb59083c9.png (image/png)
worddav3438facf1883c4f42c9574ad199f1be9.png (image/png)
worddav0807db4e44a80b10049fb5352b2bfac3.png (image/png)
worddav20a51c4a7d1b338691d9ee3474545227.png (image/png)
worddav27729f45df1bddc4686390992188a2a7.png (image/png)
worddavfae08f0fc640a15940556a90f8545d50.png (image/png)
worddav0a63c06333c0947dcf7b1a5d42229b31.png (image/png)
worddav2d4721c60da4b0b7d79a260f468cc1ce.png (image/png)
worddav182b26cfc3752c6c077f1ff703f6ffaa.png (image/png)
worddav3bf08f36cf839fda3d06dbddb2452a51.png (image/png)
worddav177243e0bbac1648565b5bcf185b1b72.png (image/png)
worddav874c60d0cdff47eb35fa0dc97e79adf5.png (image/png)
worddav49ec314dd1219f2bed9732c9ce37c902.png (image/png)
worddavd7e80fcd64f3183133e96697dd678ec2.png (image/png)
worddav02d1f5af5cc4105e7274967e6c021f81.png (image/png)
worddavdef48afe3add89771d02201a5997b4de.png (image/png)