gpt4 book ai didi

java - 在 MyBatis 3.0.6 中使用 configuration.xml 文件并提供数据源设置

转载 作者:行者123 更新时间:2023-11-30 09:44:44 24 4
gpt4 key购买 nike

MyBatis 文档展示了一种通过 XML 配置文件构建 SqlSessionFactory 或通过 Java 代码构建 Configuration 对象的方法。它还提到传递的属性将覆盖 XML 文件中指定的内容。

除了 XML 配置之外,我正在尝试使用属性工具来提供数据源 URL,但该属性未设置。

这是我正在使用的配置 XML(为简洁起见删除了所有别名和映射):

<configuration> 
<typeAliases>
<typeAlias alias="Item" type="com.example.project.Item"/>
</typeAliases>

<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="org.h2.Driver"/>
<property name="url" value="jdbc:h2:C:/path_to_db_file_in_the_filesystem"/>
<property name="username" value="sa"/>
<property name="password" value="sa"/>
</dataSource>
</environment>
</environments>

<mappers>
<mapper resource="com/example/project/mappers/ItemMapper.xml"/>
</mappers>

</configuration>

XML 文件适用于一切,但我需要通过 Java 代码提供 url(通过代码,它是从另一个配置文件中获取的,因此必须动态提供给 MyBatis) .我知道我可以用代码完成这一切,但这将是不必要的工作,所以我想尽可能避免走这条路。

根据手册中的描述,我从 XML 文件中删除了 url 行,得到了以下代码:

String resource = "com/example/project/MyBatisConfiguration.xml"; 
Reader reader = Resources.getResourceAsReader(resource);

Properties props = new Properties();
props.setProperty("url", url);
SqlSessionFactory ssf = new SqlSessionFactoryBuilder().build(reader, props);

代码构建了SqlSessionFactory,但我得到“url cannot be null”异常,表明该属性没有成功覆盖。我认为属性的名称应该是一种特殊格式,但我找不到那种格式。

非常感谢您提供的所有帮助。

最佳答案

在您的配置 XML 中,您可以像这样为数据源 URL 插入一个占位符:

<property name="url" value="${url}"/>

然后SqlSessionFactoryBuilderbuild()方法将XML中的"${url}"替换为属性的值"url"props 提供。

关于java - 在 MyBatis 3.0.6 中使用 configuration.xml 文件并提供数据源设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7704510/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com