色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

no holder oracle

今天我想為大家介紹一下No Holder Oracle,這是一種非常方便的Oracle編程技術(shù),可以大大簡(jiǎn)化開(kāi)發(fā)工作并提高效率。具體來(lái)說(shuō),No Holder Oracle通過(guò)為每個(gè)數(shù)據(jù)庫(kù)操作分配一個(gè)單獨(dú)的數(shù)據(jù)庫(kù)連接,使得數(shù)據(jù)庫(kù)操作和業(yè)務(wù)邏輯之間的代碼解耦,從而方便測(cè)試和升級(jí)。

舉一個(gè)例子,假設(shè)我們要查詢數(shù)據(jù)庫(kù)中某個(gè)表的數(shù)據(jù),并將其顯示在網(wǎng)站上。如果使用傳統(tǒng)的數(shù)據(jù)庫(kù)操作方式,我們需要打開(kāi)數(shù)據(jù)庫(kù)連接、執(zhí)行查詢語(yǔ)句、讀取結(jié)果集并關(guān)閉數(shù)據(jù)庫(kù)連接。這樣的代碼很難測(cè)試,因?yàn)樵跍y(cè)試過(guò)程中,我們不得不手動(dòng)模擬數(shù)據(jù)庫(kù)連接和結(jié)果集的行為。

public void listData() {
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
try {
conn = DriverManager.getConnection(DB_URL, USER, PASS);
stmt = conn.createStatement();
String sql = "SELECT id, name, age FROM users";
rs = stmt.executeQuery(sql);
while (rs.next()) {
int id = rs.getInt("id");
String name = rs.getString("name");
int age = rs.getInt("age");
System.out.println(id + "\t" + name + "\t" + age);
}
} catch (SQLException ex) {
ex.printStackTrace();
} finally {
try { if (rs != null) rs.close(); } catch (SQLException e) { }
try { if (stmt != null) stmt.close(); } catch (SQLException e) { }
try { if (conn != null) conn.close(); } catch (SQLException e) { }
}
}

使用No Holder Oracle,我們可以將上面的代碼變成這樣:

public void listData() {
String sql = "SELECT id, name, age FROM users";
JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
List>list = jdbcTemplate.queryForList(sql);
for (Mapmap : list) {
int id = ((Number) map.get("id")).intValue();
String name = (String) map.get("name");
int age = ((Number) map.get("age")).intValue();
System.out.println(id + "\t" + name + "\t" + age);
}
}

這個(gè)代碼簡(jiǎn)潔明了,將數(shù)據(jù)庫(kù)操作和業(yè)務(wù)邏輯隔離開(kāi)來(lái),也方便了測(cè)試和維護(hù)。使用No Holder Oracle,只需在項(xiàng)目中添加一些依賴庫(kù)并配置數(shù)據(jù)源即可。以下是一個(gè)簡(jiǎn)單的配置示例:

<bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="${jdbc.driver}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
</bean>
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<constructor-arg ref="dataSource" />
</bean>

另外,No Holder Oracle還提供了很多實(shí)用的類和方法,如SimpleJdbcInsert、SimpleJdbcCall和NamedParameterJdbcTemplate等,可以更加方便地對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作。下面是一個(gè)簡(jiǎn)單的示例:

SimpleJdbcInsert insert = new SimpleJdbcInsert(jdbcTemplate);
insert.withTableName("users");
Mapparameters = new HashMap<>();
parameters.put("id", 1001);
parameters.put("name", "Tom");
parameters.put("age", 20);
insert.execute(parameters);
SimpleJdbcCall call = new SimpleJdbcCall(jdbcTemplate)
.withProcedureName("addUser");
SqlParameterSource in = new MapSqlParameterSource()
.addValue("name", "Tom")
.addValue("age", 20);
Mapout = call.execute(in);
int id = ((Number) out.get("id")).intValue();
String name = (String) out.get("name");
int age = ((Number) out.get("age")).intValue();

總之,No Holder Oracle是一種非常實(shí)用的編程技術(shù),可以大大簡(jiǎn)化開(kāi)發(fā)工作并提高效率。它通過(guò)將數(shù)據(jù)庫(kù)操作和業(yè)務(wù)邏輯解耦,方便測(cè)試和升級(jí)。如果你還沒(méi)有嘗試過(guò)No Holder Oracle,現(xiàn)在就應(yīng)該開(kāi)始了!