ibatis 怎么样执行传入的sql语句呢? 就是 我String str ="select * from tab1"我想把str传入的ibatis中执行,是传递整条sql语句... 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 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把生成的类对象返回给你 <?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); }} 2L正解。LZ,ibatis本来就是半自动化的东东,你再手动传入,是不是有点...当然有需求的话,按JDBC的方式也可。 <?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> <![CDATA[ $sql$ ]]>这个是亮点 最近刚开始看MyBatis(最近=昨天) LZ你完全可以用动态语句实现类似的需求嘛 java发送邮件找回密码求解决方法 mysql5中文乱码问题 struts2跳转问题 struts2 . js给当前页面传值 高手请帮忙操作DOM树的问题 如何跳转页面用连接<html:link action=""/> 高手进来聊一聊:UDDI、JNDI、LDAP Java开发POS系统(连锁店的进消存等业务)的可行性如何??? 字符串的替换问题, 请帮忙! 返回结果序列化的错误 hibernate使用c3p0作为连接池时出现问题 如何实现后台自动刷新?
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把生成的类对象返回给你
<!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);
}
}
当然有需求的话,按JDBC的方式也可。
<!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>
这个是亮点
最近刚开始看MyBatis(最近=昨天) LZ你完全可以用动态语句实现类似的需求嘛