ibatis中mysql預存程序返回結果集

來源:互聯網
上載者:User

 mysql預存程序可以直接返回結果集,同時可以有out參數
例如:
預存程序:
 

CREATE PROCEDURE `test`<br />(IN _login VARCHAR(32),<br />IN _psw VARCHAR(32),<br />OUT _ret INTEGER(10),<br />OUT _id INTEGER(10),<br />OUT _name VARCHAR(32),<br />OUT _email VARCHAR(32),<br />OUT _phone VARCHAR(20),<br />OUT _active INTEGER(11)) //同時返回多個結果集合</p><p>BEGIN<br /> DECLARE CONTINUE HANDLER FOR NOT FOUND set _ret =-1;<br /> set _ret = 0 ;</p><p> select id,name,email,phone,active<br /> into _id,_name,_email,_phone,_active<br /> from test<br /> where tx_account.`loginname`=_login and tx_account.`password`=MD5(_psw) and active=1;<br /> ---------返回結果集-----<br /> if _ret = 0 then<br /> select a.id as id ,a.name as name,a.priority as priority<br /> from test b left join test1 a on b.role=a.id<br /> where b.account=_id;<br /> end if;<br />END;</p><p>直接返回結果集<br />ibatis檔案<br /><parameterMap id="testParameterMap" class="params"><br /> <parameter property="loginname" jdbcType="VARCHAR" javaType="java.lang.String" mode="IN"/><br /> <parameter property="password" jdbcType="VARCHAR" javaType="java.lang.String" mode="IN"/><br /> <parameter property="ret" jdbcType="INTEGER" javaType="java.lang.Integer" mode="OUT"/><br /> <parameter property="id" jdbcType="INTEGER" javaType="java.lang.Integer" mode="OUT"/><br /> <parameter property="name" jdbcType="VARCHAR" javaType="java.lang.String" mode="OUT"/><br /> <parameter property="phone" jdbcType="VARCHAR" javaType="java.lang.String" mode="OUT"/><br /> <parameter property="email" jdbcType="VARCHAR" javaType="java.lang.String" mode="OUT"/><br /> <parameter property="active" jdbcType="INTEGER" javaType="java.lang.Integer" mode="OUT"/><br /></parameterMap></p><p><procedure id="test" parameterMap="testMap" resultMap="AccountRoleResultMap"><br /> {call test(?,?,?,?,?,?,?,?)}<br /></procedure> </p><p>dao 的實現<br />定義一個傳參的map params ,</p><p> HashMap<String,Object> params = new HashMap<String,Object>();<br /> //把需要的參數放到map中<br /> params.put("id",account.getId());<br /> params.put("ret",null);<br /> params.put("loginname", null);<br /> params.put("name", null);<br /> params.put("email", null);<br /> params.put("phone",null);<br /> params.put("active", null);<br />//定義一個list<br /> List list=null;<br /> list= (List)(getSqlMapClientTemplate().queryForList("test",params));<br /> //上面這樣操作就可以獲得預存程序返回的結果集。<br /> Object var;<br /> var = params.get("ret"); //從map 中獲得制定的輸出參數的值。</p><p>

在mysql中不需要的ibatis的設定檔中,聲明返回的結果集。

還沒試過,不知道行不行,先放在這裡。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.