起步软件技术论坛
搜索
 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 10849|回复: 17

[分享] baasData手写查询保存(简单数据)

  [复制链接]

377

主题

2594

帖子

5117

积分

论坛元老

Rank: 8Rank: 8

积分
5117
QQ
发表于 2017-1-20 15:07:41 | 显示全部楼层 |阅读模式
X5中提供了baasData组件,极大地提高了开发效率,但是有些场合还是需要手写相关的代码
特地把这些代码粘贴出来,以备后续查询



  1. //简单数据查询

  2. //前台发起数据查询

  3. Model.prototype.orderDataCustomRefresh(event){
  4.         var data=event.source;
  5.         var params={
  6.                 "columns":  Bass.getDataColumns(data),
  7.                 "limit":  event.limit,
  8.                 "offset":event.offset,
  9.                 "search":this.getElementByXid("searchInput").value()

  10.         };
  11.         var success=function(resultData){
  12.                 var append=event.options&&event.options.append;
  13.                 data.loadData(resultData,append);
  14.         };
  15.        
  16.         Baas.sendRequest({
  17.                 "url":  "/demo",
  18.                 "action":"queryOrder",
  19.                 "params": params,
  20.                 "success":success

  21.         });

  22. }
复制代码
  1. //前台发起数据保存
  2. Model.prototype.orderDataCustomSave(event){
  3.         var data=event.source;
  4.         var params={
  5.                 data:data.toJson()
  6.         };
  7.         var success=function(){
  8.                 data.applyUpdates();
  9.         }
  10.         Baas.sendRequest({
  11.                 "url":"/demo",
  12.                 "params":params,
  13.                 "action": "saveOrder",
  14.                 "success":success
  15.         })
  16. }
复制代码



长春鱼熊企业管理咨询有限公司



X5开发出入库培训视频
(出处: 起步论坛)

377

主题

2594

帖子

5117

积分

论坛元老

Rank: 8Rank: 8

积分
5117
QQ
 楼主| 发表于 2017-1-20 15:07:58 | 显示全部楼层
  1. //后台java

  2. public static void queryOrder(ServletRequest request, ServletResponse response) threw SQLExceptions, IOExceptions,NamingExceptions{
  3.         JSONObject params=(JSONObject) JSONObject.parse(request.getParameters("params"));
  4.        
  5.         Object columns=params.get("columns");
  6.         Integer limit=params.getInteger("limit");
  7.         Integer offset=params.getInteger("offset");
  8.         String search=parmas.getString("search");

  9.         List<Object> sqlParams=new ArrayList<Object>();
  10.         List<String> filters=new ArrayList<Object>();
  11.        
  12.         if(!Util.isEmptyString(search)){
  13.                 filters.add("fUserName like ? or fPhoneNumber like ? or fAddress like ? or fContent like ?");
  14.                 search=(search.indexOf("%")==-1 ? "%"+search+"%" : search )       
  15.                 for(Integer i=0;i<4;i++){
  16.                         sqlParams.add(search);
  17.                 }
  18.         }
  19.        
  20.         Table table=null;
  21.         Connection conn=Util.getConnection(DATASOURCE_TAKEOUT);
  22.         try{
  23.                 table=Util.queryData(conn,TABLE_TAKEOUT_ORDER,columns,filters,"fCreateTime Desc",sqlParams,offset,limit)                ;
  24.                
  25.         }finally{
  26.                 conn.close();
  27.         }

  28.         Util.writeTableToResponse(table,response);

  29. }

  30. public static void saveOerder(ServletRequest request, ServletResponse response ) threw ParseException, SQLException, NamingException{
  31.         JSONObject params= (JSONObject) JSONObject.parse(request.getParameter("params"));
  32.         JSONObject data = params.getJSONObject("data");
  33.         Table table= Transform.jsonToTable(data);

  34.         Connection conn=Util.getConnection(DATASOURCE_TAKEOUT);
  35.        
  36.         try{
  37.                 conn.setAutoCommit(false);
  38.                 try{
  39.                         Util.saveData(conn,table,TABEL_TAKEOUT_ORDER);
  40.                 }catch(SQLException e){
  41.                         conn.rollback();
  42.                         threw e;
  43.                 }
  44.                
  45.         }finally{
  46.                 conn.close();
  47.         }

  48. }
复制代码
长春鱼熊企业管理咨询有限公司



X5开发出入库培训视频
(出处: 起步论坛)
回复 支持 反对

使用道具 举报

64

主题

471

帖子

1127

积分

金牌会员

Rank: 6Rank: 6

积分
1127
发表于 2017-1-20 15:39:39 | 显示全部楼层
baasData已经过时,功能完全不够用也不改进,性能不看好也不重视。以你的经验,应该可以写一个更好的组件出来才对,没必要执着于那个baasData。
我几天前提过想让Data组件增加可写入的计算属性,结果管理员给我打擦边球,完全答非所问,连什么是“可写入”的计算属性都不懂,那也不指望在功能上有啥改进了,至于性能方面,本来我想参考下起步开源的组件代码自己设计框架,结果各种低效率的代码,滥用循环,非常失望,花时间读这类代码还不如自己重写一套。
最后不得不提的是,那个knockout真的不错,官网文档反复看都不嫌烦,每次看都有心得,直接用knockout来封装组件,结合需求可以制作一个高性能、低耦合的组件(起步的组件只能用在起步的框架里,耦合太强不好)
回复 支持 反对

使用道具 举报

377

主题

2594

帖子

5117

积分

论坛元老

Rank: 8Rank: 8

积分
5117
QQ
 楼主| 发表于 2017-1-20 15:56:53 | 显示全部楼层
复杂数据查询


  1. //复杂数据查询

  2. //前台发起数据查询

  3. Model.prototype.userDataCustomRefresh(event){
  4.         var data=event.source;
  5.         var params={
  6.                 "columns":  Bass.getDataColumns(data),
  7.                 "limit":  event.limit,
  8.                 "offset":event.offset,
  9.                 "search":this.getElementByXid("searchInput").value()

  10.         };
  11.         var success=function(resultData){
  12.                 var append=event.options&&event.options.append;
  13.                 data.loadData(resultData,append);
  14.         };
  15.        
  16.         Baas.sendRequest({
  17.                 "url":  "/demo",
  18.                 "action":"queryUser",
  19.                 "params": params,
  20.                 "success":success

  21.         });

  22. }
复制代码
长春鱼熊企业管理咨询有限公司



X5开发出入库培训视频
(出处: 起步论坛)
回复 支持 反对

使用道具 举报

377

主题

2594

帖子

5117

积分

论坛元老

Rank: 8Rank: 8

积分
5117
QQ
 楼主| 发表于 2017-1-20 15:57:09 | 显示全部楼层
  1. /前台发起数据保存
  2. Model.prototype.userDataCustomSave(event){
  3.         var data=event.source;
  4.         var params={
  5.                
  6.                 data:data.toJson()
  7.         };
  8.         var success=function(){
  9.                 data.applyUpdates();
  10.         }
  11.         Baas.sendRequest({
  12.                 "url":"/demo",
  13.                 "params":params,
  14.                 "action": "saveUser",
  15.                 "success":success
  16.         })
  17. }
复制代码
长春鱼熊企业管理咨询有限公司



X5开发出入库培训视频
(出处: 起步论坛)
回复 支持 反对

使用道具 举报

377

主题

2594

帖子

5117

积分

论坛元老

Rank: 8Rank: 8

积分
5117
QQ
 楼主| 发表于 2017-1-20 15:57:30 | 显示全部楼层
  1. //后台java

  2. public static void queryUser(ServletRequest request, ServletResponse response) threw SQLException, IOException, NamingException{
  3.         JSONObject params=(JSONObject) JSONObject.parse(request.getParameter("params"));
  4.         Object columns= params.get("columns");
  5.         Integer limit=params.getInteger("limit");
  6.         Integer offset = params.getInteger("offset");
  7.         String search=params.getString("search");
  8.        
  9.         List<Object> sqlParams= new ArrayList<Object>();
  10.         String sqlWhere="";

  11.         if(!Util.isEmptyString(search)){
  12.                 sqlWhere =" WHERE (u.fID LIKE ? OR u.fName LIKE ? OR u.fPhoneNumber LIKE ? OR u.fAddress LIKE ?) ";
  13.                 search=search.indexOf("%")==-1?"%"+search+"%": search;
  14.                 for(Integer i=0;i<4,i++){
  15.                         sqlParams.add(search);
  16.                 }
  17.         }
  18.         String sql= "SELECT u.fID, u.fName, u.fPhoneNumber, u.fAddress, COUNT(ord.fID) AS orderCount "
  19.                                 + " FROM takeout_user u "
  20.                                 + "         LEFT JOIN takeout_order ord ON u.fID = ord.fUserID "
  21.                                 + sqlWhere
  22.                                 + " GROUP BY u.fID, u.fName, u.fPhoneNumber, u.fAddress ";
  23.                
  24.         Table table=null;
  25.         Connection=Util.getConnection(DATASOURCE_TAKEOUT);
  26.         try{
  27.                 table=Util.queryData(conn,sql,sqlParams,columns,offset,limit);
  28.                 if(offset!=null&& offset.equals(1)){
  29.                         String sqlTotal="SELECT COUNT(*) FROM takeout_user u "+sqlWhere;
  30.                         Object total=Util.getValueBySQL(conn,sqlTotal,sqlParams);
  31.                         table.setTotal(Integer.parseInt(total.toString()));
  32.                 }
  33.                
  34.         }finally{
  35.                 conn.close();
  36.         }

  37.         Util.writeTableToResponse(response,table);
  38.        
  39. }


  40. public static void saveUser(ServletRequest request, ServletResponse response) threw ParseException, SQLException, NamingException{
  41.         JSONObject params=(JSONObject) JSONObject.parse(request.getParameter("params"));
  42.         JSONObject data=params.getJSONObject("data");
  43.         Table table= Transform.jsonToTable(data);
  44.        
  45.         Connection conn=Util.getConnection(DATASOURCE_TAKEOUT);
  46.         try{
  47.                
  48.                 conn.setAutoCommint(false);
  49.                 try{
  50.                         Collection<String> columns=table.getColumnName();
  51.                         column.remove("orderCount");
  52.                         Util.saveData(conn,table,TABLE_TAKEKOUT_USER,columns);
  53.                         conn.commit();
  54.                 }catch(SQLException e){
  55.                         conn.rollback();
  56.                         threw e;
  57.                 }
  58.         }finally{
  59.                 conn.close();
  60.         }
  61.        


  62. }
复制代码
长春鱼熊企业管理咨询有限公司



X5开发出入库培训视频
(出处: 起步论坛)
回复 支持 反对

使用道具 举报

发表于 2017-1-20 16:04:54 | 显示全部楼层
qldsrx 发表于 2017-1-20 15:39
baasData已经过时,功能完全不够用也不改进,性能不看好也不重视。以你的经验,应该可以写一个更好的组件出 ...

WeX5 开发的应用编译后是可以部署到如何web应用中的!
WeX5主要做页面快速开发!后端如果要求比较高的话,建议使用BeX5
BaasServer 确实没有做到更完整!它其实就是简单封装了一下jdbc 增删改查!编译后就把它当做是一个sevlet对待
http://docs.wex5.com/wex5-server-question-list-2027
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

377

主题

2594

帖子

5117

积分

论坛元老

Rank: 8Rank: 8

积分
5117
QQ
 楼主| 发表于 2017-1-20 16:09:10 | 显示全部楼层
liangyongfei 发表于 2017-1-20 16:04
WeX5 开发的应用编译后是可以部署到如何web应用中的!
WeX5主要做页面快速开发!后端如果要求比较高的话 ...

你们在我的笔记里聊天?
长春鱼熊企业管理咨询有限公司



X5开发出入库培训视频
(出处: 起步论坛)
回复 支持 反对

使用道具 举报

377

主题

2594

帖子

5117

积分

论坛元老

Rank: 8Rank: 8

积分
5117
QQ
 楼主| 发表于 2017-1-20 16:39:14 | 显示全部楼层
树形数据一次加载

  1. //树形数据一次加载

  2. //前台
  3. Model.prototype.regionDataCustomRefresh=function(){

  4.         var data=event.source;
  5.         var params={
  6.                 columns:Baas.getDataColumns(data)
  7.         }
  8.         var success=function(resultData){
  9.                 data.loadData(resultData,false);

  10.         }
  11.        
  12.         Baas.sendRequest({
  13.                 "url":"/demo",
  14.                 "action": "queryRegionTree",
  15.                 params:params,
  16.                 success:success
  17.         })       
  18. }

  19. //后台

  20. public static void queryRegionTree(ServletRequest request, ServletRepsponse) threw SQLException, IOException, NamingException{
  21.         JSONObject params=(JSONObject)JSONObject.parse(request.getParameter("request"));
  22.         Object columns=params.get("columns");
  23.        
  24.         Connection conn=Util.getConnection(DATASOURCE_TAKEOUT);
  25.         Table table=null;
  26.         try{
  27.                 Util.queryData(conn,TABLE-TAKEOUT-REGION,columns,null,"fID asc",null,null,null);

  28.         }
  29.        
  30.         finally{
  31.                 conn.close();
  32.         }
  33.        
  34.         table.setIDColumn("fID");
  35.         JSONObject tableJSON = Transform.tableToTreeJson(table,"fParentID");
  36.         Util.writeJsonToResponse(response,);

  37. }
复制代码
长春鱼熊企业管理咨询有限公司



X5开发出入库培训视频
(出处: 起步论坛)
回复 支持 反对

使用道具 举报

377

主题

2594

帖子

5117

积分

论坛元老

Rank: 8Rank: 8

积分
5117
QQ
 楼主| 发表于 2017-1-20 16:48:56 | 显示全部楼层
树形数据逐级加载
  1. /树形数据逐级加载

  2. //前台
  3. Model.prototype.regionDataCustomRefresh=function(){

  4.         var data=event.source;
  5.         var parent = event.options && event.options.parent;
  6.        
  7.         var params={
  8.                 columns:Baas.getDataColumns(data),
  9.                 parent:parent&&parent.getID(),
  10.                 limit:event.limit,
  11.                 offset:event.offset
  12.         }
  13.         var success=function(resultData){
  14.                 var append=event.options&&event.options.append;
  15.                 data.loadData(resultData,append);

  16.         }
  17.        
  18.         Baas.sendRequest({
  19.                 "url":"/demo",
  20.                 "action": "queryRegionTreeByParent"
  21.                 params:params,
  22.                 success:success
  23.         })       
  24. }

  25. //后台

  26. public static void queryRegionTreeByParent(ServletRequest request, ServletRepsponse) threw SQLException, IOException, NamingException{
  27.                 // 参数序列化
  28.                 JSONObject params = (JSONObject) JSONObject.parse(request.getParameter("params"));

  29.                 // 获取参数
  30.                 Object columns = params.get("columns");
  31.                 Integer limit = params.getInteger("limit");
  32.                 Integer offset = params.getInteger("offset");
  33.                 String parent = params.getString("parent");
  34.                
  35.                 // 存放SQL中的参数值
  36.                 List<Object> sqlParams = new ArrayList<Object>();
  37.                 // 构造过滤条件
  38.                 List<String> filters = new ArrayList<String>();
  39.                 // 构造父过滤条件
  40.                 if (Util.isEmptyString(parent)) {
  41.                         filters.add("fParentID is null");
  42.                 } else {
  43.                         filters.add("fParentID = ?");
  44.                         sqlParams.add(parent);
  45.                 }
  46.                
  47.                 Table table = null;
  48.                 Connection conn = Util.getConnection(DATASOURCE_TAKEOUT);
  49.                 try {
  50.                         // 获取数据
  51.                         table = Util.queryData(conn, TABLE_TAKEOUT_REGION, columns, filters, "fID ASC", sqlParams, offset, limit);
  52.                 } finally {
  53.                         conn.close();
  54.                 }

  55.                 // 输出返回结果
  56.                 Util.writeTableToResponse(response, table);

  57. }
复制代码
长春鱼熊企业管理咨询有限公司



X5开发出入库培训视频
(出处: 起步论坛)
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|X3技术论坛|Justep Inc.    

GMT+8, 2024-3-29 09:43 , Processed in 0.075761 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表