最近有个同事要包装一个可以执行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>