Spring使用JdbcTemplate操作資料庫

來源:互聯網
上載者:User

文章來源:http://www.blogjava.net/baoyaer/articles/154080.html

首先,假設如下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:

</p><p>package SpringJDBCSupport.ReadData;<br />import com.mysql.jdbc.Driver;<br />public class Person {<br /> private String name;<br /> private String password;<br /> private String address;<br /> public Person(){</p><p> }<br /> public Person(String name,String password,String address){<br /> this.name=name;<br /> this.password=password;<br /> this.address=address;<br /> }<br />public String getAddress() {<br /> return address;<br />}<br />public void setAddress(String address) {<br /> this.address = address;<br />}<br />public String getName() {<br /> return name;<br />}<br />public void setName(String name) {<br /> this.name = name;<br />}<br />public String getPassword() {<br /> return password;<br />}<br />public void setPassword(String password) {<br /> this.password = password;<br />}<br />public String toString(){<br /> return this.getName()+"-"+this.getPassword()+"-"+this.getAddress();<br />}<br />}</p><p>DAO:<br />其中getPersonByRowCallbackHandler方法根據username獲得person對象<br />package SpringJDBCSupport.ReadData;<br />import java.sql.PreparedStatement;<br />import java.sql.ResultSet;<br />import java.sql.SQLException;<br />import java.sql.Types;<br />import java.util.List;<br />import org.springframework.jdbc.core.BatchPreparedStatementSetter;<br />import org.springframework.jdbc.core.JdbcTemplate;<br />import org.springframework.jdbc.core.RowCallbackHandler;<br />public class PersonDAO {<br /> private JdbcTemplate jdbcTemplate;<br />public JdbcTemplate getJdbcTemplate() {<br /> return jdbcTemplate;<br />}<br />public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {<br /> this.jdbcTemplate = jdbcTemplate;<br />}<br />public int insertPersonUseUpdate(Person person){<br /> String sql="insert into login values(?,?,?)";<br /> Object[] params=new Object[]{<br /> person.getName(),<br /> person.getPassword(),<br /> person.getAddress()<br /> };<br /> return this.getJdbcTemplate().update(sql,params);<br />}<br />public int insertPersonUseExecute(Person person){<br /> String sql="insert into login values(?,?,?)";<br /> Object[] params=new Object[]{<br /> person.getName(),<br /> person.getPassword(),<br /> person.getAddress()<br /> };<br /> int[] types=new int[]{<br /> Types.VARCHAR,<br /> Types.VARCHAR,<br /> Types.VARCHAR<br /> };<br /> return this.getJdbcTemplate().update(sql,params,types);<br />}<br />public int[] updatePersonUseBatchUpdate( final List persons){<br /> String sql="insert into login values(?,?,?)";<br /> BatchPreparedStatementSetter setter=null;<br /> setter=new BatchPreparedStatementSetter(){<br /> public int getBatchSize(){<br /> return persons.size();<br /> }<br /> public void setValues(PreparedStatement ps,int index) throws SQLException{<br /> Person person=(Person)persons.get(index);<br /> ps.setString(1,person.getName());<br /> ps.setString(2,person.getPassword());<br /> ps.setString(3,person.getAddress());<br /> }<br /> };<br /> return this.getJdbcTemplate().batchUpdate(sql,setter);<br />}<br />public Person getPersonByRowCallbackHandler(String username){<br /> String sql="select * from login where username=?";<br /> final Person person=new Person();<br /> final Object params[]=new Object[]{username};<br /> this.getJdbcTemplate().query(sql,params,new RowCallbackHandler(){<br /> public void processRow(ResultSet rs)throws SQLException{<br /> person.setName(rs.getString("username"));<br /> person.setPassword(rs.getString("passwd"));<br /> person.setAddress(rs.getString("address"));<br /> }<br /> });<br /> return person;<br />}</p><p>}</p><p>測試代碼:</p><p>package SpringJDBCSupport.ReadData;<br />import java.io.File;<br />import java.util.ArrayList;<br />import java.util.List;<br />import org.springframework.beans.factory.BeanFactory;<br />import org.springframework.beans.factory.xml.XmlBeanFactory;<br />import org.springframework.core.io.FileSystemResource;<br />public class TestJDBCTemplate {<br /> public static String filePath="";<br /> public static BeanFactory factory=null;<br /> public static void main(String[] args) {<br /> filePath=System.getProperty("user.dir")+File.separator+"SpringJDBCSupport"+File.separator+"ReadData"+File.separator+"hello.xml";<br /> factory=new XmlBeanFactory(new FileSystemResource(filePath));<br /> PersonDAO personDAO=(PersonDAO)factory.getBean("personDAO");<br /> /*<br /> * 準備資料<br /> */<br /> Person p1=new Person("test1","test1","test1");<br /> Person p2=new Person("test2","test2","test2");<br /> Person p3=new Person("test3","test3","test3");<br /> Person p4=new Person("test4","test4","test4");<br /> Person p5=new Person("test5","test5","test5");<br /> List persons=new ArrayList();<br /> persons.add(p3);<br /> persons.add(p4);<br /> persons.add(p5);<br /> //使用jdbcTemplate.update方式<br /> // personDAO.insertPersonUseUpdate(p1);<br /> //使用jdbcTemplate.execute方式<br /> // personDAO.insertPersonUseExecute(p2);<br /> // //使用jdbcTemplate批處理方式<br /> // personDAO.updatePersonUseBatchUpdate(persons);</p><p> //使用RowCallbackHandler執行一次查詢,並列印person資訊<br /> System.out.println(personDAO.getPersonByRowCallbackHandler("test1"));<br /> }</p><p>}</p><p> 

運行結果:

test1-test1-test1

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.