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. Linux C/C++开发工具

    1. vim + ctags + taglist + cscope + cppcomplete + global 2.emacs+插件 可以查看 http://blog.163.com/yu_hong ...

  2. windows下gVim(Vi/vim)基本使用

    Vim 是一个Linux 平台上功能非常强大的编辑器,他是早年的Vi 编辑器的加强版.这个gVim 是windows 版的,并且有了标准的windows 风格的图形界面,所以叫g(graphical) ...

  3. 简单的python2.7基于bs4和requests的爬虫

    python的编码问题比较恶心. decode解码encode编码 在文件头设置 # -*- coding: utf-8 -*-让python使用utf8. # -*- coding: utf- -* ...

  4. combogrid获取多个字段的方法

    var g = $('#cc').combogrid('grid'); // 获取表格控件对象var r = g.datagrid('getSelected'); //获取表格当前选中行alert(r ...

  5. HDFS命令行工具

    1. hadoop fs 帮助信息 hadoop fs 使用help选项可以获得某个具体命令的详细说明: hadoop fs -help ls 2. 列出HDFS文件和目录 hadoop fs -ls ...

  6. AndroidStudio用Cmake方式编译NDK代码(cmake配置.a库)

    1.cmake是什么? CMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程).他能够输出各种各样的makefile或者project文件,能测试编译器所支持的C+ ...

  7. Maven核心概念之仓库,生命周期与插件

    宏观图 一.仓库 统一存储全部Maven项目共享的构建的位置就是仓库. 仓库分为本地仓库和远程仓库.远程仓库又分为中央仓库(中央仓库是Maven核心自带的远程仓库),伺服(还有一种特殊的远程仓库,为节 ...

  8. WeifenLuo.WinFormsUI.Docking添加关闭功能

    /****************************************************************** * 创建人:HTL * 创建时间:2014-7-8 15:37: ...

  9. Linq 使用注意

    今天在使用Linq的时候,查询很慢.仔细查看在知道,在in的后面跟的是个方法,这个方法返回一个集合. Linq只是语法糖,内部进行了封装.内部的实现也是遍历集合,找到满足条件的元素. 在in的后面使用 ...

  10. 极客Web开发资源大荟萃

    前端开发已经成为当前炙手可热的技术之一.此次我们总结的前端开发包含了相关技术和流行趋势,希望从中大家可以挖掘你们所需要的,并带给你们最有价值的帮助!原文来自:极客标签 使用代码回放来愉快地学习前端知识 ...