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( ...
随机推荐
- jQuery -> filter使用方法
利用filter函数能够从wrapper set中过滤符合条件的DOM元素. 假设我们有一个内容例如以下的html文件,要获取类为external的<a>元素,使用filter能够非常ea ...
- 数学图形(2.23)Cylindric sine wave柱面正弦曲线
柱面正弦曲线 #http://www.mathcurve.com/courbes3d/couronnetangentoidale/couronnetangentoidale.shtml vertice ...
- Orchard运用 - 理解App_Data目录结构
了解一个系统,应该基本上要了解目录结构及其组织形式.这样对于开发人员更是必备的知识,比如开发模块最终安装到哪,主题Themes是如何配置启用. 今天跟大家分享其实是个笔记记录,就是看到有一篇文章介绍A ...
- css3新单位vw、vh、vmin、vmax的使用介绍
1,vw.vh.vmin.vmax 的含义 (1)vw.vh.vmin.vmax 是一种视窗单位,也是相对单位.它相对的不是父节点或者页面的根节点.而是由视窗(Viewport)大小来决定的,单位 1 ...
- iOS 设备信息获取
參考:http://blog.csdn.net/decajes/article/details/41807977參考:http://zengrong.net/post/2152.htm1. 获取设备的 ...
- 【中英】mac电脑清理软件 ToolWiz Mac Boost
简单介绍: ToolWiz Mac Boost是一款适用于Mac电脑清理加速最好的终极应用, 使您的Mac电脑干净有条理, 执行飞速且稳定.始终保持最佳状态! ToolWiz Mac Boost 运用 ...
- 怎样更爽地看PDF杂志
下载了一些PDF的杂志,想着要是全屏双页显示,应该是很爽的,但是,下载了应该foxit reader,还是遇到一些问题: 1.全屏:F11即可 2.全屏后不双页:在选项中,"全屏" ...
- 介绍Visual Studio的Android模拟器
介绍Visual Studio的Android模拟器 http://blogs.msdn.com/b/visualstudioalm/archive/2014/11/12/introducing-vi ...
- Android 自己主动化測试(3)<monkeyrunner> 依据ID查找对象&touch&type (python)
我在之前的两篇文章中用java来实现过 Android 自己主动化測试(1)怎样安装和卸载一个应用(java).Android 自己主动化測试(2)依据ID查找对象(java). 可是本质上都是用mo ...
- java线程同步问题——由腾讯笔试题引发的风波
刚刚wm问我了一道线程的问题,因为自己一直是coder界里的渣渣.所以就须要恶补一下. 2016年4月2号题目例如以下. import java.util.logging.Handler; /** * ...