zoukankan      html  css  js  c++  java
  • (总结)ibatis 动态传入表名和列名 规格严格

    项目中需要根据不同的表名和列名生成不同的select语句,我想ibatis这里也应该是用预编译的形式存储????

    不太了解具体原理,反正我知道在用oci库的时候,是可以的;用sprinf("sql","xx","xx"),一下,就可以了。oci库肯定是用预编译的形式干的!

    于是,我上网查了查,感觉类似的问题有,可没给出一个完整的例子。想了一想,既然你能动态传入map,map里面存储了相应的查询值,那你

    ibatis肯定也能传入其他元数据信息吧。测试了一下,可以!OK,搞定了:)

    不多说了,代码如下

    代码
     1 Java code : 
     2 // just a releation to the table stored in db
     3 public class Test {
     4     public String name;
     5     public Timestamp date;
     6     public int id;
     7 }
     8 public class TestInsert {
     9     // logger class you can replace it to System.out.println
    10     static Log logger = LogFactory.getLog(TestInsert.class);
    11 
    12     public static void main(String[] args) {
    13         /*
    14          * Test test = new Test(); test.date = new
    15          * Timestamp(System.currentTimeMillis()); test.name = "fffff"; try {
    16          * long num = (Long) EntityManager.getSqlMapper().insertArgs(
    17          * "insertOperation", "fffff", new
    18          * Timestamp(System.currentTimeMillis())); logger.info("ID is " + num);
    19          * } catch (SQLException e) { e.printStackTrace(); }
    20          */
    21         // try the dynamic table dealation
    22         HashMap<String, Object> map = new HashMap<String, Object>();
    23         // set the query value 
    24         map.put("ID""dizhuang");
    25         // set the col1 to be selected
    26         map.put("col1""*");
               // set the table name
    27         map.put("tablePrefix""testsocevent");
    28         // set the col name which you use
               map.put("col2""NAME");
    29         // map.put("ID", 1000);
    30         // map.put("id", "1005");
    31         try {
    32             // why args is error?
    33             Test test = (Test) EntityManager.getSqlMapper().queryForObject(
    34                 "getTest", map);
    35             logger.info("id : " + test.id);
    36             logger.info("time :" + test.date);
    37             logger.info("name : " + test.name);
    38         } catch (SQLException e) {
    39             logger.error(e.getMessage(), e);
    40             // e.printStackTrace();
    41         }
    42     }
    43 }
      // ibatis sql
      <select id="getTest" parameterClass="java.util.HashMap"
        resultClass="com.neusoft.soc.eventcenter.test.Test"
        remapResults="true">
        SELECT
            $col1$
        FROM
            $tablePrefix$
        WHERE
          $col2$ = #ID#
       </select>
     
  • 相关阅读:
    Hadoop命令大全
    Cube中时间维度
    无法锁定管理目录(/var/lib/dpkg/),是否有其他进程正占用它?
    IE6、IE7、IE8、FF对空标签块状元素解释的不同点
    SSIS导出平面文件数据带_x003C_none_x003E的问题
    用DB2 Runtime Client实现Apache Derby 数据库ODBC编程
    区块链技术探索
    JS原型对象
    this关键字
    消息认证码
  • 原文地址:https://www.cnblogs.com/diyunpeng/p/1646218.html
Copyright © 2011-2022 走看看