(1)DataSet与DataType作用

     DataType定义了数据格式,相当于类

     DataSet中存储了多个指定DataType的数据,相当于存储了多个类实例的集合


(2)Model文件

     就是为了存储DataType

     分为2种:

     1)定义在View的Model节点中

         这种其中定义的dataType是view私有的,只能在这个view中使用

     2)定义在Model配置文件中

         这种其中定义的dataType是全局共享的,dorado在启动的时候会先读取Model文件,并初始化这些DataType信息

         但是注意,必须要保证通过configure.propertis和configure-debug.properties中的model.root能够找到Model文件



     所以我们当前可以创建models,用来存储所有的models文件

                     

dataset定义 java dataset.type_dataset定义 java


(3)创建model.xml文件

           1)定义DataType,并制定name和matchType

               其中matchType是我们定义好的pojo:Product

dataset定义 java dataset.type_c#_02

    其中Product定义为:

public class Product {
	private long id;
	private String name;
	private double price;
	private Date gmtCreate;
	private Date gmtModifieDate;
	.......
}

           2)再生成PropertyDefs

              实际上也就是用pojo中的各个属性生成DataType中的各个属性

              在DataType上右键->通过简单java对象自动创建PropertyDefs

            

dataset定义 java dataset.type_java_03


           至此,DataType已经定义完毕,可以在后面使用了

          

(4)创建DataProvider

           实际上就是用来给DataSet提供数据的方法

           1)定义一个SimpleCURD类,用来编写DataProvider方法

package sample.dataset;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import com.bstek.dorado.annotation.DataProvider;

@Component
public class SimpleCURD {
	@Autowired
	private ProductDAO productDAO;
	
	@DataProvider
	public List<Product> getAll(){
		return productDAO.getData();
	}
}

           2)定义一个ProductDAO类,用来提供数据

              这里我们模拟持久层,直接返回数据即可

package sample.dataset;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import org.springframework.stereotype.Component;

@Component
public class ProductDAO {
	public List<Product> getData() {
		List<Product> list = new ArrayList<>();
		
		for (int i = 0; i < 5; i++) {
			Product product = new Product();
			product.setId(i);
			product.setName(i+"pro");
			product.setPrice(i);
			product.setGmtCreate(new Date());
			product.setGmtModifieDate(new Date());
			
			list.add(product);
		}
		
		return list;
	}
}



(5)创建SimpleCURD视图

           1)创建DataSet

              1>用来存储数据,所以需要知道数据类型,所以需要指定DataType


dataset定义 java dataset.type_ide_04


             

在这里必须要选择Collection类型,因为DataSet中的数据肯定是有多个

             2>因为要知道DataSet中的数据从哪里获取,所以需要指定dataProvider

dataset定义 java dataset.type_List_05

             dataProvider格式和ajax请求一样,为类名(首字母小写)#方法名

           2)创建DataGrid

               因为DataSet只是一个数据集合,不能显示,所以我们需要一个grid来显示数据

dataset定义 java dataset.type_ide_06

              只用指定dataSet即可


(6)运行

           

dataset定义 java dataset.type_c#_07




(7)增删数据

         1)DataPilot是用来定义DataSet的数据操作的,但是必须依附在ToolBar上,所以我们需要先定义ToolBar,在在其下面定义一个DataPilot

dataset定义 java dataset.type_c#_08

          其中:

          1>定义dataSet,也就是关联的DataSet

          2>定义itemCodes,也就是需要哪些按钮

属性


描述

dataSet

dsProducts

绑定的DataSet对象

itemCodes

+,-,x

DataPilot中允许显示的快捷按钮,+表示新增按钮,-表示删除按钮,x表示取消按钮

         运行一下:

dataset定义 java dataset.type_List_09

           可以看出已经出现了按钮

           但是这些按钮只是执行逻辑操作,并没有真正删除数据


         2)DataResolver

            如果要实现持久化,那么就需要借助DataResolver技术,DataResolver实际上就是将数据通过ajax发送到后台进行持久化处理

           1>一般DataResolver都是通过UpdateAction来配置的,所以我们在当前View中添加UpdateAction控件

           并在下面添加一个UpdateItem(实际可以添加多个),并且将dataSet设置为当前DataSet

dataset定义 java dataset.type_java_10

           2>定义DataResolver

               直接定义在刚刚的SimpleCURD中即可

@Component
public class SimpleCURD {
	@Autowired
	private ProductDAO productDAO;
	
	@DataProvider
	public List<Product> getAll(){
		return productDAO.getData();
	}
	
	@DataResolver
	public void save(List<Product> products){
		productDAO.save(products);
	}
}

         这里的DataResolver注解就是表示这个方法为DataResolver     

         其中DAO的方法为:

@Component
public class ProductDAO {
	List<Product> list = new ArrayList<>();
	
	{
		for (int i = 0; i < 5; i++) {
			Product product = new Product();
			product.setId(i);
			product.setName(i+"pro");
			product.setPrice(i);
			product.setGmtCreate(new Date());
			product.setGmtModifieDate(new Date());
			
			list.add(product);
		}
	}
	
	public List<Product> getData() {
		return list;
	}
	
	public void save(List<Product> products) {
		list.addAll(products);
	}
}



           3>定义UpdateAction中的dataResolver


 

dataset定义 java dataset.type_ide_11

           4>因为UpdateAction无法看到,所以我们在工具栏上再增加一个保存按钮,用来执行这个事件

dataset定义 java dataset.type_c#_12


          运行

dataset定义 java dataset.type_c#_13

            发现已经能够实现增加和修改了


(8)用户体验修改

       只需要设置UpdateAction的executingMessage和successMessage即可

dataset定义 java dataset.type_dataset定义 java_14

        效果如下:

dataset定义 java dataset.type_ide_15