ibatis-user-java mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Nathan Maves <nathan.ma...@gmail.com>
Subject Re: Adding Tables To From Clause and Corresponding Entries To Where Clause
Date Wed, 28 Jan 2009 05:39:16 GMT
Try reading the developer's guide pdf.  It will put you on the right track
when you get to the dynamic sql section.
Nathan

On Mon, Jan 26, 2009 at 5:26 PM, John Bz <john1234@inbox.com> wrote:

>  Hi,
>
>  I'm new to iBatis and am trying to figure out the best way to dynamically
>  build a query that requires you to add both entries to the from clause
>  and the where clause.  Below is an example of the sort of thing I'm
>  trying to accomplish.
>
>  Any help would be appreciated.
>
>  Thanks, John
>
>  import java.util.*;
>  public class ItemFinder {
>   private List<ItemAttribute> attributeList;
>   public ItemFinder() {
>     this.attributeList = new ArrayList<ItemAttribute>();
>   }
>   public void addItemAttribute(ItemAttribute itemAttribute) {
>     this.attributeList.add(itemAttribute);
>   }
>   public List<Item> getItemList() {
>     List<Item> itemList = new ArrayList<Item>();
>     StringBuffer queryBuf = new StringBuffer();
>     StringBuffer fromBuf = new StringBuffer();
>     StringBuffer whereBuf = new StringBuffer();
>     queryBuf.append("select it.*");
>     fromBuf.append(" from item it ");
>     whereBuf.append(" where ");
>     Iterator<ItemAttribute> it = attributeList.iterator();
>     int idx = 0;
>     while (it.hasNext()) {
>       ItemAttribute itemAttr = it.next();
>       if (idx > 0) {
>         fromBuf.append(", ");
>         whereBuf.append(" and ");
>       }
>       fromBuf.append(itemAttr.getFrom(idx));
>       whereBuf.append(itemAttr.getWhere(idx));
>       idx++;
>     }
>     queryBuf.append(fromBuf.toString() + whereBuf.toString());
>     //Get Connection
>     //Execute query & build list from result of query
>     return itemList;
>   }
>  }
>
>  import java.util.*;
>  public class ItemAttribute {
>   private String attributeName;
>   private float attributeValue;
>   public ItemAttribute(String name, float val) {
>     this.attributeName = name;
>     this.attributeValue = val;
>   }
>   public String getFrom(int idx) {
>     return "attribute attr" + idx + ", item_attribute itemAttr" + idx;
>   }
>   public String getWhere(int idx) {
>     return "attr" + idx + ".attribute_name = '" + this.attributeName + "'"
> +
>            "attr" + idx + ".attribute_id = itemAttr" + idx + ".attribute_id
> " +
>            " and itemAttr" + idx + ".item_id = it.item_id and itemAttr" +
>            idx + ".attribute_value = " + this.attributeValue;
>   }
>  }
>
> ____________________________________________________________
> FREE 3D EARTH SCREENSAVER - Watch the Earth right on your desktop!
> Check it out at http://www.inbox.com/earth
>

Mime
View raw message