Spring使用JdbcTemplate操作數據庫---使用RowCa
系統
1555 0
首先,假設如下SQL表中有數據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:
其中getPersonByRowCallbackHandler方法根據username獲得person對象
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操作數據庫---使用RowCallbackHander讀數據篇
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061
微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元