o2geao 发表于 2016-11-26 03:48:45

mybatis/ibatis直接执行sql语句

  在项目中,使用的是mybatis3.0.5,但没有采用其提供的DAO层接口映射的策略,而且在进行多种属性联合查找时,需要底层提供通用的解决方案,所以需要mybatis直接执行sql语句,各个daoImpl均可调用,减少了在每个mybatis文件中配置符合当前对象的select查询。。
  (在mybatis中,需要通过传递对象,在select中判断对象属性是否为空进行where语句的拼凑,对后期的维护工作带来不小的考验,所以采用直接执行sql策略)
  先说一说配置时,遇到的异常:

<select id="findRecords" parameterType="String" resultMap="orderTypeResultMap">
${sql}
</select>
  这样配置时,会出现:there no getter sql in java.lang.String 的异常
  所以考虑:用一个适配器,将sql作为属性加入其中
  首先:

<typeAlias alias="sqladapter" type="com.zj.logistics.util.SQLAdapter" />
  其次:

public class SQLAdapter {
String sql;
public SQLAdapter(String sql) {
this.sql = sql;
}
public String getSql() {
return sql;
}
public void setSql(String sql) {
this.sql = sql;
}
}
  最后:

<select id="findRecords" parameterType="SQLAdapter" resultMap="orderTypeResultMap">
${sql}
</select>
  注意,不要忘记在调用该select方法时,用new SqlAdapter("自己写的sql语句")作为参数哦。。。 
  搞定。。
  想更深入了解,请浏览   mybatis/ibatis直接执行sql语句后续
页: [1]
查看完整版本: mybatis/ibatis直接执行sql语句