Spring使用JdbcTemplate操作數(shù)據(jù)庫---使用RowMa
系統(tǒng)
1594 0
首先建立數(shù)據(jù)表:
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();
}
}
?
編寫自定義RowMapper
?
package
?SpringJDBCSupport.ReadData;
import
?java.sql.ResultSet;
import
?java.sql.SQLException;
import
?org.springframework.jdbc.core.RowMapper;
public
?
class
?PersonRowMapper?
implements
?RowMapper?
...
{
????
public
?Object?mapRow(ResultSet?rs,?
int
?index)?
throws
?SQLException?
...
{
????????Person?person
=
new
?Person();
????????person.setName(rs.getString(
"
username
"
));
????????person.setPassword(rs.getString(
"
passwd
"
));
????????person.setAddress(rs.getString(
"
address
"
));
????????
return
?person;
????}
}
?
測試代碼:
?
package
?SpringJDBCSupport.ReadData;
import
?java.io.File;
import
?java.util.ArrayList;
import
?java.util.Iterator;
import
?java.util.List;
import
?org.springframework.beans.factory.BeanFactory;
import
?org.springframework.beans.factory.xml.XmlBeanFactory;
import
?org.springframework.core.io.FileSystemResource;
public
?
class
?TestJDBCTemplate?
...
{
????
public
?
static
?String?filePath
=
""
;
????
public
?
static
?BeanFactory?factory
=
null
;
????
public
?
static
?
void
?main(String[]?args)?
...
{
????????filePath
=
System.getProperty(
"
user.dir
"
)
+
File.separator
+
"
SpringJDBCSupport
"
+
File.separator
+
"
ReadData
"
+
File.separator
+
"
hello.xml
"
;
????????factory
=
new
?XmlBeanFactory(
new
?FileSystemResource(filePath));
????????PersonDAO?personDAO
=
(PersonDAO)factory.getBean(
"
personDAO
"
);
????????
/**/
/*
?????????*?準(zhǔn)備數(shù)據(jù)
?????????
*/
????????Person?p1
=
new
?Person(
"
test1
"
,
"
test1
"
,
"
test1
"
);
????????Person?p2
=
new
?Person(
"
test2
"
,
"
test2
"
,
"
test2
"
);
????????Person?p3
=
new
?Person(
"
test3
"
,
"
test3
"
,
"
test3
"
);
????????Person?p4
=
new
?Person(
"
test4
"
,
"
test4
"
,
"
test4
"
);
????????Person?p5
=
new
?Person(
"
test5
"
,
"
test5
"
,
"
test5
"
);
????????List?persons
=
new
?ArrayList();
????????persons.add(p3);
????????persons.add(p4);
????????persons.add(p5);
????????
//
使用jdbcTemplate.update方式
????????personDAO.insertPersonUseUpdate(p1);
????????
//
使用jdbcTemplate.execute方式
????????personDAO.insertPersonUseExecute(p2);
????
//
????
//
使用jdbcTemplate批處理方式
????????personDAO.updatePersonUseBatchUpdate(persons);
????????
????????
//
使用RowCallbackHandler執(zhí)行一次查詢,并打印person信息
????????System.out.println(personDAO.getPersonByRowCallbackHandler(
"
test1
"
));
????????List?a
=
personDAO.getPersonsByMapperResultReader();
????????
for
?(Iterator?iter?
=
?a.iterator();?iter.hasNext();)?
...
{
????????????System.out.println((Person)iter.next());
????????????
????????}
????}
????
????
}
?
運行程序:輸出為以下結(jié)果,紅色部分為查詢結(jié)果集
test1-test1-test1
test1-test1-test1
test2-test2-test2
test3-test3-test3
test4-test4-test4
test5-test5-test5
我們完全可以用這個方法代替RowCallbackHandler,用一個自定義的RowMapper結(jié)局單個查詢和結(jié)果集查詢兩種方式,返回單個對象是,只要修改
List result=(ArrayList)this.getJdbcTemplate().query(sql,params,new RowMapperResultSetExtractor(new PersonRowMapper()));
return result.get(0);
}
即可
Spring使用JdbcTemplate操作數(shù)據(jù)庫---使用RowMapperResultSetExtractor讀數(shù)據(jù)篇
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061
微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元