我需要执行在运行时由java代码生成的查询(不是静态方法).我已经知道如何使用注释和静态方法或使用xml mapper来构建动态查询,但它不适合我的情况.
有没有办法直接从java代码执行查询?
Mybatis已有此功能,但您必须按如下方式使用适配器.
创建一个适配器类;
Run Code Online (Sandbox Code Playgroud)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; } }
创建类SQLAdapter的typeAlias
<typeAlias alias="sqladapter" type="com.zj.xxx.xxx.SQLAdapter" />
将select标记放在需要直接执行sql的每个对象xml中.
<select id="findRecords" parameterType="SQLAdapter" resultMap="xxxxxResultMap">
${sql}
</select>
Run Code Online (Sandbox Code Playgroud)称之为选择方法
Run Code Online (Sandbox Code Playgroud)String _sql = "select * from table where... order by... limit..."; xxxxx.findRecords(new SQLAdapter(_sql));
事情都已完成.你不能再在xml文件中编写复杂的sql语言.祝好运.