(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即可
效果如下: