我需要执行在运行时由java代码生成的查询(不是静态方法)。我已经知道如何使用注释和静态方法或使用xml mapper来构建动态查询,但它不适合我的情况。
有没有办法直接从java代码执行查询?
Mybatis已有此功能,但您必须按如下方式使用适配器。
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;
}
}
<typeAlias alias="sqladapter" type="com.zj.xxx.xxx.SQLAdapter" />
<select id="findRecords" parameterType="SQLAdapter" resultMap="xxxxxResultMap">
${sql}
</select>
String _sql = "select * from table where... order by... limit...";
xxxxx.findRecords(new SQLAdapter(_sql));
似乎最好的答案是在这种情况下使用JDBC。
您可以使用SQL查询作为文字参数来执行此操作:
<select id="findRecords" parameterType="string" resultMap="xxxxxResultMap">
${_parameter}
</select>
您只能传递where子句:
<select id="findRecords" parameterType="string" resultMap="xxxxxResultMap">
select * from records where ${_parameter}
</select>