<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="cn.iocoder.yudao.module.infra.dal.mysql.logger.ApiAccessLogMapper"> <!-- 一般情况下,尽可能使用 Mapper 进行 CRUD 增删改查即可。 无法满足的场景,例如说多表关联查询,才使用 XML 编写 SQL。 代码生成器暂时只生成 Mapper XML 文件本身,更多推荐 MybatisX 快速开发插件来生成查询。 文档可见:https://www.iocoder.cn/MyBatis/x-plugins/ --> <select id="apiAccessLogCount" resultType="long"> select count(1) from infra_api_access_log where deleted = 0 <if test="req.userId != null "> AND user_id = #{req.userId} </if> <if test="req.userType != null "> AND user_type = #{req.userType} </if> <if test="req.applicationName != null and req.applicationName != ''"> AND application_name = #{req.applicationName} </if> <if test="req.requestUrl != null and req.requestUrl != ''"> AND request_url like concat("%",concat(#{req.requestUrl},"%")) </if> <if test="req.beginBeginTime != null and req.endBeginTime != null"> AND begin_time BETWEEN #{req.beginBeginTime} and #{req.endBeginTime} </if> <if test="req.duration != null "> AND duration <![CDATA[ >= ]]> #{req.duration} </if> <if test="req.resultCode != null"> AND result_code = #{req.resultCode} </if> </select> <select id="apiAccessLogList" resultType="cn.iocoder.yudao.module.infra.dal.dataobject.logger.ApiAccessLogDO"> select `id`, `trace_id`, `user_id`, `user_type`, `application_name`, `request_url`, `request_params`, `user_ip`, `user_agent`, `begin_time`, `end_time`, `duration`, `result_code`, `result_msg`, `creator`, `create_time`, `updater`, `update_time`, `deleted` from infra_api_access_log where deleted = 0 <if test="req.userId != null "> AND user_id = #{req.userId} </if> <if test="req.userType != null "> AND user_type = #{req.userType} </if> <if test="req.applicationName != null and req.applicationName != ''"> AND application_name = #{req.applicationName} </if> <if test="req.requestUrl != null and req.requestUrl != ''"> AND request_url like concat("%",concat(#{req.requestUrl},"%")) </if> <if test="req.beginBeginTime != null and req.endBeginTime != null"> AND begin_time BETWEEN #{req.beginBeginTime} and #{req.endBeginTime} </if> <if test="req.duration != null "> AND duration <![CDATA[ >= ]]> #{req.duration} </if> <if test="req.resultCode != null"> AND result_code = #{req.resultCode} </if> order by id desc limit #{start}, #{size} </select> </mapper>