最近有個同事要包裝一個可以執行sql語句的功能用的是mybatis
最開始他想到的方案是拿到數據庫連接再執行sql語句。
后來出了某些錯誤來問我,為了尋求比較快的解決方法于是我就試試了下下面的方法。
首先在Mapper添加?
<select id="select" resultMap="map" parameterType="java.lang.String" >
? ? ${_parameter}
? </select>
?parameterType為String的話 ?參數名就必須寫_parameter
?resultMap 返回類型是map型
這里的原理就是通過傳入字符串來執行sql,當然了上面這個只能執行select 如果要執行插入刪除更新就另外寫個
大家可以封裝個函數來判斷是添加修改刪除來執行對應的Mapper
然后在對應的dao接口添加
List<map>?select(String sql);
最后就可以得到自定義sql語句查詢的結果了。
@Resource ?
? private MyMapper myMapper;
....
List<map>?result?=myMapper.select("select * from user");
OK最后就可以用其他工具類將map轉成你的對象或者轉成JsonString 再轉成對象數組。
? <resultMap extends="BaseResultMap" id="ResultMapWithBLOBs" type="com.pactera.domain.report.BasReport">
??? <!--????? WARNING - @mbggenerated
????? This element is automatically generated by MyBatis Generator, do not modify.
??? -->
??? <result column="SQL" jdbcType="CLOB" property="sql" />
? </resultMap>