如何为H2 Query初始化NamedParameterJdbcTemplate?
How to initiate NamedParameterJdbcTemplate for H2 Query?
我正在开发一个使用 java 8 + Spring 4 的应用程序。现在我正在删除 Spring DI 要求,以便应用程序可以 运行没有 Spring DI.
我将使用 Springs JdbcTemplate 和 NamedParameterJdbcTemplate 进行数据库操作。我正在使用这些模板,因为我们会在 java 应用程序中使用任何其他功能/.jar。
虽然我正在删除所有 @Autowired 和其他 spring 相关注释(并现在通过构造函数制作它们)
Spring版本是这样的:
public class H2Dao {
private NamedParameterJdbcTemplate t;
@Autowired
public H2Dao(@Qualifier("H2JdbcTemplate") NamedParameterJdbcTemplate t) {
this.t=t;
}
}
application-context.xml 具有以下代码:
<jdbc:embedded-database id="h2DataSource" type="H2">
<jdbc:script location="classpath:db/sql/h2.init.sql" />
</jdbc:embedded-database>
<bean id="H2JdbcTemplate" class="org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate">
<constructor-arg ref="h2DataSource" name="dataSource" />
</bean>
h2.init.sql 文件有以下代码:
CREATE ALIAS ROWNUM_OVER FOR "com.xx.xxxx.h2.H2Function.rowNumOver";
CREATE ALIAS DBO_UFUN_ADDDATETIME FOR "com.xx.xxxx.h2.H2Function.addDateTime";
我的问题是,如何在不使用 application-context.xml 进行 DI 的非 spring 版本中编写相同的代码。我想使用带有 NamedParameterJdbcTemplate 作为参数的构造函数 H2Dao。如何实例化NamedParameterJdbcTemplate来传递H2Dao构造函数?
不知道我理解的对不对。但是,如果您不想使用 DI,您可能需要使用 EmbeddedDatabaseBuilder(请参阅 link: http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/jdbc/datasource/embedded/EmbeddedDatabaseBuilder.html )
您的代码可能如下所示:
EmbeddedDatabase db = new EmbeddedDatabaseBuilder()
.setType(EmbeddedDatabaseType.H2)
.addScript("schema.sql")
.build();
NamedParameterJdbcTemplate namedParameterJdbcTemplate = new NamedParameterJdbcTemplate(db);
我正在开发一个使用 java 8 + Spring 4 的应用程序。现在我正在删除 Spring DI 要求,以便应用程序可以 运行没有 Spring DI.
我将使用 Springs JdbcTemplate 和 NamedParameterJdbcTemplate 进行数据库操作。我正在使用这些模板,因为我们会在 java 应用程序中使用任何其他功能/.jar。
虽然我正在删除所有 @Autowired 和其他 spring 相关注释(并现在通过构造函数制作它们)
Spring版本是这样的:
public class H2Dao {
private NamedParameterJdbcTemplate t;
@Autowired
public H2Dao(@Qualifier("H2JdbcTemplate") NamedParameterJdbcTemplate t) {
this.t=t;
}
}
application-context.xml 具有以下代码:
<jdbc:embedded-database id="h2DataSource" type="H2">
<jdbc:script location="classpath:db/sql/h2.init.sql" />
</jdbc:embedded-database>
<bean id="H2JdbcTemplate" class="org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate">
<constructor-arg ref="h2DataSource" name="dataSource" />
</bean>
h2.init.sql 文件有以下代码:
CREATE ALIAS ROWNUM_OVER FOR "com.xx.xxxx.h2.H2Function.rowNumOver";
CREATE ALIAS DBO_UFUN_ADDDATETIME FOR "com.xx.xxxx.h2.H2Function.addDateTime";
我的问题是,如何在不使用 application-context.xml 进行 DI 的非 spring 版本中编写相同的代码。我想使用带有 NamedParameterJdbcTemplate 作为参数的构造函数 H2Dao。如何实例化NamedParameterJdbcTemplate来传递H2Dao构造函数?
不知道我理解的对不对。但是,如果您不想使用 DI,您可能需要使用 EmbeddedDatabaseBuilder(请参阅 link: http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/jdbc/datasource/embedded/EmbeddedDatabaseBuilder.html ) 您的代码可能如下所示:
EmbeddedDatabase db = new EmbeddedDatabaseBuilder()
.setType(EmbeddedDatabaseType.H2)
.addScript("schema.sql")
.build();
NamedParameterJdbcTemplate namedParameterJdbcTemplate = new NamedParameterJdbcTemplate(db);