DataSet与DataType

本文介绍了如何使用Dorado框架创建简单的CRUD应用,包括定义数据类型、数据集、数据提供者及视图,并实现了基本的增删查改功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

(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文件

                     


(3)创建model.xml文件

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

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


    其中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

            
           至此,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


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

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


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

           2)创建DataGrid

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


              只用指定dataSet即可


(6)运行

           



(7)增删数据

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


          其中:

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

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

属性

描述

dataSet

dsProducts

绑定的DataSet对象

itemCodes

+,-,x

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

         运行一下:


           可以看出已经出现了按钮

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


         2)DataResolver

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

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

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


           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
 

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



          运行


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


(8)用户体验修改

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


        效果如下:





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值