Spring使用JdbcTemplate操作數(shù)據(jù)庫(kù)---使用RowCa
系統(tǒng)
1766 0
首先,假設(shè)如下SQL表中有數(shù)據(jù)username=test1,passwd=test1,address=test1
CREATE TABLE `login` (
? `username` varchar(10) default NULL,
? `passwd` varchar(10) default NULL,
? `address` varchar(10) default NULL
) ENGINE=InnoDB DEFAULT CHARSET=gb2312;
?
配置文件:
?
<?
xml?version="1.0"?encoding="UTF-8"
?>
<!
DOCTYPE?beans?PUBLIC?"-//SPRING//DTD?BEAN//EN"?"http://www.springframework.org/dtd/spring-beans.dtd"?
>
<
beans
>
?
<
bean?
id
="dataSource"
?class
="org.apache.commons.dbcp.BasicDataSource"
>
???
<
property?
name
="driverClassName"
>
?????
<
value
>
com.mysql.jdbc.Driver
</
value
>
???
</
property
>
???
<
property?
name
="url"
>
?????
<
value
>
jdbc:mysql://localhost:3306/javaee
</
value
>
???
</
property
>
???
<
property?
name
="username"
>
?????
<
value
>
root
</
value
>
???
</
property
>
???
<
property?
name
="password"
>
?????
<
value
>
1234
</
value
>
???
</
property
>
?
</
bean
>
?
<
bean?
id
="jdbcTemplate"
?class
="org.springframework.jdbc.core.JdbcTemplate"
>
???
<
property?
name
="dataSource"
>
?????
<
ref?
local
="dataSource"
/>
???
</
property
>
?
</
bean
>
<
bean?
id
="personDAO"
?class
="SpringJDBCSupport.ReadData.PersonDAO"
>
??
<
property?
name
="jdbcTemplate"
>
????
<
ref?
local
="jdbcTemplate"
/>
??
</
property
>
</
bean
>
?
</
beans
>
?JavaBean:
?
package
?SpringJDBCSupport.ReadData;
import
?com.mysql.jdbc.Driver;
public
?
class
?Person?
...
{
??
private
?String?name;
??
private
?String?password;
??
private
?String?address;
??
public
?Person()
...
{
??????
??}
??
public
?Person(String?name,String?password,String?address)
...
{
??????
this
.name
=
name;
??????
this
.password
=
password;
??????
this
.address
=
address;
??}
public
?String?getAddress()?
...
{
????
return
?address;
}
public
?
void
?setAddress(String?address)?
...
{
????
this
.address?
=
?address;
}
public
?String?getName()?
...
{
????
return
?name;
}
public
?
void
?setName(String?name)?
...
{
????
this
.name?
=
?name;
}
public
?String?getPassword()?
...
{
????
return
?password;
}
public
?
void
?setPassword(String?password)?
...
{
????
this
.password?
=
?password;
}
public
?String?toString()
...
{
????
return
?
this
.getName()
+
"
-
"
+
this
.getPassword()
+
"
-
"
+
this
.getAddress();
}
}
?
DAO:
其中g(shù)etPersonByRowCallbackHandler方法根據(jù)username獲得person對(duì)象
package
?SpringJDBCSupport.ReadData;
import
?java.sql.PreparedStatement;
import
?java.sql.ResultSet;
import
?java.sql.SQLException;
import
?java.sql.Types;
import
?java.util.List;
import
?org.springframework.jdbc.core.BatchPreparedStatementSetter;
import
?org.springframework.jdbc.core.JdbcTemplate;
import
?org.springframework.jdbc.core.RowCallbackHandler;
public
?
class
?PersonDAO?
...
{
??
private
?JdbcTemplate?jdbcTemplate;
public
?JdbcTemplate?getJdbcTemplate()?
...
{
????
return
?jdbcTemplate;
}
public
?
void
?setJdbcTemplate(JdbcTemplate?jdbcTemplate)?
...
{
????
this
.jdbcTemplate?
=
?jdbcTemplate;
}
public
?
int
?insertPersonUseUpdate(Person?person)
...
{
????String?sql
=
"
insert?into?login?values(?,?,?)
"
;
????Object[]?params
=
new
?Object[]
...
{
????????????person.getName(),
????????????person.getPassword(),
????????????person.getAddress()
????}
;
????
return
?
this
.getJdbcTemplate().update(sql,params);
}
public
?
int
?insertPersonUseExecute(Person?person)
...
{
????String?sql
=
"
insert?into?login?values(?,?,?)
"
;
????Object[]?params
=
new
?Object[]
...
{
????????????person.getName(),
????????????person.getPassword(),
????????????person.getAddress()
????}
;
????
int
[]?types
=
new
?
int
[]
...
{
????????????Types.VARCHAR,
????????????Types.VARCHAR,
????????????Types.VARCHAR
????}
;
????
return
?
this
.getJdbcTemplate().update(sql,params,types);
}
public
?
int
[]?updatePersonUseBatchUpdate(?
final
?List?persons)
...
{
????String?sql
=
"
insert?into?login?values(?,?,?)
"
;
????BatchPreparedStatementSetter?setter
=
null
;
????setter
=
new
?BatchPreparedStatementSetter()
...
{
????????
public
?
int
?getBatchSize()
...
{
????????????
return
?persons.size();
????????}
????????
public
?
void
?setValues(PreparedStatement?ps,
int
?index)?
throws
?SQLException
...
{
????????????Person?person
=
(Person)persons.get(index);
????????????ps.setString(
1
,person.getName());
????????????ps.setString(
2
,person.getPassword());
????????????ps.setString(
3
,person.getAddress());
????????}
????}
;
????
return
?
this
.getJdbcTemplate().batchUpdate(sql,setter);
}
public
?Person?getPersonByRowCallbackHandler(String?username)
...
{
????String?sql
=
"
select?*?from?login?where?username=?
"
;
????
final
?Person?person
=
new
?Person();
????
final
?Object?params[]
=
new
?Object[]
...
{username}
;
????
this
.getJdbcTemplate().query(sql,params,
new
?RowCallbackHandler()
...
{
????????
public
?
void
?processRow(ResultSet?rs)
throws
?SQLException
...
{
????????????person.setName(rs.getString(
"
username
"
));
????????????p
Spring使用JdbcTemplate操作數(shù)據(jù)庫(kù)---使用RowCallbackHander讀數(shù)據(jù)篇
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061
微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元