mybatis直接执行sql语句

mybatis直接执行sql语句

在项目中,使用的是mybatis3.0.5,但没有采用其提供的DAO层接口映射的策略,而且在进行多种属性联合查找时,需要底层提供通用的解决方案,所以需要mybatis直接执行sql语句,各个daoImpl均可调用,减少了在每个mybatis文件中配置符合当前对象的select查询。。

(在mybatis中,需要通过传递对象,在select中判断对象属性是否为空进行where语句的拼凑,对后期的维护工作带来不小的考验,所以采用直接执行sql策略)

先说一说配置时,遇到的异常:

 

 

Xml代码   收藏代码
  1. <select id="findRecords" parameterType="String" resultMap="orderTypeResultMap">  
  2.     ${sql}  
  3. </select>  

 这样配置时,会出现:there no getter sql in java.lang.String 的异常

 

所以考虑:用一个适配器,将sql作为属性加入其中

首先:

 

Xml代码   收藏代码
  1. <typeAlias alias="sqladapter" type="com.zj.logistics.util.SQLAdapter" />  

 其次:

 

Java代码   收藏代码
  1. public class SQLAdapter {  
  2.     String sql;  
  3.   
  4.     public SQLAdapter(String sql) {  
  5.         this.sql = sql;  
  6.     }  
  7.   
  8.     public String getSql() {  
  9.         return sql;  
  10.     }  
  11.   
  12.     public void setSql(String sql) {  
  13.         this.sql = sql;  
  14.     }  
  15. }  

 最后:

 

Xml代码   收藏代码
  1. <select id="findRecords" parameterType="SQLAdapter" resultMap="orderTypeResultMap">  
  2.     ${sql}  
  3. </select>  

注意,不要忘记在调用该select方法时,用new SqlAdapter("自己写的sql语句")作为参数哦。。。 

 

搞定。。


真能折腾人的,这个直接写 value 不就可以了?

<select id="findRecords" parameterType="String" resultMap="orderTypeResultMap">  
    ${value} 
</select> 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值