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

问题描述 投票:5回答:3

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

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

java sql mybatis
3个回答
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; } }
  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>
  2. 称之为选择方法 String _sql = "select * from table where... order by... limit..."; xxxxx.findRecords(new SQLAdapter(_sql));
  3. 事情都已完成。你不能再在xml文件中编写复杂的sql语言。祝好运。

2
投票

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


0
投票

您可以使用SQL查询作为文字参数来执行此操作:

<select id="findRecords" parameterType="string" resultMap="xxxxxResultMap">  
    ${_parameter}
</select>

您只能传递where子句:

<select id="findRecords" parameterType="string" resultMap="xxxxxResultMap">  
    select * from records where ${_parameter}
</select>
© www.soinside.com 2019 - 2024. All rights reserved.