atitit.新增编辑功能 跟orm的实现 attilax p31

1. 流程的实现 1

2. view的实现(dwr) 1

3. 获取表结构 1

4. grep filt req params 2

5. 转换成个atiorm map 3

6. 转换成个sql 4

7. 参考 4

1. 流程的实现

传统的orm的问题::不能动态insert...  myeclipse到是容易的...要是eclispe走麻烦的兰...

在说,cant 动态添加字段,要同步修改domain文件...

所以,atiorm 使用表格结构来做orm不走ok兰???

获得req参数,组成对象...

过滤table不存在的字段...

转换为sql

add/update的实现不在ui上指定,使用模式,,通过oid来有判断力的add还是edit

作者:: 老哇的爪子 Attilax 艾龙,  EMAIL:1466519819@qq.com

转载请注明来源: http://blog.csdn.net/attilax

2. view的实现(dwr)

隐藏控件_meth=orm

在的控件都是对象 fld

3. 获取表结构

位置:wechat4propty

public class DbX {

/**

@author attilax 老哇的爪子

@since   p31 j_o_53

*/

public static List getColsList(Connection con, String table) {

List li=new ArrayList();

// TODO Auto-generated method stub

String tableName=table;

DatabaseMetaData dbmd;

try {

dbmd = con.getMetaData();

} catch (SQLException e2) {

// TODO Auto-generated catch block

e2.printStackTrace();

throw new RuntimeException(e2);

}

ResultSet rs;

try {

rs = dbmd.getColumns(con.getCatalog(),   "%",   tableName,   null);

} catch (SQLException e1) {

// TODO Auto-generated catch block

e1.printStackTrace();

throw new RuntimeException(e1);

}

try {

while(rs.next()) {

String columnName = rs.getString("COLUMN_NAME");

li.add(columnName);

//   String columnType = rs.getString("TYPE_NAME");

//   int datasize = rs.getInt("COLUMN_SIZE");

//   int digits = rs.getInt("DECIMAL_DIGITS");

//   int nullable = rs.getInt("NULLABLE");

//   System.out.println(columnName+" "+columnType+" "+datasize+" "+digits+" "+

//     nullable);

// }

}

} catch (SQLException e) {

e.printStackTrace();

throw new RuntimeException(e);

}

return li;

}

4. grep filt req params

/**

* @author attilax 老哇的爪子

* @since p31 h_43_3

*/

private Map filtField(Map m) {

JSONObject metadata = JSONObject.fromObject(m.get("_metadata"));

String table = (String) metadata.get("table");

Connection conn = (Connection) core.retry3(new Closure() {

@Override

public Object execute(Object arg0) throws Exception {

Connection conn2 = AaaCfg.IocX.getBean(Connection.class);

boolean b = DbX.checkConn(conn2);

if (b)

return conn2;

else

throw new RuntimeException(" conn is close maybe ");

}

}, new errEventProcess() {

@Override

public Object execute(Object arg0) throws Exception {

// TODO Auto-generated method stub

return null;

}

}, "c:\\getconn");

List li = DbX.getColsList(conn, table);

Map m2 = Mapx.grep(m, li);

return m2;

}

5. 转换成个atiorm map

/**

* @author attilax 老哇的爪子

* @since p31 h_37_2

*/

protected Map convert2atiormMap(Object arg0) {

Map m = (Map) arg0;

Map m_filted_fld = filtField(m);

JSONObject metadata = JSONObject.fromObject(m.get("_metadata"));

Map m2 = new HashMap();

m2.put("datatype", metadata.get("table"));

m2.put("op", metadata.get("op"));

m2.put("field", m_filted_fld);

return m2;

}

6. 转换成个sql

Command.reg("orm", new Closure2() {

@Override

public Object execute(Object arg0) {

Map m2 = convert2atiormMap(m);

Object sql = new OrmX().convert2sql(core.toJsonStrO88(m2));

7. 参考

java 获取表结构 - HouYing - 博客频道 - CSDN.NET.htm

atitit.新增编辑功能 跟orm的实现 attilax p31的更多相关文章

  1. Editable DataGrid 实现列表新增编辑功能

    今天在开发一个功能时候,需要直接在列表实现新增.编辑等功能.于是查看easyui 相关文档,找到相关解决办法. easyui的datagrid支持可编辑功能.它使用户能够向数据网格中添加一个新行.用户 ...

  2. ABBYY FineReader 15 新增编辑表格单元格功能

    ABBYY FineReader 15(Windows系统)新增编辑表格单元格功能,在PDF文档存在表格的前提下,可将表中的每个单元格作为单独的文字块进行单独编辑,单元格内的编辑不会影响同一行中其他单 ...

  3. IOS 表视图(UITableVIew)的使用方法(7)表视图的编辑功能(拖拉调整排序位置)

    除了每个单元行左边的删除和新增图标,UITableView还支持在单元行的右侧显示一个供用户拖拉调整排序位置的控件. 不过如果要显示此控件,UITableView的数据源需要实现以下的方法. -(vo ...

  4. Asp.Net MVC +EntityFramework主从表新增编辑操作的实现(删除操作怎么实现?)

    Asp.Net MVC +EntityFramework主从表新增编辑操作的实现 对于MVC中同时对主从表的表单操作在网上现有的解决很少,而这样的操作在做业务系统中是经常为遇到的.我在网上搜索了很久都 ...

  5. Atitit 翻页功能的解决方案与版本历史 v4 r49

    Atitit 翻页功能的解决方案与版本历史 v4 r49 1. 版本历史与分支版本,项目版本记录1 1.1. 主干版本历史1 1.2. 分支版本  项目版本记录.1 2. Easyui 的翻页组件2 ...

  6. Atitit截屏功能的设计解决方案

    Atitit截屏功能的设计解决方案 自己实现.... 使用快捷键.. 弹出自己的win,,背景是屏幕快照 点击鼠标光标变成十字状态 出现截屏窗口调整截屏窗口位置与大小 释放鼠标,三个btn,,  复制 ...

  7. Atitit.excel导出 功能解决方案 php java C#.net版总集合.doc

    Atitit.excel导出 功能解决方案 php java C#.net版总集合.docx 1.1. Excel的保存格式office2003 office2007/2010格式1 1.2. 类库选 ...

  8. Atitit.在线充值功能的设计

    Atitit.在线充值功能的设计 1. 流程1 2. Js sdk api   增加订单1 3. Java api 返回servlet处理1 3.1. 返回网址的本地host测试2 1. 流程 本地增 ...

  9. c# 框架学习(nop )总结-------编辑功能

    一.在js中配置列: <script> $(document).ready(function () { $("#enterprise-grid").kendoGrid( ...

随机推荐

  1. Mysql 会导致锁表的语法

    最近再找一些Mysql锁表原因,整理出来一部分sql语句会锁表的,方便查阅,整理的不是很全,都是工作中碰到的,会持续更新 笔者能力有限,如果有不正确的,或者不到位的地方,还请大家指出来,方便你我,方便 ...

  2. iOS:CoreData数据库的使用二(创建多个数据库表,表之间有对应关系)

    CoreData数据库框架是一个封装性好,功能强大数据库,它底层使用的还是sqlite数据库,不过苹果公司在其基础上,为其封装新和安全性的维护上做了大量的处理,例如对一些事物做了详细的操作,如读脏数据 ...

  3. iOS:删除storyBoard,纯代码实现UITabBarController的视图切换功能

    storyboard是一个很强大的编写代码的辅助工具,可以帮助布局多个视图之间的联系,既直观又能减少代码量:但是,作为一个程序员,在不使用storyboard的情况下,纯代码编写是必须的技能. 下面就 ...

  4. [Todo] 乐观悲观锁,自旋互斥锁等等

    乐观锁.悲观锁.要实践 http://chenzhou123520.iteye.com/blog/1860954 <mysql悲观锁总结和实践> http://chenzhou123520 ...

  5. Fragment 简介 基础知识 总结 MD

    Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...

  6. hdu 1007 Quoit Design(分治法求最近点对)

    大致题意:给N个点,求最近点对的距离 d :输出:r = d/2. // Time 2093 ms; Memory 1812 K #include<iostream> #include&l ...

  7. Android_三种菜单介绍

    Android的菜单分为三种类型:选项菜单(Option Menu).上下文菜单(Context Menu).子菜单(Sub Menu) 一.选项菜单 当用户单击设备上的菜单按钮(Menu),触发事件 ...

  8. 零java基础搞定微信Server

    自从打通了微信client到BLE设备端的通道.我的工作就转移到了server端了.微信的BlueDemoServer是以java编写,而本尊仅仅懂得嵌入式,对JavaWeb一窍不通. 本尊贵为IOT ...

  9. oracle 存储过程 返回结果集

      oracle 存储过程 返回结果集 CreationTime--2018年8月14日09点50分 Author:Marydon 1.情景展示 oracle存储过程如何返回结果集 2.解决方案 最简 ...

  10. 通讯录结构体方法的实现 和VS中存在的一些问题的分析

    实现一个通讯录: 通讯录能够用来存储1000个人的信息.每一个人的信息包含: 姓名.性别.年龄.电话.住址 功能例如以下: 1.  加入联系人信息 2.  删除指定联系人信息 3.  查找指定联系人信 ...