iBATIS 和 dblink?

Posted

技术标签:

【中文标题】iBATIS 和 dblink?【英文标题】:iBATIS and dblink? 【发布时间】:2017-02-28 07:57:29 【问题描述】:

我正在使用 PostgreSQL,并且我使用 dblink 功能来更新远程数据库上的数据。我的项目使用 iBATIS 来处理数据库。

我需要运行带参数的查询语句,但问题是 db_link 要求 SQL 用引号括起来。而且iBATIS看不懂..

我有 iBATIS sql:

    SELECT
    dblink_exec(
      'host=192.168.1.1 port=5432 user=abc dbname=wms password=abc',
      'UPDATE m_user_profile 
        first_name = #4#,
        last_name = #5# ,
        mobile_no = #6#
    WHERE user_id = CAST(#3# AS numeric)'
   );

但是由于sql是用引号括起来的,所以iBATIS找不到要替换的参数。

我有什么解决办法吗?

【问题讨论】:

使用外部数据包装器和外部表。那么 iBATIS 将无法区分本地表和远程表 @a_horse_with_no_name 抱歉,没看懂,能发个例子吗? postgresql.org/docs/current/static/postgres-fdw.html 【参考方案1】:

格式有帮助吗?喜欢:

SELECT
    dblink_exec(
      'host=192.168.20.60 port=5432 user=clk dbname=clkdb_wms password=clk',
      format('UPDATE m_user_profile 
        first_name = %L,
        last_name = %L ,
        mobile_no = %s
    WHERE user_id = CAST(%s AS numeric)',#4#,#5#,#6#,#3#)
   );

【讨论】:

以上是关于iBATIS 和 dblink?的主要内容,如果未能解决你的问题,请参考以下文章

ibatis学习

ibatis处理日期

ibatis一对多映射报错

Hibernate和IBatis的区别

ibatis 批量update操作

MyBatis_ibatis和mybatis的区别