mybatis如何直接執行傳入的任意sql語句,並按照順序取出查詢的結果集


需求:

  在連接數據庫的單元測試時,極可能為測試某個測試點需提前准備對應的測試數據,這時,就需要對數據庫表進行初始化。在執行完測試后,有時也需要查詢數據庫表來驗證是不是正常入庫。且為了保持測試的校驗完整性和現有的功能代碼分開,應有自已的sqlmap和dao。

  1.直接執行前端傳來的任何sql語句,parameterType="String",

  2.對於任何sql語句,其返回值類型無法用resultMap在xml文件里配置或者返回具體的bean類型,因此設置resultType="java.util.Map",但是Map並不保證存入取出順序一致,

  因此設置resultType="java.util.LinkedHashMap",為保證查詢的字段值有序(存入與取出順序一致)所以采用LinkedHashMap。

mapper的接口方法:

import java.util.LinkedHashMap;
import java.util.List;
 
public interface JunitBaseDao {
    
    List<LinkedHashMap<String, Object>> select(String sql);
    int insert(String sql);
    int update(String sql);
    int delete(String sql);

  相匹配的xml文件:

<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="cn.webank.wfts.dao.JunitBaseDao" >

  <select id="select" parameterType="java.lang.String" resultType="java.util.LinkedHashMap">
  	${value}
  </select>
  
  <insert id="insert" parameterType="java.lang.String">
  	${value}
  </insert>
  
  <update id="update" parameterType="java.lang.String">
  	${value}
  </update>
  
  <delete id="delete" parameterType="java.lang.String">
    ${value}
  </delete>
</mapper>

 https://blog.csdn.net/wjxbj/article/details/84924098


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM