问题标签 [ibatis]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
hibernate - Hibernate vs Ibatis 缓存
我们可以通过使用 infinispan 或 ehcache/terracotta 的二级缓存轻松加速休眠应用程序,...但 ibatis 只有一个简单的接口来实现缓存。hibernate 知道更多关于数据的信息,所以它也有助于更好的缓存。另一方面,ibatis 的简单性也是它的强大之处,如果我们不为两者都使用缓存,它比 hibernate 更快。
我的问题是;如果我使用带有二级缓存的hibernate和带有缓存实现的ibatis3作为其接口,哪个将是数据访问层更快的候选者?
干杯,
java - Hibernate 或 iBatis 或其他什么?
在我的项目中,我需要在运行时在数据库之间切换。我尝试使用 Hibernate,但卡在了一个地方,我需要将对象与数据库中的表进行映射。问题是,我有几个带有前缀的表:documents2001,documents2002 ...据我所知,我无法在运行时将类与表映射。我尝试使用 iBatis,但问题在于运行时更改数据库。在 iBatis 中,这很难做到。\
也许一些建议,我应该使用什么?
我的要求:
- 能够在运行时连接到不同的数据库
- 能够在运行时更改表(如果类映射到表,就像在 Hibernate 中一样)。
更新:
好的,我会尝试解释:
我必须编写应用程序,它可以在运行时连接到不同的数据库。应用程序的用户可以选择要连接的数据库。所有数据库都具有相同的结构。除此之外,用户可以在数据库中的表之间切换。表具有相同的结构。
- 为什么我假设,我不能使用 Hibernate:在 Hibernate 中,类与表映射,所以我不能在运行时更改表。这不允许我选择可以连接的表。
- 为什么我假设,我不能使用 iBATIS。在 iBATIS 中,在运行时很难连接到不同的数据库。因此,用户将无法在运行时连接到不同的数据库。
也许我可以使用另一种工具?
java - 使用 ibatis 检索新插入行的 Id 时的并发问题
我正在使用 iBatis/Java 和 Postgres 8.3。当我在 ibatis 中插入时,我需要返回 id。
我使用下表来描述我的问题:通过运行 create 语句自动生成
CREATE TABLE sometable ( id serial NOT NULL, somefield VARCHAR(10) );
序列。sometable_id_seq
目前我使用以下 sql 映射:
看来这是检索新插入的id的ibatis方式。Ibatis 首先运行一个 INSERT 语句,然后它向序列询问最后一个 id。
我怀疑这是否适用于许多并发插入。
这会导致问题吗?就像返回错误插入的 id 一样?
(另请参阅我有关如何让 ibatis 使用 INSERT .. RETUING .. 语句的相关问题)
java - 如何使用 Ibatis(使用 RETURNING 关键字)返回插入的 id
我正在使用 iBatis/Java 和 Postgres 8.3。当我在 ibatis 中插入时,我需要返回 id。
我使用下表来描述我的问题:通过运行 create 语句自动生成
CREATE TABLE sometable ( id serial NOT NULL, somefield VARCHAR(10) );
序列。sometable_id_seq
目前我使用以下 sql 映射:
看来这是检索新插入的id的ibatis方式。Ibatis 首先运行一个 INSERT 语句,然后它向序列询问最后一个 id。
我怀疑这是否适用于许多并发插入。(在这个问题中讨论)
我想在 ibatis 中使用以下语句:
INSERT INTO sometable ( somefield ) VALUES ( #value# ) RETURNING id;
但是当我尝试在<insert>
sqlMap 中使用它时,ibatis 不会返回 id。它似乎需要<selectKey>
标签。
那么问题来了:
我如何将上述语句与 ibatis 一起使用?
orm - 维护/自动生成 IBatis SQL 映射?
我刚刚开始了一份新工作,并从地狱继承了这个项目。地狱 = {超过计划 2 年,过于复杂,同时使用 oracle 和 sql server}
Oracle 服务器中有 100 多个存储过程,每个存储过程都有一个 IBatis SQL Map。有些共享相同的结果图。DBA 喜欢每天更改存储过程而不告诉我。
问题:是否有任何工具可以检查解决方案中的所有 IBatis SQL 映射。理想情况下,它将验证:
- 存储过程存在
- 存储过程参数与参数映射中的参数匹配
- 存储过程结果 [列名] 与结果映射中的匹配
- 存储过程结果没有丢失结果映射中指定的任何内容
- 结果映射中的对象属性标题与结果映射中列出的匹配
背景:我通常只使用 SQL Server 和 SubSonic 2.2 作为 ORM。这样我只需执行一个命令,我的 DAL 就会神奇地自动生成,这样,如果我需要的列丢失,我会得到一个易于理解的编译时错误,而不是令人困惑的运行时错误。我可以在这里使用类似的工具吗?
感谢您的帮助!
ibatis - 如何在 iBatis 中映射存储的包函数?
我目前正在使用
缺什么 ?
java - Ibatis:有没有办法在 sqlmap xml 的 Ibatis 结果映射子选择中添加行处理程序?
我有两个 ibatis sql 映射,它们通过子选择链接在一起,如下面的简化示例:
我有一个订单对象,其中包含由连接和关联返回的线对象集合。我希望在返回订单行的嵌套关联返回的每一行上执行一些行处理程序功能。
我知道这可以通过在调用 spring sqlmapclienttemplate以仅查询 OrderLine 对象列表时将IListRowHandler传递给queryWithRowHandler调用来实现,但这不允许我在调用时在子选择集合上使用行处理程序仅在父 sql 映射上,本例中为 order。
有什么方法可以声明性地将 rowhandler 类分配给特定的 resultmap 或 ibatis sql 映射中的 select 语句?因为这是我觉得应该存在的那种功能。或者,我对修改子选择返回的行对象的每个实例的建议持开放态度,因为它们被返回,而不是询问完全构建的订单对象并在事后操纵它们。
java - 对于 5000 条记录的表,类似 MySQL 的查询运行速度极慢
我在我们的生产服务器上有这个问题。应用程序堆栈是,
- Tomcat 6.0.18 上的 Java Web 应用程序
- iBatis 数据访问层
- MySQL 5.0 数据库
- 中央操作系统
该系统部署在具有大约 256 MB 内存的虚拟服务器上。
真正的问题:
像这样的查询,
在大约 10 秒内执行,但是如果执行以下查询,
执行上述查询后,系统立即进入无限期处理并最终强制 Tomcat 重新启动!。
表统计: - 记录数:5000 - 主键:代码
相同的查询 PHP MyAdmin 在大约 4 秒内执行。
你认为这可能是 MySQL 的问题吗?任何调试这个的想法。我现在正在启用详细日志,并将根据我的发现不断更新这个问题,但希望您能获得您的数据库见解。
java - 带有点(。)字符的ibatis java.util.Map参数
我有一个属性名为“xx.xx”的参数映射,但 Ibatis 无法知道名为“xx.xx”的属性(“xxxx”可以)。
如何使用名称包含点(。)字符的 Map 属性?或者我必须删除点(。)。
非常感谢
唐晃
java - 将字符串传递给 VARCHAR 字段时不支持 SQL 类型 1111
一段时间以来,我一直在为此努力。
我正在使用 iBatis 和我的 JAVA 代码来运行位于 Sybase DB 中的存储过程。
存储过程需要一些参数。其中很少有人被宣布为VARCHAR (6)
所以在我的 iBatis 映射中,我对这些参数做了以下操作。
但是,当我这样做时,会出现以下错误。
所以我将映射更改为:
它消除了上面的错误,但是,现在参数searchUserId
正在获取null
传递给 SP 的值。我确定从我的 java 代码中我没有通过null
。
有人遇到过这个问题吗?我应该将映射更改为什么?