atitit.新增编辑功能 跟orm的实现 attilax p31
atitit.新增编辑功能 跟orm的实现 attilax p31
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的更多相关文章
- Editable DataGrid 实现列表新增编辑功能
今天在开发一个功能时候,需要直接在列表实现新增.编辑等功能.于是查看easyui 相关文档,找到相关解决办法. easyui的datagrid支持可编辑功能.它使用户能够向数据网格中添加一个新行.用户 ...
- ABBYY FineReader 15 新增编辑表格单元格功能
ABBYY FineReader 15(Windows系统)新增编辑表格单元格功能,在PDF文档存在表格的前提下,可将表中的每个单元格作为单独的文字块进行单独编辑,单元格内的编辑不会影响同一行中其他单 ...
- IOS 表视图(UITableVIew)的使用方法(7)表视图的编辑功能(拖拉调整排序位置)
除了每个单元行左边的删除和新增图标,UITableView还支持在单元行的右侧显示一个供用户拖拉调整排序位置的控件. 不过如果要显示此控件,UITableView的数据源需要实现以下的方法. -(vo ...
- Asp.Net MVC +EntityFramework主从表新增编辑操作的实现(删除操作怎么实现?)
Asp.Net MVC +EntityFramework主从表新增编辑操作的实现 对于MVC中同时对主从表的表单操作在网上现有的解决很少,而这样的操作在做业务系统中是经常为遇到的.我在网上搜索了很久都 ...
- Atitit 翻页功能的解决方案与版本历史 v4 r49
Atitit 翻页功能的解决方案与版本历史 v4 r49 1. 版本历史与分支版本,项目版本记录1 1.1. 主干版本历史1 1.2. 分支版本 项目版本记录.1 2. Easyui 的翻页组件2 ...
- Atitit截屏功能的设计解决方案
Atitit截屏功能的设计解决方案 自己实现.... 使用快捷键.. 弹出自己的win,,背景是屏幕快照 点击鼠标光标变成十字状态 出现截屏窗口调整截屏窗口位置与大小 释放鼠标,三个btn,, 复制 ...
- Atitit.excel导出 功能解决方案 php java C#.net版总集合.doc
Atitit.excel导出 功能解决方案 php java C#.net版总集合.docx 1.1. Excel的保存格式office2003 office2007/2010格式1 1.2. 类库选 ...
- Atitit.在线充值功能的设计
Atitit.在线充值功能的设计 1. 流程1 2. Js sdk api 增加订单1 3. Java api 返回servlet处理1 3.1. 返回网址的本地host测试2 1. 流程 本地增 ...
- c# 框架学习(nop )总结-------编辑功能
一.在js中配置列: <script> $(document).ready(function () { $("#enterprise-grid").kendoGrid( ...
随机推荐
- Spring+Mybatis+SpringMVC后台与前台分页展示实例(附工程)
林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka 摘要:本文实现了一个后台由Spring+Mybatis+SpringMVC组成,分页采用Pag ...
- 3 cocos2dx 3.0 源码分析-mainLoop详细
简述: 我靠上面图是不是太大了, 有点看不清了. 总结一下过程: 之前说过的appController 之后经过了若干初始化, 最后调用了displayLinker 的定时调用, 这里调用了函数 ...
- 如何设置Win7不待机 Win7进入待机状态会断网的解决方法
电脑一旦进入待机状态后,会断网,应用将停止运行,因此需要设置电脑不待机来解决,这种情况需要挂一些游戏或者下载应用的时非常实用,下面就与大家分享下电脑不待机的设置方法,感兴趣的朋友可以参考下 有时候我们 ...
- 10723 Cyborg Genes (LCS + 记忆化搜索)
Problem F Cyborg Genes Time Limit 1 Second September 11, 2132. This is the day that marks the beginn ...
- 关于在Visual Studio 2008/2010 和Opencv平台下出现LINK : fatal error
http://blog.sina.com.cn/s/blog_9015f3230101bbef.html 关于在Visual Studio 2008/2010 和Opencv平台下出现LINK : f ...
- 10个CSS简写技巧让你永远受用
转自:http://blog.bingo929.com/10-css-shorthand-tips.html 前言: CSS简写就是指将多行的CSS属性声明化成一行,又称为CSS代码优化.CSS简写的 ...
- Oracle spatial 空间修正函数(SDO_UTIL.RECTIFY_GEOMETRY)
Oracle spatial有个空间修正函数SDO_UTIL.RECTIFY_GEOMETRY,它可以修复以下可能:a.重复节点 b.自相交 c.坐标串朝向不正确. 该函数的构造函数格式: SDO_U ...
- VS选项中没有C#相关设置选项?
在VS中,行号的设置在工具-选项-文本编辑器,可里面没有VS,我还以为是之前卸载了SP1后造成的. 原来是因为,VS默认环境设置的VB,选项对话框左下角有"显示所有设置"的复选框, ...
- 虚拟机chrome os 没有可用网络错误
从http://chromeos.hexxeh.net/ 下载了一个chrome os的VM版本的,在VM9上打开运行,一直提示没有可用网络 解决方案 查看虚拟机的网络设置设置为 NAT方式 查看主机 ...
- Oracle中CBO优化器简介
Oracle中CBO优化器简介 Oracle数据库中的优化器是SQL分析和执行的优化工具.它负责制定SQL的执行计划,也就是它负责保证SQL的执行计划的效率最高,比如优化器决定Oracle以什么样的方 ...