就是  我String str ="select * from tab1"
我想把str传入的ibatis中执行,是传递整条sql语句...

解决方案 »

  1.   

    iBatis中的SQL语句是在XML配置文件中的。
    1. iBatis启动时,会读取配置文件
    2. iBatis执行查询时,会根据你选择的 sql identifier 找到XML中对应的SQL语句
    3. 相当于String sql = iBatisConfiguration.getSql("sql identifier");
    4. 然后执行普通的sql 查询语句,如  Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery(sql)
    5. 然后用得到的结果集,根据xml的配置的类信息,通过反射生成对应的类对象
    6. iBatis把生成的类对象返回给你
      

  2.   

    <?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="sql">
        <!-- selectBySql -->
        <select id="selectBySql" resultClass="java.util.HashMap"
                remapResults="true" parameterClass="java.lang.String">
        <![CDATA[ $sql$ ]]>
        </select>
        <!-- updateBySql -->
        <update id="updateBySql" parameterClass="java.lang.String">
        <![CDATA[ $sql$ ]]>
        </update>
    </sqlMap>然后
    public class SqlDAOImpl extends SqlMapClientDaoSupport implements SqlDAO {
        public SqlDAOImpl() {
        }    @Override
        public List query(String sql) {
            return  getSqlMapClientTemplate().queryForList("sql.selectBySql", sql);
        }    @Override
        public int update(String sql) {
            return getSqlMapClientTemplate().update("sql.updateBySql", sql);
        }
    }
      

  3.   

    2L正解。LZ,ibatis本来就是半自动化的东东,你再手动传入,是不是有点...
    当然有需求的话,按JDBC的方式也可。
      

  4.   

    <?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="sql">
        <!-- selectBySql -->
        <select id="selectBySql" resultClass="java.util.HashMap"
                remapResults="true" parameterClass="java.lang.String">
        <![CDATA[ $sql$ ]]>
        </select>
        <!-- updateBySql -->
        <update id="updateBySql" parameterClass="java.lang.String">
        <![CDATA[ $sql$ ]]>
        </update>
    </sqlMap>
      

  5.   

    <![CDATA[ $sql$ ]]>
    这个是亮点
      

  6.   


    最近刚开始看MyBatis(最近=昨天) LZ你完全可以用动态语句实现类似的需求嘛