论坛首页 Java企业应用论坛

关于iBatis分模块的配置,以及一点其他的疑问,基于JPetStore讨论

浏览 6092 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2006-11-30  
简单起见,拿JPetStore5.0来举例吧.

在配置文件sql-map-config.xml中,他是这么写的
<sqlMap resource="com/ibatis/jpetstore/persistence/sqlmapdao/sql/Account.xml"/>
  <sqlMap resource="com/ibatis/jpetstore/persistence/sqlmapdao/sql/Category.xml"/>
  <sqlMap resource="com/ibatis/jpetstore/persistence/sqlmapdao/sql/Product.xml"/>
  <sqlMap resource="com/ibatis/jpetstore/persistence/sqlmapdao/sql/Sequence.xml"/>
  <sqlMap resource="com/ibatis/jpetstore/persistence/sqlmapdao/sql/LineItem.xml"/>
  <sqlMap resource="com/ibatis/jpetstore/persistence/sqlmapdao/sql/Order.xml"/>
  <sqlMap resource="com/ibatis/jpetstore/persistence/sqlmapdao/sql/Item.xml"/>


其他是transactionManager的配置就不管了.

这里的Account.xml是不是就是分模块的配置文件?我猜想应该是的吧

再问问Account.xml里面的一些东西
<select id="getAccountByUsername" resultClass="account" parameterClass="string">
    SELECT
          SIGNON.USERNAME,
          ACCOUNT.EMAIL,
          ACCOUNT.FIRSTNAME,
          ACCOUNT.LASTNAME,
          ACCOUNT.STATUS,
          ACCOUNT.ADDR1 AS address1,
          ACCOUNT.ADDR2 AS address2,
          ACCOUNT.CITY,
          ACCOUNT.STATE,
          ACCOUNT.ZIP,
          ACCOUNT.COUNTRY,
          ACCOUNT.PHONE,
          PROFILE.LANGPREF AS languagePreference,
          PROFILE.FAVCATEGORY AS favouriteCategoryId,
          PROFILE.MYLISTOPT AS listOption,
          PROFILE.BANNEROPT AS bannerOption,
          BANNERDATA.BANNERNAME
    FROM ACCOUNT, PROFILE, SIGNON, BANNERDATA
    WHERE ACCOUNT.USERID = #username#
      AND SIGNON.USERNAME = ACCOUNT.USERID
      AND PROFILE.USERID = ACCOUNT.USERID
      AND PROFILE.FAVCATEGORY = BANNERDATA.FAVCATEGORY
  </select>


我知道iBatis并没有hibernate那样,显示的对应column和field的对应关系.
就拿上面的select语句来说, iBatis怎么知道, SIGNON.USERNAME 这个东西对应哪个字段呢?
   发表时间:2006-11-30  
#username#
有参数为username时就把username放入...
你引用时少了前面的头....
头是类与名字的对应表....可以一起贴出来看


  <resultMap id="incaseinfoResult" class="incaseinfomodel">
		<result property="incaseinfo_id"             column="incaseinfo_id"             />
		<result property="incaseinfo_incase_id"      column="incaseinfo_incase_id"      />
		<result property="incaseinfo_product_id"     column="incaseinfo_product_id"     />
		<result property="incaseinfo_product_name"   column="incaseinfo_product_name"   />
		<result property="incaseinfo_quantity"       column="incaseinfo_quantity"       />
		<result property="incaseinfo_rebate"         column="incaseinfo_rebate"         />
		<result property="incaseinfo_price"          column="incaseinfo_price"          />
		<result property="incaseinfo_flage"          column="incaseinfo_flage"          />
		<result property="incaseinfo_remark"         column="incaseinfo_remark"         />
  </resultMap>
0 请登录后投票
   发表时间:2006-12-01  
先谢谢你的回答。

我贴的是从iBatis的JPetStore copy过来的。#username#这个我是知道的,我以前用过公司的一个框架,和这个差不多,据说就是抄袭的iBatis,不过很多地方也不一样的。

我比较好奇的是分模块的配置,和dao.xml里面DAO interface的声明,dao.xml有模块化配置么?不会所有的dao interface都写在这里里面吧?

还有就是 column 和 field的映射了是如何做到的?谢谢

附上dao.xml的内容:
<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE daoConfig
    PUBLIC "-//ibatis.apache.org//DTD DAO Configuration 2.0//EN"
    "http://ibatis.apache.org/dtd/dao-2.dtd">

<daoConfig>

  <context>

    <transactionManager type="SQLMAP">
      <property name="SqlMapConfigResource"
        value="com/ibatis/jpetstore/persistence/sqlmapdao/sql/sql-map-config.xml"/>
    </transactionManager>

    <dao interface="com.ibatis.jpetstore.persistence.iface.ItemDao"
      implementation="com.ibatis.jpetstore.persistence.sqlmapdao.ItemSqlMapDao"/>

    <dao interface="com.ibatis.jpetstore.persistence.iface.SequenceDao"
      implementation="com.ibatis.jpetstore.persistence.sqlmapdao.SequenceSqlMapDao"/>

    <dao interface="com.ibatis.jpetstore.persistence.iface.AccountDao"
      implementation="com.ibatis.jpetstore.persistence.sqlmapdao.AccountSqlMapDao"/>

    <dao interface="com.ibatis.jpetstore.persistence.iface.CategoryDao"
      implementation="com.ibatis.jpetstore.persistence.sqlmapdao.CategorySqlMapDao"/>

    <dao interface="com.ibatis.jpetstore.persistence.iface.ProductDao"
      implementation="com.ibatis.jpetstore.persistence.sqlmapdao.ProductSqlMapDao"/>

    <dao interface="com.ibatis.jpetstore.persistence.iface.OrderDao"
      implementation="com.ibatis.jpetstore.persistence.sqlmapdao.OrderSqlMapDao"/>

  </context>

</daoConfig>
0 请登录后投票
   发表时间:2006-12-03  
iBatis出色的是Data Mapper框架,其DAO包不算好用,出了Spring之后就更显鸡肋了,未来可能会被列入deprecated
0 请登录后投票
   发表时间:2006-12-03  
daocontext可以指定多个id,可以存在多个daocontext.
0 请登录后投票
   发表时间:2006-12-04  
flyspider 写道
iBatis出色的是Data Mapper框架,其DAO包不算好用,出了Spring之后就更显鸡肋了,未来可能会被列入deprecated

同意这种说法,iBatis强在sql mapping,至于dao的管理还是交给spring去做吧
0 请登录后投票
   发表时间:2006-12-04  
Ivan Li 写道
flyspider 写道
iBatis出色的是Data Mapper框架,其DAO包不算好用,出了Spring之后就更显鸡肋了,未来可能会被列入deprecated

同意这种说法,iBatis强在sql mapping,至于dao的管理还是交给spring去做吧
2.30已经被deprecated掉了,还有那个分页的
0 请登录后投票
   发表时间:2006-12-06  
SIGNON.USERNAME是和你定义的简单javabean中的属性对应的,或者象上面兄台写的那样用map显示给出。
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics