填坑日志 MyBatis执行任意SQL

个人是采用了定义无特定语义的字段来实现的。采用JavaBean的原因在于一是方便取用数据,方便对数据进行校验。
JavaBean如下:

/*
*我这边限定了最多查询条件,所以5个字段就足够了。
*如果任意多个字段的话可以采用LinkedHashMap
*/
public class ReportResult {
	private String time;
	private String byField1;
	private String byField2;
	private String byField3;
	private String byField4;
	private String byField5;
	private Float result;
}

接口定义如下:

/**
	 * 执行报表SQL
	 * @param sql
	 * @return
	 */
	List<ReportResult> superManagerSelect(String sql);

XML定义如下:

<!-- 通用查询映射结果 -->
    <resultMap id="reportResultResultMap" type="com.xxx.ReportResult">
        <result column="time" property="time"/>
        <result column="by_field1" property="byField1"/>
        <result column="by_field2" property="byField2"/>
        <result column="by_field3" property="byField3"/>
        <result column="by_field4" property="byField4"/>
        <result column="by_field5" property="byField5"/>
        <result column="result" property="result"/>
    </resultMap>
    
    <select id="superManagerSelect" parameterType="String" resultMap="reportResultResultMap">
        ${value}
    </select>

注意:
这里变量名为什么写value而不是sql呢?
因为MyBatis默认是将参数当作对象而不是调用toString()的。所以我们这里其实是调用的String对象
还有。这里使用的${value},相当于直接拼接SQL了,所以一定要注意对于用户输入参数的校验,避免SQL注入风险。

private final char value[];

参考

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值