mybatis.xml直接读取配置文件(application.yml)中的数据

今天有一个需求是:大屏要查询指定时间节点后的数据,后续这个时间可能会改,也可能去掉,

为了方便后面修改,所有想直接读取配置文件中的数据,经过研究+问Ai,最后得出一个方法:

具体操作如下:

application.yml 添加如下配置

bash 复制代码
config:
 StartTimeOfTheStatistical: '2025-09-02' #统计开始时间

ConfigValueUtil 配置类中添加如下代码

bash 复制代码
@Data
@Component
@ConfigurationProperties(prefix = "config")
public class ConfigValueUtil {
	
	  @Value("${config.StartTimeOfTheStatistical}")
    private static Date StartTimeOfTheStatistical;

    @Value("${config.StartTimeOfTheStatistical:}")
    private String startTimeOfTheStatistical;

    private static String staticStartTimeOfTheStatistical;


    @PostConstruct
    public void init() {
        if (StringUtil.isNotEmpty(startTimeOfTheStatistical)) {
            staticStartTimeOfTheStatistical = startTimeOfTheStatistical;
        }
    }

    public static String getStaticStartTimeOfTheStatistical() {
        return staticStartTimeOfTheStatistical;
    }
}

解释一下:这里为什么要一个static的变量,因为mybatis只支持读取静态的数据。

mapper.xml使用`

bash 复制代码
<select id="statisticsProblem" resultType="">
        SELECT
            COUNT(0) AS totalCount
        
        FROM
            xxxxx as b
        WHERE
        
        <if test="@jnpf.config.ConfigValueUtil@getStaticStartTimeOfTheStatistical() != null or @jnpf.config.ConfigValueUtil@getStaticStartTimeOfTheStatistical() != ''">
            <bind name="staticStartTimeOfTheStatistical" value="@jnpf.config.ConfigValueUtil@getStaticStartTimeOfTheStatistical()"/>
            and b.WHISTLE_TIME >= #{staticStartTimeOfTheStatistical}
        </if>
    </select>

大家凑合着看吧,时间有点急,先记一下