Spring使用JdbcTemplate操作數據庫---寫數據篇
系統
1716 0
首先使用mysql建立數據庫,并建立表如下:
CREATE TABLE `login` (
? `username` varchar(10) default NULL,
? `passwd` varchar(10) default NULL,
? `address` varchar(10) default NULL
) ENGINE=InnoDB DEFAULT CHARSET=gb2312;
?
Spring的JDBC框架承擔了資源管理和錯誤處理的重擔,使你的JDBC代碼非常干凈,這就是spring為我們提供的模板類-?JdbcTemplate,他是線程安全的
首先,我們編寫配置文件,這里數據庫鏈接部隊使用了apache的pool和DBCP作為連接池
我們為PersonDAO這個數據庫操作類,注入JdbcTemplate
?
<?
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.WriteData.PersonDAO"
>
??
<
property?
name
="jdbcTemplate"
>
????
<
ref?
local
="jdbcTemplate"
/>
??
</
property
>
</
bean
>
?
</
beans
>
?
下面是我們的javaBean
?
package
?SpringJDBCSupport.WriteData;
import
?com.mysql.jdbc.Driver;
public
?
class
?Person?
...
{
??
private
?String?name;
??
private
?String?password;
??
private
?String?address;
??
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;
}
}
?
這是我們的數據庫訪問類:
包含了三個方法,其中execute方法是有三個參數,sql,params,type,定義type表示這是一個類型安全的方法
package
?SpringJDBCSupport.WriteData;
import
?java.sql.PreparedStatement;
import
?java.sql.SQLException;
import
?java.sql.Types;
import
?java.util.List;
import
?org.springframework.jdbc.core.BatchPreparedStatementSetter;
import
?org.springframework.jdbc.core.JdbcTemplate;
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);
}
??
}
?
測試代碼:
?
package
?SpringJDBCSupport.WriteData;
import
?java.io.File;
import
?java.util.ArrayList;
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
+
"
WriteData
"
+
File.separator
+
"
hello.xml
"
;
????????factory
=
new
?XmlBeanFactory(
new
?FileSystemResource(filePath));
????????PersonDAO?personDAO
=
(PersonDAO)factory.getBean(
"
personDAO
"
);
????????
/**/
/*
?????????*?準備數據
?????????
*/
????????Person?p1
=
new
?Person(
"
test1
"
,
"
test1
"
,
"
test1
"
);
Spring使用JdbcTemplate操作數據庫---寫數據篇
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061
微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元