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. appium+python自动化57-chromedriver与chrome版本

    前言 由于app的webview自动化是依赖于chromedriver的,并且每个app的webview版本号都不太一样,这就导致了,每次都需要重新去下载对应的chromedriver版本.如何根据当 ...

  2. ubuntu 设置静态IP GW

    网卡配置静态IP地址 编辑文件/etc/network/interfaces: sudo vi /etc/network/interfaces 并用下面的行来替换有关eth0的行:# The prim ...

  3. Java编程兵书

    <Java编程兵书> 基本信息 作者: 桂颖 任昱衡 丛书名: 程序员藏经阁 出版社:电子工业出版社 ISBN:9787121207419 上架时间:2013-8-26 出版日期:2013 ...

  4. 权限项目总结(四) shiro 授权

    概述 Authorization(授权):不难理解,授权就是用来控制当前訪问用户在訪问系统资源权限. 这个词也做证书的解释,从证书这个角度来讲,推断是否拥有对资源訪问的权限时.当前用户须要提供证书. ...

  5. C++对象赋值的四种方式

    1.  引用作为参数的方式传递. GetObject(Object& obj) { obj.value = value1; } 特点: 在外部构造一个对象. 把该对象以引用的方式传递到函数中. ...

  6. JSP学习笔记(三):Session和Cookie

    一.JSP Session HTTP是无状态协议,这意味着每次客户端检索网页时,都要单独打开一个服务器连接,因此服务器不会记录下先前客户端请求的任何信息.有三种方法来维持客户端与服务器的会话: 1.C ...

  7. centos7 selenium.common.exceptions.WebDriverException: Message: 'chromedriver' executable needs to be in PATH

    1.查看安装的chrome浏览器版本 2.查看版本对应的驱动 https://sites.google.com/a/chromium.org/chromedriver/downloads 下载后拷贝到 ...

  8. java常用公共代码二之分页代码的实现

    在项目中,我们经常会写到一些公共的代码,来让开发人员调用,减少代码重复,下面,我就将一些常用到的公共类贴出来和大家分享!! 二.分页代码实现:在项目中,分页是一个项目中必不可少的,它可以防止我们从数据 ...

  9. dede 怎样调用其它栏目的文章或者缩略图列表且有分页效果?

    提问i:我做一个站点.有5个栏目,第5个栏目想把前4个栏目的文章都调用一下,搞一个汇总的文章集合. 发现用arclist调用不能设置pagesize的属性.从而不能给文章分页.然而list貌似不能调用 ...

  10. Android通过反射打造能够存储不论什么对象的万能SharedPreferences

    我们通常使用SharedPreferences存储一些须要保存在本地.但又不至于存储在数据库里的一些数据.一般我们用它来存储一些username,password等数据是很方便的,那么假设我们想要存储 ...