标签: ibatis

Hibernate或iBatis还是其他什么?

在我的项目中,我需要在运行时在数据库之间切换.我试图使用Hibernate,但卡在一个地方,我需要用数据库中的表映射对象.问题是,我有几个带前缀的表:documents2001,documents2002 ......据我所知,我无法在运行时使用表映射类.我尝试使用iBatis,但问题是在运行时期间数据库更改.在iBatis中,这很难做到.

也许有些建议,我该怎么用?

我的要求:

  • 能够在运行时连接到不同的数据库
  • 能够在运行时更改表(如果类映射到表,就像它在Hibernate中一样).

更新: 好的,我将尝试解释:
我必须编写应用程序,它可以在运行时连接到不同的数据库.app的用户可以选择,连接哪个数据库.所有数据库都具有相同的结构.除此之外,用户还可以在数据库中的表之间切换.表具有相同的结构.

  • 为什么我假设,我不能使用Hibernate:在Hibernate类中映射表,所以我不能在运行时更改表.这不允许我选择我可以连接的表.
  • 为什么我假设,我不能使用iBATIS.在iBATIS中,在运行时期间很难连接到不同的数据库.因此,用户将无法在运行时连接到不同的数据库.

也许我可以使用另一种工具?

java database hibernate ibatis

3
推荐指数
1
解决办法
3307
查看次数

iBatis 3 - JNDI 配置示例

iBatis 框架在版本 2 和 3 之间进行了重大调整,甚至配置文件(现在通常称为 MapperConfig.xml)也有所不同。

话虽如此,网上有很多关于如何使用 iBatis 创建 JDBC 连接池的示例,但我找不到关于如何使用 JNDI 创建的示例。有一个更新的用户指南:http://svn.apache.org/repos/asf/ibatis/java/ibatis-3/trunk/doc/en/iBATIS-3-User-Guide.pdf确实参考了第 19 页上的 JNDI 设置,但我仍然无法让它与数据库正确通信。

非常感谢 iBatis 3 中 JDNI(容器管理连接池)的工作示例!!

jndi ibatis jdbc jakarta-ee

3
推荐指数
1
解决办法
2万
查看次数

指定IBatis查询超时

有一种方法可以使用oracle jdbc和Java指定IBatis查询超时吗?

谢谢

java ibatis jdbc oracle9i

3
推荐指数
1
解决办法
1万
查看次数

ibatis和java中如何处理多表的sql映射

我正在尝试将 Ibatis 与 GWT 一起使用,我有这个场景,我有数据库表机场、航站楼和航班。一个机场可以有不同的航站楼。一个航站楼可以有一个机场和多个航班。一个航班可以有一个航站楼。所以表结构看起来像这样。

机场 -id -name -terminal_id

航站楼 -id -name -flight_id

航班 -id -airline -terminal_id

我的选择语句看起来像这样

SELECT airport.name AS Airport,
       terminals.name AS Terminal,
       flights.airline,
FROM airport,
     terminals,
     flights
WHERE airport.terminal_id = terminals.id
  AND terminals.flight_id = flights.id;
Run Code Online (Sandbox Code Playgroud)

得到这个结果的 sql 映射是什么样的。我感到困惑的是结果集是表的组合,因此结果集不是三个表中任何一个的模型对象。

java ibatis

3
推荐指数
1
解决办法
8422
查看次数

从 SP 到复杂对象的映射结果

我正在尝试在我的工作项目中实施 MyBatis。它是一个遗留系统,它使用 vanilla JDBC 来访问数据库,仅通过存储过程。我知道要调用存储过程,MyBatis 需要一个包含存储过程输入参数的对象和另一个保存结果集的对象。不确定这是否完全正确。

为了防止在系统中创建过多的数据实体,我想重用现有的。这就是问题出现的地方。让我解释一下我面临的典型情况/场景,然后我将如何解决它。

假设我在系统中有以下数据实体:

class Account {
    private int accountID;
    private String accountName;
    private OrganizationAddress address;
    // Getters-Setters Go Here
}
class OrganizationAddress extends Address {
    // ... some attributes here
    // Getters-Setters Go Here
}
class Address {
    private String address;
    private String city;
    private String state;
    private String country;
    // Getters-Setters Go Here
}
Run Code Online (Sandbox Code Playgroud)

我正在使用注释,所以我的Mapper类有这样的东西:

@Select(value = "{call Get_AccountList(#{accountType, mode=IN, jdbcType=String})}")
@Options(statementType = StatementType.CALLABLE)
@Results(value = {
    @org.apache.ibatis.annotations.Result
        (property = "accountID", column …
Run Code Online (Sandbox Code Playgroud)

java mapping ibatis resultset mybatis

3
推荐指数
1
解决办法
4379
查看次数

来自 HashMap 的 MyBatis 参数

在映射器界面中,我有:

ArrayList<Item> select(@Param("filterId")int filterId, @Param("filterData")HashMap<String,Object> filterData);
Run Code Online (Sandbox Code Playgroud)

在映射器 xml 中,我有:

 <select id="select" parameterType="map" resultMap="RM">
        SELECT ... 
        FROM ....
        WHERE id=#{filterData["id"]}
    </select>
Run Code Online (Sandbox Code Playgroud)

没有错误,但结果不符合预期(它返回空集,但我知道存在具有此类 ID 的项目)。#{filterData["id"]} 似乎不起作用。我的错误在哪里?

java mysql ibatis mybatis

3
推荐指数
1
解决办法
2万
查看次数

如何将在mybatis映射器xml中执行的sql查询打印到控制台

假设我在我的mapper xml中执行下面的查询:

<select id="getData" parameterType="java.util.HashMap" resultType="java.util.LinkedHashMap">

select * from emp where empId=#{empId}          
    </select>
Run Code Online (Sandbox Code Playgroud)

在上面的xml中,empId是动态值,它返回HashMap的键中的值,该值作为Mybatis中上面的mapper xml中的参数传递.

当运行映射到方法getData的上述选择查询时,有没有办法将带有传递的参数的sql打印到控制台.

例如,我想在控制台中传递数据empId = 1:select*from emp其中empId = 1

java orm ibatis java-ee mybatis

3
推荐指数
1
解决办法
8472
查看次数

jdbcType=BIGDECIMAL 在 mybatis 和 ibatis 中不支持

使用jdbcType=BIGDECIMAL不支持myBatisibatis和抛出下一个错误:

Error resolving JdbcType. Cause: java.lang.IllegalArgumentException: 
No enum constant org.apache.ibatis.type.JdbcType.BIGDECIMAL
Run Code Online (Sandbox Code Playgroud)

什么是jdbcType替代品BIGDECIMAL

我正在使用mybatis-3.4.4版本

ibatis jdbc mybatis spring-mybatis

3
推荐指数
1
解决办法
5176
查看次数

MyBatis 支持多数据库

我有不同的客户使用不同的数据库供应商(postgres、oracle、mysql 等)

我想编写一次代码并能够针对不同的数据库运行。

实现这一目标的“mybatis”方式是什么?

到目前为止我发现的问题,例如:

  • postgres 在创建 sql 语句中有一个“如果不存在”的概念。oracle 不支持。
  • oracle 在 sql 语法中没有“限制”和“偏移”支持,而其他数据库则支持。
  • DDL 语句中的文本(postgres)与 clob(oracle 和其他)jdbc 类型。

我不想重复我的查询(这是我目前所做的)。可能有一种更优雅的方法来做到这一点。

我正在使用 mybatis java annotaions。

oracle postgresql ibatis mybatis

3
推荐指数
1
解决办法
3119
查看次数

PostgreSQL - 整数[]最佳实践

最近我在Web应用程序上工作,我决定在数据模型中使用integer [].有2个表,一个有文章数据,第二个有标签(标签ID和描述),决定标签ID,文章将在article.tags integer []列中标记.

正如Milen A. Radev所指出的那样:

提示:数组不是集合; 搜索特定的数组元素可能是数据库错误设计的标志.考虑为每个将成为数组元素的项使用一个单独的表.这将更容易搜索,并且可能更好地扩展到大量元素.

不仅如此,但是必须使用JDBC和iBatis来处理整数[],我应该说"有趣".

目前,我可以为我必须做的工作落实到位.为了简单起见,它可能会使用一个存储article.id和tag.id关系的单独表来重新工作.

最后,我很困惑的是整数[]最好用于什么语境?

我想我已经找到了最好的方法.

java sql postgresql ibatis jdbc

2
推荐指数
2
解决办法
779
查看次数