如何使用mybatis直接从java代码中执行查询?

soc*_*chi 5 java sql mybatis

我需要执行在运行时由java代码生成的查询(不是静态方法).我已经知道如何使用注释和静态方法或使用xml mapper来构建动态查询,但它不适合我的情况.

有没有办法直接从java代码执行查询?

Ben*_*Ben 8

Mybatis已有此功能,但您必须按如下方式使用适配器.

  1. 创建一个适配器类;

    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;
      }
    }
    
    Run Code Online (Sandbox Code Playgroud)
  2. 创建类SQLAdapter的typeAlias

<typeAlias alias="sqladapter" type="com.zj.xxx.xxx.SQLAdapter" />

  1. 将select标记放在需要直接执行sql的每个对象xml中.

    <select id="findRecords" parameterType="SQLAdapter" resultMap="xxxxxResultMap">  
        ${sql}  
    </select> 
    
    Run Code Online (Sandbox Code Playgroud)
  2. 称之为选择方法

    String _sql = "select * from table where... order by... limit...";
    xxxxx.findRecords(new SQLAdapter(_sql));
    
    Run Code Online (Sandbox Code Playgroud)
  3. 事情都已完成.你不能再在xml文件中编写复杂的sql语言.祝好运.


soc*_*chi 2

在这种情况下,最好的答案似乎是使用 JDBC。