我用ABATOR生成的代码如下:
KOMEN_TEST_SqlMap.xml<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-2.dtd">
<sqlMap namespace="KOMEN_TEST">
  <resultMap class="com.test.domain.Test" id="abatorgenerated_TestResult">
    <result column="ID" jdbcType="DECIMAL" property="id" />
    <result column="USERNAME" jdbcType="VARCHAR" property="username" />
    <result column="USERPASSWORD" jdbcType="VARCHAR" property="userpassword" />
    <result column="USERAGE" jdbcType="DECIMAL" property="userage" />
  </resultMap>
  <sql id="abatorgenerated_Example_Where_Clause">
    
    <iterate conjunction="or" prepend="where" property="oredCriteria" removeFirstPrepend="iterate">
      <isEqual compareValue="true" property="oredCriteria[].valid">
        (
        <iterate conjunction="and" prepend="and" property="oredCriteria[].criteriaWithoutValue">
          $oredCriteria[].criteriaWithoutValue[]$
        </iterate>
        <iterate conjunction="and" prepend="and" property="oredCriteria[].criteriaWithSingleValue">
          $oredCriteria[].criteriaWithSingleValue[].condition$
            #oredCriteria[].criteriaWithSingleValue[].value#
        </iterate>
        <iterate conjunction="and" prepend="and" property="oredCriteria[].criteriaWithListValue">
          $oredCriteria[].criteriaWithListValue[].condition$
          <iterate close=")" conjunction="," open="(" property="oredCriteria[].criteriaWithListValue[].values">
            #oredCriteria[].criteriaWithListValue[].values[]#
          </iterate>
        </iterate>
        <iterate conjunction="and" prepend="and" property="oredCriteria[].criteriaWithBetweenValue">
          $oredCriteria[].criteriaWithBetweenValue[].condition$
          #oredCriteria[].criteriaWithBetweenValue[].values[0]# and
          #oredCriteria[].criteriaWithBetweenValue[].values[1]#
        </iterate>
        )
      </isEqual>
    </iterate>
  </sql>
  <select id="abatorgenerated_selectByExample" parameterClass="com.test.domain.TestExample" resultMap="abatorgenerated_TestResult">
       select ID, USERNAME, USERPASSWORD, USERAGE from KOMEN.TEST
    <isParameterPresent>
      <include refid="KOMEN_TEST.abatorgenerated_Example_Where_Clause" />
      <isNotNull property="orderByClause">
        order by $orderByClause$
      </isNotNull>
    </isParameterPresent>
  </select>
  <delete id="abatorgenerated_deleteByExample" parameterClass="com.test.domain.TestExample">
      delete from KOMEN.TEST
    <include refid="KOMEN_TEST.abatorgenerated_Example_Where_Clause" />
  </delete>
  <insert id="abatorgenerated_insert" parameterClass="com.test.domain.Test">
        insert into KOMEN.TEST (ID, USERNAME, USERPASSWORD, USERAGE)
    values (#id:DECIMAL#, #username:VARCHAR#, #userpassword:VARCHAR#, #userage:DECIMAL#)
  </insert>
  <select id="abatorgenerated_countByExample" parameterClass="com.test.domain.TestExample" resultClass="java.lang.Integer">
       select count(*) from KOMEN.TEST
    <include refid="KOMEN_TEST.abatorgenerated_Example_Where_Clause" />
  </select>
  <update id="abatorgenerated_updateByExampleSelective">
       update KOMEN.TEST
    <dynamic prepend="set">
      <isNotNull prepend="," property="record.id">
        ID = #record.id:DECIMAL#
      </isNotNull>
      <isNotNull prepend="," property="record.username">
        USERNAME = #record.username:VARCHAR#
      </isNotNull>
      <isNotNull prepend="," property="record.userpassword">
        USERPASSWORD = #record.userpassword:VARCHAR#
      </isNotNull>
      <isNotNull prepend="," property="record.userage">
        USERAGE = #record.userage:DECIMAL#
      </isNotNull>
    </dynamic>
    <isParameterPresent>
      <include refid="KOMEN_TEST.abatorgenerated_Example_Where_Clause" />
    </isParameterPresent>
  </update>
  <update id="abatorgenerated_updateByExample">
       update KOMEN.TEST
    set ID = #record.id:DECIMAL#,
      USERNAME = #record.username:VARCHAR#,
      USERPASSWORD = #record.userpassword:VARCHAR#,
      USERAGE = #record.userage:DECIMAL#
    <isParameterPresent>
      <include refid="KOMEN_TEST.abatorgenerated_Example_Where_Clause" />
    </isParameterPresent>
  </update>
</sqlMap>TestDAO.javapackage com.test.dao;import com.test.domain.Test;
import com.test.domain.TestExample;
import java.util.List;public interface TestDAO {
       void insert(Test record);
        List selectByExample(TestExample example);
        int deleteByExample(TestExample example);
        int countByExample(TestExample example);
        int updateByExampleSelective(Test record, TestExample example);
        int updateByExample(Test record, TestExample example);
}
TestDAOImpl.javapackage com.test.dao;import com.ibatis.dao.client.DaoManager;
import com.ibatis.dao.client.template.SqlMapDaoTemplate;
import com.test.domain.Test;
import com.test.domain.TestExample;
import java.util.List;public class TestDAOImpl extends SqlMapDaoTemplate implements TestDAO {
        public TestDAOImpl(DaoManager daoManager) {
        super(daoManager);
    }        public void insert(Test record) {
        insert("KOMEN_TEST.abatorgenerated_insert", record);
    }         public List selectByExample(TestExample example) {
        List list = queryForList("KOMEN_TEST.abatorgenerated_selectByExample", example);
        return list;
    }        public int deleteByExample(TestExample example) {
        int rows = delete("KOMEN_TEST.abatorgenerated_deleteByExample", example);
        return rows;
    }       public int countByExample(TestExample example) {
        Integer count = (Integer)  queryForObject("KOMEN_TEST.abatorgenerated_countByExample", example);
        return count.intValue();
    }      public int updateByExampleSelective(Test record, TestExample example) {
        UpdateByExampleParms parms = new UpdateByExampleParms(record, example);
        int rows = update("KOMEN_TEST.abatorgenerated_updateByExampleSelective", parms);
        return rows;
    }
      public int updateByExample(Test record, TestExample example) {
        UpdateByExampleParms parms = new UpdateByExampleParms(record, example);
        int rows = update("KOMEN_TEST.abatorgenerated_updateByExample", parms);
        return rows;
    }       private static class UpdateByExampleParms extends TestExample {
        private Object record;        public UpdateByExampleParms(Object record, TestExample example) {
            super(example);
            this.record = record;
        }        public Object getRecord() {
            return record;
        }
    }
}
Test.javapackage com.test.domain;public class Test {
 
   private Long id;
 private String username;
 private String userpassword;
 private Long userage;
public Long getId() {
return id;
} public void setId(Long id) {
this.id = id;
} ......
public Long getUserage() {
return userage;
} public void setUserage(Long userage) {
this.userage = userage;
}
}如果 我要在Register.jsp的RegisterAction.java的 public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
RegisterForm registerForm = (RegisterForm) form;// TODO Auto-generated method stub
//实例化一个TEST对象
Test test=new Test();
test.setUsername(registerForm.getUsername());
test.setUserpassword(registerForm.getPassword());
test.setUserage(Long.valueOf(registerForm.getAge()));


String resource = "com/test/conf/sqlMapConfig.xml";    
 
                //请问如果要把Test实例的数据写入数据库,这里的代码应该怎么写?谢谢了!     

return null;
}

解决方案 »

  1.   

    先写一个类,把获得连接这段代码放入里边,
    public class MyAppSqlConfig {
    private static final SqlMapClient sqlMap;
    static {
    try {
    String resource = "com/test/conf/sqlMapConfig.xml";
    Reader reader = Resources.getResourceAsReader(resource);
    sqlMap = SqlMapClientBuilder.buildSqlMapClient(reader);
    } catch (Exception e) {
    e.printStackTrace();
    throw new RuntimeException(
    "Error initializing MyAppSqlConfig class. Cause: " + e);
    }
    } public static SqlMapClient getSqlMapInstance() {
    return sqlMap;
    }
    }
    以下是你的代码
    public ActionForward execute(ActionMapping mapping, ActionForm form, 
    HttpServletRequest request, HttpServletResponse response) { 
      RegisterForm registerForm = (RegisterForm) form;// TODO Auto-generated method stub 
      //实例化一个TEST对象 
      Test test=new Test(); 
      test.setUsername(registerForm.getUsername()); 
      test.setUserpassword(registerForm.getPassword()); 
      test.setUserage(Long.valueOf(registerForm.getAge())); 
      String resource = "com/test/conf/sqlMapConfig.xml";    
      //请问如果要把Test实例的数据写入数据库,这里的代码应该怎么写?谢谢了!
      //得到连接
      SqlMapClient sqlMap = MyAppSqlConfig.getSqlMapInstance();
      int result = sqlMap.update("abatorgenerated_insert", test);
      if(result > 0)
      {
       System.out.println("插入成功");
      }else
      {
       System.out.println("插入失败");
      }
      //我看你生成的代码里有TestDAOImpl类,里边有insert方法,我不知道你那别的代码,所以,这部分我也不能调用
      //你最好是能直接调用这个方法
      return null; 
    }
      

  2.   

    提示int result = sqlMap.update("abatorgenerated_insert", test);有错误啊
    如果用SqlMapClient sqlMap = MyAppSqlConfig.getSqlMapInstance();

    try{  
    sqlMap.insert("abatorgenerated_insert", tuser);
    }catch(Exception e)
    {

    }
      /**if(result > 0)
      {
          System.out.println("插入成功");
      }else
      {
          System.out.println("插入失败");
      }
    **/
    return null;
    就没有任何输入和提示
      

  3.   


                    SqlMapClient sqlMap = MyAppSqlConfig.getSqlMapInstance();

    try{  
    sqlMap.insert("abatorgenerated_insert", tuser);
    }catch(Exception e)
    {
     e.printStackTrace();
                throw new RuntimeException(
                        "Error initializing MyAppSqlConfig class. Cause: " + e);
    }
    用这个提示There is no statement named abatorgenerated_insert in this SqlMap.