有待改进-------spring配置数据源写的DAO

 1。我需要一个有关存取图书(书名 出版年月) 的系统

public class Book {
 
 private int pbYear;
 private String name;
 
 
 public void setPbYear(int pbYear)
 {
  this.pbYear=pbYear;
 }
 
 public void setName(String name)
 {
  this.name=name;
 }
 
 
 
 
 public int getPbYear()
 {
  return pbYear;
 }
 
 public String getName()
 {
  return name;
 }
 

}

 

2。访问图书的DAO接口:
package com.yinbodotcc;
import java.util.*;

public interface IBookDao {
 public List<Book> select(String name);
 public void insertBook(Book book);

}

 

3。具体DAO实现


package com.yinbodotcc;

import java.util.*;
import javax.sql.DataSource;

import java.sql.*;

public class BookDao implements IBookDao{
 private DataSource ds;
 public void setDs(DataSource ds)
 {
  this.ds=ds;
 }
 public List<Book> select(String name)
 {
  Connection con=null;
  Statement st=null;
  List<Book> books=new ArrayList<Book>();
  try
  {
   String sql="select * from book where name='"+name+"'";
   con=ds.getConnection();
   st=con.createStatement();
   ResultSet rs=st.executeQuery(sql);
   while(rs.next())
   {
    Book b=new Book();
    b.setName(rs.getString("name"));
    b.setPbYear(rs.getInt("PbYear"));
    books.add(b);
    System.out.println("又找到一个");
    
   }
   return books;
   
   
  }
  catch(SQLException e)
  {
   e.printStackTrace();
  }
  finally
  {
   if(con!=null)
   {
    try{
     con.close();
    }
    catch(Exception e)
    {
     e.printStackTrace();
    }
   }
   if(st!=null)
   {
    try{
     st.close();
    }
    catch(Exception e)
    {
     e.printStackTrace();
    }
   }
   
  }
  return null;
  
 }
 public void insertBook(Book book)
 {
  Connection con=null;
  Statement st=null;
  try
  {
   String sql="insert into book(name,pbYear) values('"+book.getName()+"',"+book.getPbYear()+")";
   con=ds.getConnection();
   st=con.createStatement();
   st.execute(sql);
   
  }
  catch(SQLException e)
  {
   e.printStackTrace();
  }
  finally
  {
   if(con!=null)
   {
    try{
     con.close();
    }
    catch(Exception e)
    {
     e.printStackTrace();
    }
   }
   if(st!=null)
   {
    try{
     st.close();
    }
    catch(Exception e)
    {
     e.printStackTrace();
    }
   }
   
  }
 }

}

4。配置文件
<?xml version="1.0" encoding="GBK"?>
<!DOCTYPE beans PUBLIC "-//SPRING/DTD BEAN/EN"
 "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id="datasource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">

<!--如果把上面一行换为下面这个,就能用连接池了,且程序需用修改。推荐使用-->
<!--bean id="datasource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"-->

 <property name="driverClassName">
  <value>com.mysql.jdbc.Driver</value>
 </property>
 
 <property name="url">
  <value>jdbc:mysql://localhost:3306/yay</value>
 </property>
 
 <property name="username">
  <value>root</value>
 </property>
 
 <property name="password">
  <value>qwe123</value>
 </property>
</bean>

<bean id="bookDao" class="com.yinbodotcc.BookDao">
 <property name="ds">
  <ref bean="datasource"/>
 </property>
</bean>
</beans>

5。数据库的建立,
create database yay:
然后source一个脚本文件:

create table book
(
id int(5) auto_increment primary key,
 name varchar(40) not null,
 pbYear int(8)
)

注意:       delete from book where id between 2 and 9;这句可能能帮助你重复试验,也减小数据库数据量。

 

6。测试用例:
package com.yinbodotcc;
import java.util.*;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;

public class Test {
 public static void main(String[]args)
 {
  Book book1=new Book();
  book1.setName("Thinking in Java");
  book1.setPbYear(20060808);
  
  Book book2=new Book();
  book2.setName("Advanced Java game programming");
  book2.setPbYear(20061008);
  
  Book book3=new Book();
  book3.setName("Advanced Java game programming");
  book3.setPbYear(20050808);
  
  ApplicationContext ac=new FileSystemXmlApplicationContext("spring-config.xml");
  IBookDao ib=(IBookDao)ac.getBean("bookDao");
   
  ib.insertBook(book1);
  ib.insertBook(book2);
  ib.insertBook(book3);
  
  List<Book> list=ib.select("Advanced Java game programming");
  for(Book book:list)
   System.out.println(book.getName()+":"+book.getPbYear());
  
 }

}

完成,呵呵,但是还是比较麻烦,于是我决定在下一课开始改进。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值