我对mybatis和执行的sql查询有疑问。是否有可能从表示为字符串的Map器方法中执行sql?
有一个searchrepository在mapper中调用searchtmp方法,mapper从mybatis xml文件中调用并执行searchtmp方法。
在理想情况下,我希望将searchtmp方法的void返回类型更改为字符串,并强制mybatis将执行的sql作为字符串返回。我有可能做到吗?
public class SearchRepository {
private final SearchTmpMapper mapper;
public void searchTmp() {
SearchFilter filter = intializeFilter();
mapper.searchTmp(filter);
}
public interface SearchTmpMapper {
void searchTmp(
@Param("filter") SearchFilter filter);
}
<select id="searchTmp">
/* some SQL select */
</select>
1条答案
按热度按时间klr1opcd1#
您可以使用SpringAOP来实现,但需要向应用程序添加一个额外的类,该类将实现新的“方面”。见下文:
几年前,我实现了一个aop方面(我使用的是spring),它记录了我正在处理的hotrod orm的所有执行的sql语句及其响应时间。
下面的代码(开源)记录每个sql语句及其响应时间。it内部类(此处未显示)将其执行从重到轻进行排序;RESTAPI可以向应用程序的管理界面提供“最坏的违规者”。
下面的示例使用spring aop来执行此操作:
java 8中的其他方法包括:
最后,实现该方法来处理sql语句。在我的例子中,我记录了sql语句、它的执行时间和执行错误(如果有):