标签: ibatis

Hibernate和iBATIS

对于我们的新产品重新设计,我们正在从Java中选择最佳框架.考虑到模型的数据库不可知方法,我们正在研究Struts + Spring与iBATIS或Hibernate之间的选择.请提供最好的建议,因为两者都提供持久性.

java persistence frameworks hibernate ibatis

73
推荐指数
6
解决办法
8万
查看次数

Hibernate,iBatis,Java EE或其他Java ORM工具

我们正在规划一个大型企业应用程序.在经历了J2EE的痛苦之后,我们将重点放在评估hibernate上.

看起来新的Java EE API更简单.我还读了一些关于Hibernate和iBatis的好东西.我们的团队对任何框架都缺乏经验.

我想确定5个主要的比较点

  • 学习曲线/易用性
  • 生产率
  • 可维护性/稳定性
  • 性能/可扩展性
  • 易于故障排除

如果您要管理一个由具有J2EE经验的约6位开发人员组成的团队,您将使用哪种ORM工具?为什么?

java orm hibernate ibatis java-ee

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

ibatis和mybatis之间的区别

iBatis和myBatis有什么区别?我在哪里可以找到一个完美的例子?请建议.我通过谷歌找不到这个问题的链接.

ibatis mybatis

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

如何使用带有iBatis(myBatis)的注释进行IN查询?

我们只想使用MyBatis的注释; 我们真的想避免使用xml.我们正在尝试使用"IN"子句:

@Select("SELECT * FROM blog WHERE id IN (#{ids})") 
List<Blog> selectBlogs(int[] ids); 
Run Code Online (Sandbox Code Playgroud)

MyBatis似乎无法选择整数数组并将其放入生成的查询中.它似乎"软弱地失败",我们没有得到任何结果.

看起来我们可以使用XML映射来实现这一点,但我们真的想避免这种情况.是否有正确的注释语法?

java annotations ibatis mybatis

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

在mybatis中返回HashMap并将其用作spring MVC中的ModelAttribute

我想使用spring mvc @modelAttribute在我的Jsp页面中显示类别列表.

在我的mapper.xml文件中

<select id="selectAllCategories" resultMap="BaseResultMap">
  select id, name from categories  
</select>
Run Code Online (Sandbox Code Playgroud)

在我的Mapper.java类中,我有方法

List<Map<String, String>> selectAllCategories();
Run Code Online (Sandbox Code Playgroud)

我想要一个像这样的方法:

Map<Integer, String>`selectAllCategories();
Run Code Online (Sandbox Code Playgroud)

而不是List<Map<>>,这可能吗?

java ibatis spring-mvc mybatis

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

存储过程输出参数由iBATIS设置回POJO

我正在使用iBATIS在MSSQL Server上调用存储过程,输入参数是放在地图上的POJO上的属性:

Map<String, Object> saveMap = new HashMap<String, Object>();
saveMap.put("obj", myArticle);
update("save", saveMap);
Run Code Online (Sandbox Code Playgroud)

所有参数都正确设置为过程的输入,因此没有任何错误.但其中一个参数是输出参数,我期望它被设置回POJO,而是"obj.new"=false由iBATIS将一个额外的映射放到地图上.这是映射的简化版本,显示了基本思想:

    <procedure id="save">
    {<include refid="Core.returned_value" />
    CALL SPRC_ARTICLE_NAME_SAVE (
        <include refid = "Core.common_fields" />
        @pArticle_id = #obj.art_id#
    ,   @pArtname = #obj.artname#
    ,   @pNewArticleName_flg = #obj.new,mode=INOUT#
    )}
</procedure>
Run Code Online (Sandbox Code Playgroud)

调用该过程后,我在Map中传递给iBATIS的两个映射:

  • "obj"=POJO
  • "obj.new"=False

现在我看到iBatis文档"当执行存储过程时 - iBATIS将为OUTPUT参数创建对象",所以它是有道理的.但我的问题是,有没有办法指示iBATIS在调用过程后将布尔值放回到POJO?我宁愿不做额外的工作,从地图中获取价值并将其设置为我自己的POJO.

//Uhlén

java orm ibatis

20
推荐指数
1
解决办法
4070
查看次数

MyBatis/iBatis - 在单独的SQL Map文件中可重用的sql片段?

我想将我的几个SQL Map XML文件使用的sql片段放在一个单独的文件中.目前,<sql>具有这些片段的元素与其他元素一起位于其中一个元素中<select>,这使得它们很难找到.
我是否可以使用仅定义几个<sql>元素的映射器,而不是用于生成接口的实现?这个映射器的正确名称空间是什么?

这是包含framents的SQL Map文件:

<mapper namespace="com.company.project.dao.someDao">

    <sql id="whereDate">
        WHERE date(`time`) BETWEEN #{startDate} AND #{endDate}
    </sql>  

    <sql id="someOtherSqlFragment">
        ...
    </sql>

    <select id="getSomeData"
            resultType="SomeClass"
            parameterType="DateParam" >
        SELECT some_column, another_column
    </select>

        FROM some_table

        <include refid="whereDate"/>

        <include refid="otherSqlFragment"/>

    </select>

</mapper>
Run Code Online (Sandbox Code Playgroud)

我想分开这样的元素:
第一个Sql Map文件:

<mapper namespace="com.company.project.dao.???">

    <sql id="whereDate">
        WHERE date(`time`) BETWEEN #{startDate} AND #{endDate}
    </sql>  

    <sql id="someOtherSqlFragment">
        ...
    </sql>

</mapper>
Run Code Online (Sandbox Code Playgroud)

第二个Sql Map文件:

<mapper namespace="com.company.project.dao.someDao">

    <select id="getSomeData"
            resultType="SomeClass"
            parameterType="DateParam" >
        SELECT some_column, another_column
    </select>

        FROM some_table

        <include refid="whereDate"/> …
Run Code Online (Sandbox Code Playgroud)

java ibatis mybatis

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

如何在iBatis中实现大于或等于的SQL语句?

让我们说在我的sql语句中我想做:

WHERE numberOfCookies >= 10 
Run Code Online (Sandbox Code Playgroud)

我如何在iBatis中执行此操作?

sql ibatis

19
推荐指数
2
解决办法
4万
查看次数

iBatis执行sql

有什么方法可以获得iBatis的执行查询吗?我想重用UNION查询的查询.

例如:

<sqlMap namespace="userSQLMap">
   <select id="getUser" resultClass="UserPackage.User">
        SELECT username,
               password 
        FROM table 
        WHERE id=#value#
   </select>
</sqlMap>
Run Code Online (Sandbox Code Playgroud)

当我执行查询时

int id = 1
List<User> userList = queryDAO.executeForObjectList("userSQLMap.getUser",id)
Run Code Online (Sandbox Code Playgroud)

我想得到 SELECT username, password FROM table WHERE id=1

有什么方法可以得到查询吗?

谢谢.

java sql ibatis

19
推荐指数
4
解决办法
4万
查看次数

何时使用$ vs#?

我对使用感到困惑$ vs #.我没有找到任何指南.我把他们当作
name = #{name},name like '%${word}%',order by name ${orderAs},where name = #{word}
有时,这些都是做工精细,但在有些时候,参数不包括或给我的错误,如

org.apache.ibatis.reflection.ReflectionException:名为'name'的属性没有getter .......

那么,我想知道何时使用$#

ibatis mybatis

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