使用为先
裸单测使用时,只用加载对应驱动即可
以h2为例:
public class TestH2 extends AbstractTestNGSpringContextTests {
private static final String JDBC_URL = "jdbc:h2:mem:haha";
private static final String USER = "";
private static final String PASSWORD = "sa";
private static final String DRIVER_CLASS = "org.h2.Driver";
@Test
public void test() throws Exception {
Class.forName(DRIVER_CLASS);
Connection conn = DriverManager.getConnection(JDBC_URL, USER, PASSWORD);
Statement statement = conn.createStatement();
statement.execute("DROP TABLE IF EXISTS USER_INF");
statement.execute("CREATE TABLE USER_INF(id INTEGER PRIMARY KEY ,name VARCHAR(100), sex VARCHAR(2))");
statement.executeUpdate("INSERT INTO USER_INF VALUES(1, 'tom', '男') ");
statement.executeUpdate("INSERT INTO USER_INF VALUES(2, 'jack', '女') ");
statement.executeUpdate("INSERT INTO USER_INF VALUES(3, 'marry', '男') ");
statement.executeUpdate("INSERT INTO USER_INF VALUES(4, 'lucy', '男') ");
ResultSet resultSet = statement.executeQuery("select * from USER_INF");
while (resultSet.next()) {
System.out.println(resultSet.getInt("id") + ", " + resultSet.getString("name") +
", " + resultSet.getString("sex"));
}
statement.close();
conn.close();
}
}
spring集成
使用嵌入式数据源 EmbeddedDatabaseBuilder:
public DataSource h2DataSource(){
EmbeddedDatabaseBuilder builder = new EmbeddedDatabaseBuilder();
EmbeddedDatabase database = builder.setType(EmbeddedDatabaseType.H2)
.addScript("classpath:db/explore_db.sql") ///启动时初始化建表语句
.build();
return database;
}
或采用xml配置:
<jdbc:embedded-database id="dataSource" type="H2">
<jdbc:script location="classpath*:schema.sql" />
<jdbc:script location="classpath*:test-data.sql" />
</jdbc:embedded-database>
可配置url
如果想指定jdbc的url,上面的集成方法就行不通,需要回到最原始的datasource上来。
<bean class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close" id="dataSource">
<property name="driverClassName" value="org.hsqldb.jdbcDriver" />
<property name="url" value="jdbc\:hsqldb\:mem\:YOUNAME" />
<property name="username" value="sa" />
<property name="password" value="" />
</bean>
<jdbc:initialize-database data-source="dataSource">
<jdbc:script location="classpath:schema_h2.sql" />
</jdbc:initialize-database>