Spring使用JdbcTemplate操作数据库---使用RowCa
系统
1614 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元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。
【本文对您有帮助就好】元