利用DynaBean,根据不同业务动态组装parameterClass,传递给iBATIS使用。
请问该怎么做<insert id="insertSYS_LOGIN_RECORD"
parameterClass="record">
<![CDATA[
insert into SYS_LOGIN_RECORD(SESSION_ID
,ACCOUNT_CODE
,OPERATOR_NAME
,IP_ADDRESS
,ONLINE_FLAG
,LOGIN_DATE
,REMARK
)
values(#SESSION_ID:VARCHAR#
,#ACCOUNT_CODE:VARCHAR#
,#OPERATOR_NAME:VARCHAR#
,#IP_ADDRESS:VARCHAR#
,#ONLINE_FLAG:VARCHAR#
,#LOGIN_DATE:DATE#
,#REMARK:VARCHAR#
)
]]>
</insert>
public class Record
    extends org.apache.commons.beanutils.BasicDynaBean {  public Record(DynaClass dynaClass) {
    super(dynaClass);
  }  //数据修改标志
  protected int modiFlag = ResTable.NO_MODIFIED;  /**
   * 根据属性所在位置索引,得到简单属性值
   * @param index 属性所在位置索引
   * @return 属性值
   */
  public Object get(int index) {
    return get(getDynaClass().getDynaProperties()[index].getName());
  }  /**
   * 根据属性所在位置索引,设置属性值
   * @param index 属性所在位置索引
   * @param value 要设置的属性值
   */
  public void set(int index, Object value) {
    set(getDynaClass().getDynaProperties()[index].getName(), value);
  }
  /**
   * 得到记录的修改标志
   * @return 修改标志,见ResTable:NO_MODIFIED,UPDATE,INSERT,DELETE
   */
  public int getModiFlag() {
    return modiFlag;
  }
  /**
   * 设置记录的修改标志
   * @param modiFlag 修改标志,见ResTable:NO_MODIFIED,UPDATE,INSERT,DELETE
   */
  public void setModiFlag(int modiFlag) {
    this.modiFlag = modiFlag;
  }
/****************************得到属性值相关函数*******************/
  /**
   * 得到字符串属性值
   * @param name 属性名
   * @return 属性的字符串值,如果属性值为空,返回空
   * @throws CommonException 如果指定的属性名的类型不能转换为字符串或转换过程出错
   */
  public String getString(String name) throws CommonException {
    String value = null;
    try {
      Class type = getDynaClass().getDynaProperty(name).getType();
      Object tempObject = get(name);
      //如果数据为空,返回空
      if (tempObject == null) {
        return value;
      }
      if (type.equals(ResTable.STRING_CLASS)) {
        value = (String) tempObject;
      }
      else if (type.equals(ResTable.BIGDECIMAL_CLASS)) {
        value = ( (BigDecimal) tempObject).toString();
      }
      else if (type.equals(ResTable.INTEGER_CLASS)) {
        value = ( (Integer) tempObject).toString();
      }
      else if (type.equals(ResTable.TIMESTAMP_CLASS)) {
        value = ( (Timestamp) tempObject).toString();
      }
      else {
        throw new CommonException("指定的属性'" + name + "'值不能转换为字符串!");
      }
    }
    catch (Exception e) {
      throw new CommonException(e.toString());
    }
    return value;
  }}下面是调用 
ArrayList columnList = new ArrayList(); Column checkedColumn = new Column("checked", String.class,
"checked", "", "", "选中标志", new ColumnExtendProperty(),
false, false, 0);
Column sessionIDColumn = new Column("SESSION_ID", String.class, "SESSION_ID",
"", "", "SESSION_ID", new ColumnExtendProperty(), false, false, 0);
Column accountCodeColumn = new Column("ACCOUNT_CODE", String.class, "ACCOUNT_CODE",
"", "", "ACCOUNT_CODE", new ColumnExtendProperty(), false, false, 0);
Column operatorNameColumn = new Column("OPERATOR_NAME", String.class, "OPERATOR_NAME",
"", "", "OPERATOR_NAME", new ColumnExtendProperty(), false, false, 0);
Column ipAddressColumn = new Column("IP_ADDRESS", String.class, "IP_ADDRESS",
"", "", "IP_ADDRESS", new ColumnExtendProperty(), false, false, 0);
Column loginDateColumn = new Column("LOGIN_DATE", Date.class,
"oriIndex", "", "", "原始记录位置", new ColumnExtendProperty(),
false, false, 0);
Column onlineFlagColumn = new Column("ONLINE_FLAG", String.class, "ONLINE_FLAG",
"", "", "ONLINE_FLAG", new ColumnExtendProperty(), false, false, 0);
Column reMarkColumn = new Column("REMARK", String.class, "REMARK",
"", "", "REMARK", new ColumnExtendProperty(), false, false, 0);
columnList.add(checkedColumn);
columnList.add(sessionIDColumn);
columnList.add(accountCodeColumn);
columnList.add(operatorNameColumn);
columnList.add(ipAddressColumn);
columnList.add(loginDateColumn);
columnList.add(onlineFlagColumn);
columnList.add(reMarkColumn); Column[] columnArray = (Column[]) columnList
.toArray(new Column[columnList.size()]); Record record = new Record(new BasicDynaClass("result", null,
columnArray));
record.set("SESSION_ID", sessionId);
record.set("ACCOUNT_CODE", userView.getACCOUNT_CODE());
record.set("OPERATOR_NAME", userView.getOPERATOR_NAME());
record.set("IP_ADDRESS", userView.getIP_ADDRESS());
record.set("LOGIN_DATE", userView.getTimeCreated());
record.set("ONLINE_FLAG", "Y");
record.set("REMARK", "Server IP = " + java.net.InetAddress.getLocalHost().getHostAddress()); iBoSysLoginRecord.insertSYS_LOGIN_RECORD(record);
执行说没有 SESSION_ID