我可以使用 iBatis 创建动态临时 table 吗?
Can I create dynamic temporary table using iBatis?
在查询用户的联系人时,我想使用特定于该用户的临时 table,例如tmp_contact_{userId},如果userId为123,应该解析为tmp_contact_123
我继承了一个 java 项目,该项目使用 iBatis 与 MySql 数据库进行互操作。
我已经阅读了一些 iBatis 文档,并且在 xml 中看到可替换参数为 #{userId} 或 #userId#。前者似乎被解释为准备好的语句的参数并产生问号,例如'create temporary table tmp_contact_?',而后者保留为文字,例如'create temporary table tmp_contact_#userId#'。
是否有替代语法来生成 'create temporary table tmp_contact_123'?
是的,有办法做到这一点!
使用 #
在字符串参数周围加上引号。您可以改用 $
。对于您的示例,它将是
create temporary table tmp_contact_$userId$
iBatis 编译这条语句时会
create temporary table tmp_contact_123
而不是
create temporary table tmp_contact_'123'
您需要在 .xml 文件中进行以下更改:
<?xml version="1.0" encoding="utf-8" ?>
<sqlMap namespace="xxx" xmlns="http://ibatis.apache.org/mapping" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >
<statements>
<select id="GetTempTableData" resultClass="Student" parameterClass="System.String">
CREATE TABLE ##TEMPTABLE (ID int, Name varchar(20))
INSERT INTO ##TEMPTABLE (ID, NAME) VALUES (1, 'RAVI')
INSERT INTO ##TEMPTABLE (ID, NAME) VALUES (2, 'KAPIL')
SELECT * FROM ##TEMPTABLE
</select>
</statements>
</sqlMap>
注意:您需要在 select 语句中创建临时文件 table。您需要使用双“##”在 IBATIS 中创建临时 table。 “##”将替换为单个“#”,它将创建名为“#TEMPTABLE”的临时文件 table。请记住它们是您需要搜索的临时 table 的一些限制。
希望对您有所帮助..
在查询用户的联系人时,我想使用特定于该用户的临时 table,例如tmp_contact_{userId},如果userId为123,应该解析为tmp_contact_123
我继承了一个 java 项目,该项目使用 iBatis 与 MySql 数据库进行互操作。 我已经阅读了一些 iBatis 文档,并且在 xml 中看到可替换参数为 #{userId} 或 #userId#。前者似乎被解释为准备好的语句的参数并产生问号,例如'create temporary table tmp_contact_?',而后者保留为文字,例如'create temporary table tmp_contact_#userId#'。 是否有替代语法来生成 'create temporary table tmp_contact_123'?
是的,有办法做到这一点!
使用 #
在字符串参数周围加上引号。您可以改用 $
。对于您的示例,它将是
create temporary table tmp_contact_$userId$
iBatis 编译这条语句时会
create temporary table tmp_contact_123
而不是
create temporary table tmp_contact_'123'
您需要在 .xml 文件中进行以下更改:
<?xml version="1.0" encoding="utf-8" ?>
<sqlMap namespace="xxx" xmlns="http://ibatis.apache.org/mapping" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >
<statements>
<select id="GetTempTableData" resultClass="Student" parameterClass="System.String">
CREATE TABLE ##TEMPTABLE (ID int, Name varchar(20))
INSERT INTO ##TEMPTABLE (ID, NAME) VALUES (1, 'RAVI')
INSERT INTO ##TEMPTABLE (ID, NAME) VALUES (2, 'KAPIL')
SELECT * FROM ##TEMPTABLE
</select>
</statements>
</sqlMap>
注意:您需要在 select 语句中创建临时文件 table。您需要使用双“##”在 IBATIS 中创建临时 table。 “##”将替换为单个“#”,它将创建名为“#TEMPTABLE”的临时文件 table。请记住它们是您需要搜索的临时 table 的一些限制。
希望对您有所帮助..