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());
}
}
完成,呵呵,但是还是比较麻烦,于是我决定在下一课开始改进。