我一般使用mybatis-plus,但是在维护旧代码的时候发现使用的是xml这样的mybatis, 需要使用动态的sql语句,所以要自定义sql语句
1.xml里面设置,resultMap是自己定义的类对象,也可以使用map
<select id="selectQuestionForDownload" resultMap="getKnowledgeQuestionMap" parameterType="java.lang.String"> ${_parameter} </select>
2.mapper设置, 直接声明该接口即可
List<KnowledgeQuestion> selectQuestionForDownload(String sql);
3.调用的地方,自动驻入就不说明了,直接看调用的地方
StringBuilder builder = new StringBuilder(); String start = "select * from question_gray where "; builder.append(start);
for(String str : params.keySet()){ if(Constants.QUESTION_PARAMS.containsKey(str)){ builder.append(Constants.QUESTION_PARAMS.get(str)).append("=").append(params.get(str)).append(" and "); } }
builder.delete(builder.length()-5,builder.length());//去掉最后一个and
question = questionMapper.selectQuestionForDownload(builder.toString());
这就是mybatis使用自定义sql语句,写的粗糙,见谅。
来源:oschina
链接:https://my.oschina.net/u/4038596/blog/3208267