首页 > 代码库 > ibatis 动态传入表名
ibatis 动态传入表名
项目中需要根据不同的表名和列名生成不同的select语句,我想ibatis这里也应该是用预编译的形式存储????
不太了解具体原理,反正我知道在用oci库的时候,是可以的;用sprinf("sql","xx","xx"),一下,就可以了。oci库肯定是用预编译的形式干的!
于是,我上网查了查,感觉类似的问题有,可没给出一个完整的例子。想了一想,既然你能动态传入map,map里面存储了相应的查询值,那你
ibatis肯定也能传入其他元数据信息吧。测试了一下,可以!OK,搞定了:)
不多说了,代码如下
[java]
view plain
copy
- Java code :
- // just a releation to the table stored in db
- public class Test {
- public String name;
- public Timestamp date;
- public int id;
- }
- public class TestInsert {
- // logger class you can replace it to System.out.println
- static Log logger = LogFactory.getLog(TestInsert.class);
- public static void main(String[] args) {
- /*
- * Test test = new Test(); test.date = new
- * Timestamp(System.currentTimeMillis()); test.name = "fffff"; try {
- * long num = (Long) EntityManager.getSqlMapper().insertArgs(
- * "insertOperation", "fffff", new
- * Timestamp(System.currentTimeMillis())); logger.info("ID is " + num);
- * } catch (SQLException e) { e.printStackTrace(); }
- */
- // try the dynamic table dealation
- HashMap<String, Object> map = new HashMap<String, Object>();
- // set the query value
- map.put("ID", "dizhuang");
- // set the col1 to be selected
- map.put("col1", "*");
- // set the table name
- map.put("tablePrefix", "testsocevent");
- // set the col name which you use
- map.put("col2", "NAME");
- // map.put("ID", 1000);
- // map.put("id", "1005");
- try {
- // why args is error?
- Test test = (Test) EntityManager.getSqlMapper().queryForObject(
- "getTest", map);
- logger.info("id : " + test.id);
- logger.info("time :" + test.date);
- logger.info("name : " + test.name);
- } catch (SQLException e) {
- logger.error(e.getMessage(), e);
- // e.printStackTrace();
- }
- }
- // 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>
ibatis 动态传入表名
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。