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


    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 conString 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 = (Stringmetadata.get("table");

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

    @Override

    public Object execute(Object arg0throws 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 arg0throws Exception {

    // TODO Auto-generated method stub

    return null;

    }

    }, "c:\getconn");

    List li = DbX.getColsList(conntable);

    Map m2 = Mapx.grep(mli);

    return m2;

    }

     

    5. 转换成个atiorm map

    /**

     * @author attilax 老哇的爪子

     * @since p31 h_37_2

     */

    protected Map convert2atiormMap(Object arg0) {

    Map m = (Maparg0;

    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


  • 相关阅读:
    android 项目学习随笔十五(ShareSDK开放平台)
    android 项目学习随笔十四(WebView)
    android 项目学习随笔十三(ListView实现ITEM点击事件,将已读状态持久化到本地)
    android 项目学习随笔十二(ListView加脚布局)
    android 项目学习随笔十一(ListView下拉刷新提示)
    android 项目学习随笔十(自定义ProgressBar)
    android 项目学习随笔九(ListView加头布局)
    android 项目学习随笔八(xUtils的BitmapUtils模块)
    android 项目学习随笔七(ViewPagerIndicator与ViewPager)
    android 项目学习随笔六(网络缓存)
  • 原文地址:https://www.cnblogs.com/attilax/p/5963744.html
Copyright © 2020-2023  润新知