(由于忙于考研没有进行很好的测试,功能不够全,bug在所难免,望见谅)
LibraryManageSystem整体设计说明
LibraryManageSystem 使用了三层的架构:数据访问(Data acess)层、业务(business)层、视图(View)层。
数据访问层:使用JDBC来访问数据库,并对jdbc进行了简单的封装,使用Template mothod模式和回调接口大大减少了对jdbc的低级操作。其中JdbcTemplate类提供了使用jdbc访问数据库的模板,提供了queryForObject和queryForList方法来分别获取查询到的对象和对象的聚集,execute方法来更新、插入、删除操作。提供了RowCallBackHandler接口,可以通过实现该接口来提供对查询一行的回调处理,使用PreparedStatementCallBack回调接口,来提供对PreparedStatement参数的设置,提供了ORMaping接口,通过实现该接口可以很容易实现关系数据库与domain对象的映射,并产生可重用的逻辑。使用Dao模式和AbstractFactory模式对数据访问层进行封装,可以轻易实现数据库间的移植。
业务层:业务层实现了LibraryManageSystem的各项服务,通过业务层使得视图(View)层不依赖于具体的数据访问(Data acess)层的实现。
View层:对MVC进行了清晰地划分。领域对象作为Model,使用java Swing实现了view,
使用ActionLisenter和Controller来实现controller。Controller接口使用命令模式,通过实现该接口来封装对业务的执行并获取执行的结果。真正的控制器其实是ActionLisenter,通过它来监听事件的发生,并分发对命令,并将该命令封装成Controller的某个实现类的对象,执行业务方法,获取执行结果,并将结果显示在view上。
LibraryManageSystem是一个松耦合的系统,并且可以使得数据访问(Data acess)层、业务(business)层可以轻易的被重用与替换,可以使用其他的view技术(如jsp)来复用这两层。提供了对jdbc进行的简单的封装的基础设施,可以在其他项目中重用并扩展。
源码如下:
对jdbc进行封装的部分:
//
JdbcTemplate.java
package edu.jlu.fuliang.library.jdbc;
import java.util.ArrayList;
import java.util.List;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class JdbcTemplate {
public List query(String sql,RowCallBackHandler handler){
Connection connection = JdbcUtils.createConnection();
PreparedStatement ps = JdbcUtils.createPreparedStatement(sql,connection);
ResultSet rs = null ;
List list = new ArrayList();
try {
rs = ps.executeQuery();
while (rs.next()){
list.add(handler.processRow(rs));
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
JdbcUtils.closeStatement(ps);
JdbcUtils.relaseConnection(connection);
}
return list;
}
public Object queryForObject(String sql,RowCallBackHandler handler){
Connection connection = JdbcUtils.createConnection();
PreparedStatement ps = JdbcUtils.createPreparedStatement(sql,connection);
ResultSet rs = null ;
Object o = null ;
try {
rs = ps.executeQuery();
rs.next();
o = handler.processRow(rs);
} catch (SQLException e) {
e.printStackTrace();
} finally {
JdbcUtils.closeStatement(ps);
JdbcUtils.relaseConnection(connection);
}
return o;
}
public void executeUpdate(String sql,PreparedStatementCallBack pareparedStatementCallBack){
Connection connection = JdbcUtils.createConnection();
PreparedStatement ps = JdbcUtils.createPreparedStatement(sql,connection);
try {
pareparedStatementCallBack.doInStatement(ps);
ps.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
} finally {
JdbcUtils.closeStatement(ps);
JdbcUtils.relaseConnection(connection);
}
}
}
// 回调接口RowCallBackHandler
package edu.jlu.fuliang.library.jdbc;
import java.sql.ResultSet;
public interface RowCallBackHandler {
public Object processRow(ResultSet rs);
}
// /回调接口PreparedStatementCallBack
package edu.jlu.fuliang.library.jdbc;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public interface PreparedStatementCallBack {
public void doInStatement(PreparedStatement stmt) throws SQLException;
}
// ORMaping接口
package edu.jlu.fuliang.library.jdbc;
import java.sql.ResultSet;
public interface ORMaping {
public Object mapping(ResultSet rs,Object o);
}
// JdbcUtils.java
package edu.jlu.fuliang.library.jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.sql.Statement;
public class JdbcUtils {
public static Connection createConnection(){ // 为了简单,进行了硬编码
String user = " root " ;
String passwd = " 123456 " ;
String url = " jdbc:mysql://localhost/test?useUnicode=true&characterEncoding=gb2312 " ;
Connection connection = null ;
try {
Class.forName( " com.mysql.jdbc.Driver " ).newInstance();
connection = DriverManager.getConnection(url,user,passwd);
}
catch (Exception e){
e.printStackTrace();
}
return connection;
}
public static PreparedStatement createPreparedStatement(String sql,Connection connection){
PreparedStatement stmt = null ;
try {
stmt = connection.prepareStatement(sql);
} catch (Exception e){
e.printStackTrace();
}
return stmt;
}
public static void closeStatement(Statement s){
try {
s.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
public static void relaseConnection(Connection connection){
try {
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
// 以下是数据访问对象:
// BorrowerDao.java
package edu.jlu.fuliang.library.dao;
import edu.jlu.fuliang.library.domain.Borrower;
public interface BorrowerDao {
public Borrower queryByLastName(String lastName);
public void updateBorrower(Borrower borrower);
public void insertBorrower(Borrower borrower);
public void deleteBorrowerByLastName(String lastName);
}
// BookDao.java
package edu.jlu.fuliang.library.dao;
import java.util.List;
import edu.jlu.fuliang.library.domain.Book;
public interface BookDao {
public Book queryByTitle(String title);
public List queryByAuthor(String author);
public List queryByBorrowerLastName(String firstName);
public void updateBook(Book book);
public void insertBook(Book book);
public void deleteBookByTile(String title);
}
// BorrowOrReturnDao.java
package edu.jlu.fuliang.library.dao;
public interface BorrowOrReturnDao {
public void borrowBook(String borrowerLastName,String bookTile);
public void returnBook(String borrowerLastName,String bookTile);
}
// 抽象工厂:
package edu.jlu.fuliang.library.dao;
public interface DaoFactory {
public BookDao createBookDao();
public BorrowerDao createBorrowerDao();
public BorrowOrReturnDao createBorrowOrReturnDao();
}
// 具体工厂:
package edu.jlu.fuliang.library.dao;
import edu.jlu.fuliang.library.dao.mysql.BookDaoImpl;
import edu.jlu.fuliang.library.dao.mysql.BorrowerDaoImpl;
public class MysqlDaoFactory implements DaoFactory{
public BookDao createBookDao() {
return new BookDaoImpl();
}
public BorrowerDao createBorrowerDao() {
return new BorrowerDaoImpl();
}
public BorrowOrReturnDao createBorrowOrReturnDao() {
return new BorrowOrReturnDaoImpl();
}
}
// BookDao的具体实现:
// BookDaoImpl.java
package edu.jlu.fuliang.library.dao.mysql;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;
import edu.jlu.fuliang.library.dao.BookDao;
import edu.jlu.fuliang.library.domain.Book;
import edu.jlu.fuliang.library.jdbc. * ;
public class BookDaoImpl implements BookDao{
private JdbcTemplate jdbcTemplate = new JdbcTemplate();
public Book queryByTitle(String title) {
String sql = " select * from book where title = " + title;
return (Book)jdbcTemplate.queryForObject(sql, new RowCallBackHandler(){
public Object processRow(ResultSet rs) {
BookMaping map = new BookMaping();
Book book = (Book)map.mapping(rs, new Book());
return book;
}
});
}
public List queryByAuthor(String author) {
String sql = " select * from book where author = " + author;
return jdbcTemplate.query(sql, new RowCallBackHandler(){
public Object processRow(ResultSet rs) {
BookMaping map = new BookMaping();
Book book = (Book)map.mapping(rs, new Book());
return book;
}
});
}
// Borrower的具体实现:
// BookDaoImpl.java
package edu.jlu.fuliang.library.dao.mysql;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import edu.jlu.fuliang.library.dao.BorrowerDao;
import edu.jlu.fuliang.library.domain.Borrower;
import edu.jlu.fuliang.library.jdbc.JdbcTemplate;
import edu.jlu.fuliang.library.jdbc.PreparedStatementCallBack;
import edu.jlu.fuliang.library.jdbc.RowCallBackHandler;
public class BorrowerDaoImpl implements BorrowerDao{
private JdbcTemplate jdbcTemplate = new JdbcTemplate();
public Borrower queryByLastName(String lastName) {
String sql = " select * from borrower where lastName = " + lastName;
return (Borrower)jdbcTemplate.queryForObject(sql, new RowCallBackHandler(){
public Object processRow(ResultSet rs) {
BorrowerMaping borrowerMaping = new BorrowerMaping();
return borrowerMaping.mapping(rs, new Borrower());
}
});
}
public void updateBorrower( final Borrower borrower) {
String sql = " update borrower set lastname = ?,firstname=? " +
" ,address =?,city =?,zip=?,state=? where lastname = ? " ;
jdbcTemplate.executeUpdate(sql, new PreparedStatementCallBack(){
public void doInStatement(PreparedStatement stmt) throws SQLException {
stmt.setString( 1 ,borrower.getLastName());
stmt.setString( 2 ,borrower.getFirstName());
stmt.setString( 3 ,borrower.getAddress());
stmt.setString( 4 ,borrower.getCity());
stmt.setString( 5 ,borrower.getZip());
stmt.setString( 6 ,borrower.getState());
stmt.setString( 7 ,borrower.getLastName());
}
});
}
public void insertBorrower( final Borrower borrower) {
String sql = " insert into borrower values(?,?,?,?,?,?) " ;
jdbcTemplate.executeUpdate(sql, new PreparedStatementCallBack(){
public void doInStatement(PreparedStatement stmt) throws SQLException {
stmt.setString( 1 ,borrower.getLastName());
stmt.setString( 2 ,borrower.getFirstName());
stmt.setString( 3 ,borrower.getAddress());
stmt.setString( 4 ,borrower.getCity());
stmt.setString( 5 ,borrower.getZip());
stmt.setString( 6 ,borrower.getState());
}
});
}
public void deleteBorrowerByLastName( final String lastName) {
String sql = " delete from borrower where lastName = ? " ;
jdbcTemplate.executeUpdate(sql, new PreparedStatementCallBack(){
public void doInStatement(PreparedStatement stmt) throws SQLException {
stmt.setString( 1 ,lastName);
}
});
}
}
// BorrowOrReturnDaoImpl.java
package edu.jlu.fuliang.library.dao.mysql;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import edu.jlu.fuliang.library.dao.BorrowOrReturnDao;
import edu.jlu.fuliang.library.jdbc.JdbcTemplate;
import edu.jlu.fuliang.library.jdbc.PreparedStatementCallBack;
public class BorrowOrReturnDaoImpl implements BorrowOrReturnDao{
private JdbcTemplate jdbcTemplate = new JdbcTemplate();
public void borrowBook( final String borrowerLastName, final String bookTitle) {
String sql = " insert into book_borrower values(?,?) " ;
jdbcTemplate.executeUpdate(sql, new PreparedStatementCallBack(){
public void doInStatement(PreparedStatement stmt) {
try {
stmt.setString( 1 ,borrowerLastName);
stmt.setString( 2 ,bookTitle);
} catch (SQLException e){
e.printStackTrace();
}
}
});
}
public void returnBook( final String borrowerLastName, final String bookTitle) {
String sql = " delete from book_borrower where lastname = ?,title = ? " ;
jdbcTemplate.executeUpdate(sql, new PreparedStatementCallBack(){
public void doInStatement(PreparedStatement stmt) {
try {
stmt.setString( 1 ,borrowerLastName);
stmt.setString( 2 ,bookTitle);
} catch (SQLException e){
e.printStackTrace();
}
}
});
}
}
// book的ORMaping的实现:
// BookMaping.java
package edu.jlu.fuliang.library.dao.mysql;
import java.sql.ResultSet;
import java.sql.SQLException;
import edu.jlu.fuliang.library.domain.Book;
import edu.jlu.fuliang.library.jdbc.ORMaping;
public class BookMaping implements ORMaping{
public Object mapping(ResultSet rs, Object o) {
Book book = (Book)o;
try {
book.setTitleName(rs.getString( " titleName " ));
book.setAuthor(rs.getString( " author " ));
book.setISBN(rs.getString( " isbn " ));
book.setType(rs.getInt( " type " ));
book.setItemsAvailable(rs.getInt( " itemAvailable " ));
} catch (SQLException e) {
e.printStackTrace();
}
return book;
}
}
borrower的ORMaping的实现:
// BorrowerMaping.java
package edu.jlu.fuliang.library.dao.mysql;
import java.sql.ResultSet;
import java.sql.SQLException;
import edu.jlu.fuliang.library.domain.Borrower;
import edu.jlu.fuliang.library.jdbc.ORMaping;
public class BorrowerMaping implements ORMaping{
public Object mapping(ResultSet rs, Object o) {
Borrower borrower = (Borrower)o;
try {
borrower.setLastName(rs.getString( 1 ));
borrower.setFirstName(rs.getString( 2 ));
borrower.setAddress(rs.getString( 3 ));
borrower.setCity(rs.getString( 4 ));
borrower.setZip(rs.getString( 5 ));
borrower.setState(rs.getString( 6 ));
} catch (SQLException e) {
e.printStackTrace();
}
return borrower;
}
}
// 业务层:
// Service接口
// Service.java
package edu.jlu.fuliang.library.service;
import java.util.List;
import edu.jlu.fuliang.library.domain.Book;
import edu.jlu.fuliang.library.domain.Borrower;
public interface Service {
public Book queryBookByTitle(String title);
public List queryBookByAuthor(String author);
public List queryBookByBorrowerLastName(String firstName);
public void updateBook(Book book);
public void insertBook(Book book);
public void deleteBookByTile(String title);
public Borrower queryBorrowerByLastName(String lastName);
public void updateBorrower(Borrower borrower);
public void insertBorrower(Borrower borrower);
public void deleteBorrowerByLastName(String lastName);
public void borrowBook(String borrowerLastName,String bookTitle);
public void returnBook(String borrowerLastName,String bookTitle);
}
// Service的具体实现
// LibraryService.java
package edu.jlu.fuliang.library.service;
import java.util.List;
import edu.jlu.fuliang.library.dao.BookDao;
import edu.jlu.fuliang.library.dao.BorrowOrReturnDao;
import edu.jlu.fuliang.library.dao.BorrowerDao;
import edu.jlu.fuliang.library.dao.DaoFactory;
import edu.jlu.fuliang.library.dao.MysqlDaoFactory;
import edu.jlu.fuliang.library.domain.Book;
import edu.jlu.fuliang.library.domain.Borrower;
public class LibraryService implements Service{
private BookDao bookDao;
private BorrowerDao borrowerDao;
private BorrowOrReturnDao borrowOrReturnDao;
public LibraryService(){
DaoFactory daoFactory = new MysqlDaoFactory();
bookDao = daoFactory.createBookDao();
borrowerDao = daoFactory.createBorrowerDao();
borrowOrReturnDao = daoFactory.createBorrowOrReturnDao();
}
public Book queryBookByTitle(String title) {
return bookDao.queryByTitle(title);
}
public List queryBookByAuthor(String author) {
return bookDao.queryByAuthor(author);
}
public List queryBookByBorrowerLastName(String firstName) {
return bookDao.queryByBorrowerLastName(firstName);
}
public void updateBook(Book book) {
bookDao.updateBook(book);
}
public void insertBook(Book book) {
bookDao.insertBook(book);
}
public void deleteBookByTile(String title) {
bookDao.deleteBookByTile(title);
}
public Borrower queryBorrowerByLastName(String lastName) {
return borrowerDao.queryByLastName(lastName);
}
public void updateBorrower(Borrower borrower) {
borrowerDao.updateBorrower(borrower);
}
public void insertBorrower(Borrower borrower) {
borrowerDao.insertBorrower(borrower);
}
public void deleteBorrowerByLastName(String lastName) {
borrowerDao.deleteBorrowerByLastName(lastName);
}
public void borrowBook(String borrowerLastName, String bookTitle) {
borrowOrReturnDao.borrowBook(borrowerLastName,bookTitle);
}
public void returnBook(String borrowerLastName, String bookTitle) {
borrowOrReturnDao.returnBook(borrowerLastName,bookTitle);
}
}
// view层:
// 主界面:
package edu.jlu.fuliang.library.view;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
public class LibraryMainFrame extends JFrame{
private JPanel myPanel = new MyPanel();
private JMenu functionMenu,infoMenu,maintenanceMenu;
private JMenuItem lendMenuItem,returnMenuItem;
private JMenuItem titleMenuItem,borrowerMenuItem,browseAllMenuItem;
private JMenuItem insertBookMenuItem,updateBookMenuItem;
private JMenuItem insertBorrowerMenuItem,updateBorrowerMenuItem;
public LibraryMainFrame(){
functionMenu = new JMenu( " Function " );
infoMenu = new JMenu( " Inforation " );
maintenanceMenu = new JMenu( " Maintenance " );
lendMenuItem = new JMenuItem( " Lend items... " );
returnMenuItem = new JMenuItem( " Return items... " );
functionMenu.add(lendMenuItem);
functionMenu.add(returnMenuItem);
titleMenuItem = new JMenuItem( " Search book... " );
borrowerMenuItem = new JMenuItem( " Search Borrower... " );
browseAllMenuItem = new JMenuItem( " Browse All... " );
infoMenu.add(titleMenuItem);
infoMenu.add(borrowerMenuItem);
infoMenu.add(browseAllMenuItem);
insertBookMenuItem = new JMenuItem( " Insert Title... " );
updateBookMenuItem = new JMenuItem( " Update Item... " );
insertBorrowerMenuItem = new JMenuItem( " Insert Borrower... " );
updateBorrowerMenuItem = new JMenuItem( " Update Borrower... " );
maintenanceMenu.add(insertBookMenuItem);
maintenanceMenu.add(updateBookMenuItem);
maintenanceMenu.add(insertBorrowerMenuItem);
maintenanceMenu.add(updateBorrowerMenuItem);
JMenuBar menuBar = new JMenuBar();
menuBar.add(functionMenu);
menuBar.add(infoMenu);
menuBar.add(maintenanceMenu);
setJMenuBar(menuBar);
add(myPanel);
setSize( 300 , 300 );
setVisible( true );
lendMenuItem.addActionListener( new ActionListener(){
public void actionPerformed(ActionEvent e) {
new BorrowDialog(LibraryMainFrame. this , " Lend book " , true );
}
});
returnMenuItem.addActionListener( new ActionListener(){
public void actionPerformed(ActionEvent e) {
new ReturnDialog(LibraryMainFrame. this , " Return book " , true );
}
});
titleMenuItem.addActionListener( new ActionListener(){
public void actionPerformed(ActionEvent e) {
new SearchBookDialog(LibraryMainFrame. this , " Search book " , true );
}
});
borrowerMenuItem.addActionListener( new ActionListener(){
public void actionPerformed(ActionEvent e) {
new BorrowerInformationDialog(LibraryMainFrame. this , " Borrower Information " , true );
}
});
browseAllMenuItem.addActionListener( new ActionListener(){
public void actionPerformed(ActionEvent e) {
}
});
insertBookMenuItem.addActionListener( new ActionListener(){
public void actionPerformed(ActionEvent e) {
new InsertBookDialog(LibraryMainFrame. this , " Insert book dialog " , true );
}
});
updateBookMenuItem.addActionListener( new ActionListener(){
public void actionPerformed(ActionEvent e) {
new UpdateBookDialog(LibraryMainFrame. this , " Update book dialog " , true );
}
});
insertBorrowerMenuItem.addActionListener( new ActionListener(){
public void actionPerformed(ActionEvent e) {
new InsertBorrowerDialog(LibraryMainFrame. this , " Insert borrower dialog " , true );
}
});
updateBorrowerMenuItem.addActionListener( new ActionListener(){
public void actionPerformed(ActionEvent e) {
new UpdateBorrowerDialog(LibraryMainFrame. this , " Update borrower dialog " , true );
}
});
}
private class MyPanel extends JPanel{
public void paint(Graphics g){
g.setColor(Color.green);
g.drawString( " Welcome to Library System! " , 40 , 40 );
}
}
public static void main(String []args){
LibraryMainFrame mainFrame = new LibraryMainFrame();
mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
package edu.jlu.fuliang.library.view;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import edu.jlu.fuliang.library.controller.InsertBorrowerController;
import edu.jlu.fuliang.library.domain.Borrower;
public class InsertBorrowerDialog extends JDialog{
JTextField lastNameField;
JTextField firstNameField;
JTextField addressField;
JTextField cityField;
JTextField zipField;
JTextField stateField;
JButton addButton,exitButton;
public InsertBorrowerDialog(JFrame f,String s, boolean b){
JPanel panel = new JPanel();
panel.setLayout( new GridLayout( 7 , 2 ));
panel.add( new JLabel( " Last Name: " ));
lastNameField = new JTextField( 10 );
panel.add(lastNameField);
firstNameField = new JTextField( 10 );
panel.add( new JLabel( " First Name: " ));
panel.add(firstNameField);
addressField = new JTextField( 10 );
panel.add( new JLabel( " Address: " ));
panel.add(addressField);
cityField = new JTextField( 10 );
panel.add( new JLabel( " City: " ));
panel.add(cityField);
zipField = new JTextField( 5 );
panel.add( new JLabel( " Zip: " ));
panel.add(zipField);
stateField = new JTextField( 5 );
panel.add( new JLabel( " State: " ));
panel.add(stateField);
addButton = new JButton( " Add " );
exitButton = new JButton( " Exit " );
panel.add(addButton);
panel.add(exitButton);
add(panel);
this .setSize( 200 , 200 );
this .setVisible( true );
addButton.addActionListener( new ActionListener(){
public void actionPerformed(ActionEvent e) {
Borrower borrower = new Borrower();
borrower.setLastName(lastNameField.getText());
borrower.setFirstName(firstNameField.getText());
borrower.setAddress(addressField.getText());
borrower.setCity(cityField.getText());
borrower.setZip(zipField.getText());
borrower.setState(stateField.getText());
InsertBorrowerController controller = new InsertBorrowerController();
controller.execute(borrower);
}
});
exitButton.addActionListener( new ActionListener(){
public void actionPerformed(ActionEvent e) {
InsertBorrowerDialog. this .setVisible( false );
}
});
}
}
// InsertBookDialog.java
// package edu.jlu.fuliang.library.view;
import javax.swing. * ;
import edu.jlu.fuliang.library.controller.InsertBookController;
import edu.jlu.fuliang.library.domain.Book;
import java.awt. * ;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class InsertBookDialog extends JDialog{
private JTextField titleNameField,authorField,iSBNField;
private JTextField typeField,itemAvailableField;
private JButton addButton , exitButton;
public InsertBookDialog(JFrame f,String s, boolean b){
JPanel panel = new JPanel();
panel.setLayout( new GridLayout( 6 , 2 ));
panel.add( new JLabel( " Tile: " ));
titleNameField = new JTextField();
panel.add(titleNameField);
panel.add( new JLabel( " Author: " ));
authorField = new JTextField();
panel.add(authorField);
panel.add( new JLabel( " ISBN: " ));
iSBNField = new JTextField();
panel.add(iSBNField);
panel.add( new JLabel( " Type: " ));
typeField = new JTextField();
panel.add(typeField);
panel.add( new JLabel( " Item available: " ));
itemAvailableField = new JTextField();
panel.add(itemAvailableField);
addButton = new JButton( " Add " );
exitButton = new JButton( " Exit " );
panel.add(addButton);
panel.add(exitButton);
add(panel);
setSize( 200 , 200 );
setVisible( true );
addButton.addActionListener( new ActionListener(){
public void actionPerformed(ActionEvent e) {
Book book = new Book();
book.setTitleName(titleNameField.getText());
book.setAuthor(authorField.getText());
book.setISBN(iSBNField.getText());
book.setType(Integer.parseInt(typeField.getText()));
book.setItemsAvailable(Integer.parseInt(itemAvailableField.getText()));
InsertBookController controller = new InsertBookController();
controller.execute(book);
}
});
exitButton.addActionListener( new ActionListener(){
public void actionPerformed(ActionEvent event){
InsertBookDialog. this .setVisible( false );
}
});
}
}
// UpdateBookDialog.java
package edu.jlu.fuliang.library.view;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import edu.jlu.fuliang.library.controller.UpdateBookController;
import edu.jlu.fuliang.library.domain.Book;
public class UpdateBookDialog extends JDialog{
private JTextField titleNameField,authorField,iSBNField;
private JTextField typeField,itemAvailableField;
private JButton updateButton , exitButton;
public UpdateBookDialog(JFrame f,String s, boolean b){
JPanel panel = new JPanel();
panel.setLayout( new GridLayout( 6 , 2 ));
panel.add( new JLabel( " Tile: " ));
titleNameField = new JTextField();
panel.add(titleNameField);
panel.add( new JLabel( " Author: " ));
authorField = new JTextField();
panel.add(authorField);
panel.add( new JLabel( " ISBN: " ));
iSBNField = new JTextField();
panel.add(iSBNField);
panel.add( new JLabel( " Type: " ));
typeField = new JTextField();
panel.add(typeField);
panel.add( new JLabel( " Item available: " ));
itemAvailableField = new JTextField();
panel.add(itemAvailableField);
updateButton = new JButton( " Update: " );
exitButton = new JButton( " Exit " );
panel.add(updateButton);
panel.add(exitButton);
add(panel);
setSize( 200 , 200 );
setVisible( true );
updateButton.addActionListener( new ActionListener(){
public void actionPerformed(ActionEvent e) {
Book book = new Book();
book.setTitleName(titleNameField.getText());
book.setAuthor(authorField.getText());
book.setISBN(iSBNField.getText());
book.setType(Integer.parseInt(typeField.getText()));
book.setItemsAvailable(Integer.parseInt(itemAvailableField.getText()));
UpdateBookController controller = new UpdateBookController();
controller.execute(book);
}
});
exitButton.addActionListener( new ActionListener(){
public void actionPerformed(ActionEvent event){
UpdateBookDialog. this .setVisible( false );
}
});
}
}
// UpdateBorrowerDialog.java
package edu.jlu.fuliang.library.view;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import edu.jlu.fuliang.library.controller.InsertBorrowerController;
import edu.jlu.fuliang.library.controller.UpdateBorrowerController;
import edu.jlu.fuliang.library.domain.Borrower;
public class UpdateBorrowerDialog extends JDialog{
private JTextField lastNameField;
private JTextField firstNameField;
private JTextField addressField;
private JTextField cityField;
private JTextField zipField;
private JTextField stateField;
JButton updateButton,exitButton;
public UpdateBorrowerDialog(JFrame f,String s, boolean b){
JPanel panel = new JPanel();
panel.setLayout( new GridLayout( 7 , 2 ));
panel.add( new JLabel( " Last Name: " ));
lastNameField = new JTextField( 10 );
panel.add(lastNameField);
firstNameField = new JTextField( 10 );
panel.add( new JLabel( " First Name: " ));
panel.add(firstNameField);
addressField = new JTextField( 10 );
panel.add( new JLabel( " Address: " ));
panel.add(addressField);
cityField = new JTextField( 10 );
panel.add( new JLabel( " City: " ));
panel.add(cityField);
zipField = new JTextField( 5 );
panel.add( new JLabel( " Zip: " ));
panel.add(zipField);
stateField = new JTextField( 5 );
panel.add( new JLabel( " State: " ));
panel.add(stateField);
updateButton = new JButton( " Update " );
exitButton = new JButton( " Exit " );
panel.add(updateButton);
panel.add(exitButton);
add(panel);
this .setSize( 200 , 200 );
this .setVisible( true );
updateButton.addActionListener( new ActionListener(){
public void actionPerformed(ActionEvent e) {
Borrower borrower = new Borrower();
borrower.setLastName(lastNameField.getText());
borrower.setFirstName(firstNameField.getText());
borrower.setAddress(addressField.getText());
borrower.setCity(cityField.getText());
borrower.setZip(zipField.getText());
borrower.setState(stateField.getText());
UpdateBorrowerController controller = new UpdateBorrowerController();
controller.execute(borrower);
}
});
exitButton.addActionListener( new ActionListener(){
public void actionPerformed(ActionEvent e) {
UpdateBorrowerDialog. this .setVisible( false );
}
});
}
}
// SearchBookDialog.java
package edu.jlu.fuliang.library.view;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Map;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import edu.jlu.fuliang.library.controller.QueryBookInfoController;
import edu.jlu.fuliang.library.domain.Book;
public class SearchBookDialog extends JDialog{
private JTextField titleNameField,authorField,iSBNField;
private JTextField typeField,itemAvailableField;
private JButton searchButton , exitButton;
public SearchBookDialog(JFrame f,String s, boolean b){
JPanel panel = new JPanel();
panel.setLayout( new GridLayout( 6 , 2 ));
panel.add( new JLabel( " Tile: " ));
titleNameField = new JTextField();
panel.add(titleNameField);
panel.add( new JLabel( " Author: " ));
authorField = new JTextField();
authorField.setEditable( false );
panel.add(authorField);
panel.add( new JLabel( " ISBN: " ));
iSBNField = new JTextField();
iSBNField.setEditable( false );
panel.add(iSBNField);
panel.add( new JLabel( " Type: " ));
typeField = new JTextField();
typeField.setEditable( false );
panel.add(typeField);
panel.add( new JLabel( " Item available: " ));
itemAvailableField = new JTextField();
itemAvailableField.setEditable( false );
panel.add(itemAvailableField);
searchButton = new JButton( " Search " );
exitButton = new JButton( " Exit " );
panel.add(searchButton);
panel.add(exitButton);
add(panel);
setSize( 200 , 200 );
setVisible( true );
searchButton.addActionListener( new ActionListener(){
public void actionPerformed(ActionEvent e) {
String titleName = titleNameField.getText();
QueryBookInfoController controller = new QueryBookInfoController();
Map map = controller.execute(titleName);
Book book = (Book)map.get( " book " );
authorField.setText(book.getAuthor());
iSBNField.setText(book.getISBN());
typeField.setText(String.valueOf(book.getType()));
itemAvailableField.setText(String.valueOf(book.getItemsAvailable()));
}
});
exitButton.addActionListener( new ActionListener(){
public void actionPerformed(ActionEvent event){
SearchBookDialog. this .setVisible( false );
}
});
}
}
// BorrowDialog.java
package edu.jlu.fuliang.library.view;
import javax.swing. * ;
import edu.jlu.fuliang.library.controller.BorrowController;
import java.awt. * ;
import java.awt.event. * ;
import java.util. * ;
import java.util.List;
public class BorrowDialog extends JDialog{
private JTextField borrowerLastNameField,bookTitleField;
private JButton borrowButton,exitButton;
public BorrowDialog(JFrame frame,String title, boolean b){
borrowerLastNameField = new JTextField();
bookTitleField = new JTextField();
borrowButton = new JButton( " Borrow " );
exitButton = new JButton( " Exit " );
JPanel panel = new JPanel();
panel.setLayout( new GridLayout( 3 , 2 ));
panel.add( new JLabel( " Borrower Last Name: " ));
panel.add(borrowerLastNameField);
panel.add( new JLabel( " Book title: " ));
panel.add(bookTitleField);
panel.add(borrowButton);
panel.add(exitButton);
add(panel);
setSize( 250 , 100 );
setVisible( true );
borrowButton.addActionListener( new ActionListener(){
public void actionPerformed(ActionEvent e) {
String borrowerLastName = borrowerLastNameField.getText();
String bookTitle = bookTitleField.getText();
BorrowController controller = new BorrowController();
List list = new ArrayList( 2 );
list.add(borrowerLastName);
list.add(bookTitle);
controller.execute(list);
}
});
exitButton.addActionListener( new ActionListener(){
public void actionPerformed(ActionEvent e) {
BorrowDialog. this .setVisible( false );
}
});
}
}
// ReturnDialog.java
package edu.jlu.fuliang.library.view;
import java.awt.GridLayout;
import java.util.ArrayList;
import java.util.List;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing. * ;
import edu.jlu.fuliang.library.controller.ReturnController;
public class ReturnDialog extends JDialog{
private JTextField borrowerLastNameField,bookTitleField;
private JButton borrowButton,exitButton;
public ReturnDialog(JFrame frame,String title, boolean b){
borrowerLastNameField = new JTextField();
bookTitleField = new JTextField();
borrowButton = new JButton( " Borrow " );
exitButton = new JButton( " Exit " );
JPanel panel = new JPanel();
panel.setLayout( new GridLayout( 3 , 2 ));
panel.add( new JLabel( " Borrower Last Name: " ));
panel.add(borrowerLastNameField);
panel.add( new JLabel( " Book title: " ));
panel.add(bookTitleField);
panel.add(borrowButton);
panel.add(exitButton);
add(panel);
setSize( 250 , 100 );
setVisible( true );
borrowButton.addActionListener( new ActionListener(){
public void actionPerformed(ActionEvent e) {
String borrowerLastName = borrowerLastNameField.getText();
String bookTitle = bookTitleField.getText();
ReturnController controller = new ReturnController();
List list = new ArrayList( 2 );
list.add(borrowerLastName);
list.add(bookTitle);
controller.execute(list);
}
});
exitButton.addActionListener( new ActionListener(){
public void actionPerformed(ActionEvent e) {
ReturnDialog. this .setVisible( false );
}
});
}
}
// Controller:
// Controller接口
// Controller.java
package edu.jlu.fuliang.library.controller;
import java.util.Map;
public interface Controller{
public Map execute();
}
// FormController.java
package edu.jlu.fuliang.library.controller;
import java.util.Map;
public interface FormController {
public Map execute(Object o);
}
// InsertBookController.java
package edu.jlu.fuliang.library.controller;
import java.util.Map;
import edu.jlu.fuliang.library.domain.Book;
import edu.jlu.fuliang.library.service.LibraryService;
import edu.jlu.fuliang.library.service.Service;
public class InsertBookController {
private Service service = new LibraryService();
public Map execute(Object o) {
Book book = (Book)o;
service.insertBook(book);
return null ;
}
}
// QueryBookInfoController.java
package edu.jlu.fuliang.library.controller;
import java.util.HashMap;
import java.util.Map;
import edu.jlu.fuliang.library.domain.Book;
import edu.jlu.fuliang.library.service.LibraryService;
import edu.jlu.fuliang.library.service.Service;
public class QueryBookInfoController implements FormController{
private Service service = new LibraryService();
public Map execute(Object o){
String title = (String)o;
Book book = service.queryBookByTitle(title);
Map map = new HashMap();
map.put( " book " ,book);
return map;
}
}
// UpdateBookController.java
package edu.jlu.fuliang.library.controller;
import java.util.Map;
import edu.jlu.fuliang.library.domain.Book;
import edu.jlu.fuliang.library.service.LibraryService;
import edu.jlu.fuliang.library.service.Service;
public class UpdateBookController implements FormController{
private Service service = new LibraryService();
public Map execute(Object o){
Book book = (Book)o;
service.updateBook(book);
return null ;
}
}
// InsertBorrowerController.java
package edu.jlu.fuliang.library.controller;
import java.util.Map;
import edu.jlu.fuliang.library.domain.Borrower;
import edu.jlu.fuliang.library.service.LibraryService;
import edu.jlu.fuliang.library.service.Service;
public class InsertBorrowerController implements FormController{
private Service service = new LibraryService();
public Map execute(Object o) {
Borrower borrower = (Borrower)o;
service.insertBorrower(borrower);
return null ;
}
}
// QueryBorrowerController.java
package edu.jlu.fuliang.library.controller;
import java.util.HashMap;
import java.util.Map;
import edu.jlu.fuliang.library.domain.Borrower;
import edu.jlu.fuliang.library.service.LibraryService;
import edu.jlu.fuliang.library.service.Service;
public class QueryBorrowerController {
private Service service = new LibraryService();
public Map execute(Object o){
String lastName = (String)o;
Borrower brrower = service.queryBorrowerByLastName(lastName);
Map map = new HashMap();
map.put( " brrower " ,brrower);
return map;
}
}
// UpdateBorrowerController.java
package edu.jlu.fuliang.library.controller;
import java.util.Map;
import edu.jlu.fuliang.library.domain.Borrower;
import edu.jlu.fuliang.library.service.LibraryService;
import edu.jlu.fuliang.library.service.Service;
public class UpdateBorrowerController implements FromController{
private Service service = new LibraryService();
public Map execute(Object o){
Borrower borrower = (Borrower)o;
service.updateBorrower(borrower);
return null ;
}
}
// BorrowController.java
package edu.jlu.fuliang.library.controller;
import java.util. * ;
import edu.jlu.fuliang.library.service.LibraryService;
import edu.jlu.fuliang.library.service.Service;
public class BorrowController implements FormController{
private Service service = new LibraryService();
public Map execute(Object o) {
List list = (List)o;
String borrowerFirstName = (String) list.get( 0 );
String bookTitle = (String)list.get( 1 );
service.borrowBook(borrowerFirstName,bookTitle);
return null ;
}
}
// ReturnController.java
package edu.jlu.fuliang.library.controller;
import java.util.List;
import java.util.Map;
import edu.jlu.fuliang.library.service.LibraryService;
import edu.jlu.fuliang.library.service.Service;
public class ReturnController {
private Service service = new LibraryService();
public Map execute(Object o) {
List list = (List)o;
String borrowerFirstName = (String) list.get( 0 );
String bookTitle = (String)list.get( 1 );
service.returnBook(borrowerFirstName,bookTitle);
return null ;
}
}
// domain
// Book.java
package edu.jlu.fuliang.library.domain;
import java.util.List;
public class Book {
private String titleName;
private String author;
private String ISBN;
private int type;
private int itemsAvailable;
private List borrowers;
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this .author = author;
}
public String getISBN() {
return ISBN;
}
public void setISBN(String isbn) {
ISBN = isbn;
}
public int getItemsAvailable() {
return itemsAvailable;
}
public void setItemsAvailable( int itemsAvailable) {
this .itemsAvailable = itemsAvailable;
}
public String getTitleName() {
return titleName;
}
public void setTitleName(String titleName) {
this .titleName = titleName;
}
public int getType() {
return type;
}
public void setType( int type) {
this .type = type;
}
public List getBorrowers() {
return borrowers;
}
public void setBorrowers(List borrowers) {
this .borrowers = borrowers;
}
}
// Borrower.java
package edu.jlu.fuliang.library.domain;
import java.util.List;
public class Borrower {
private String lastName;
private String firstName;
private String address;
private String city;
private String zip;
private String state;
private List books;
public String getAddress() {
return address;
}
public void setAddress(String address) {
this .address = address;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this .city = city;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this .firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this .lastName = lastName;
}
public String getState() {
return state;
}
public void setState(String state) {
this .state = state;
}
public String getZip() {
return zip;
}
public void setZip(String zip) {
this .zip = zip;
}
public List getBooks() {
return books;
}
public void setBooks(List books) {
this .books = books;
}
}
package edu.jlu.fuliang.library.jdbc;
import java.util.ArrayList;
import java.util.List;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class JdbcTemplate {
public List query(String sql,RowCallBackHandler handler){
Connection connection = JdbcUtils.createConnection();
PreparedStatement ps = JdbcUtils.createPreparedStatement(sql,connection);
ResultSet rs = null ;
List list = new ArrayList();
try {
rs = ps.executeQuery();
while (rs.next()){
list.add(handler.processRow(rs));
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
JdbcUtils.closeStatement(ps);
JdbcUtils.relaseConnection(connection);
}
return list;
}
public Object queryForObject(String sql,RowCallBackHandler handler){
Connection connection = JdbcUtils.createConnection();
PreparedStatement ps = JdbcUtils.createPreparedStatement(sql,connection);
ResultSet rs = null ;
Object o = null ;
try {
rs = ps.executeQuery();
rs.next();
o = handler.processRow(rs);
} catch (SQLException e) {
e.printStackTrace();
} finally {
JdbcUtils.closeStatement(ps);
JdbcUtils.relaseConnection(connection);
}
return o;
}
public void executeUpdate(String sql,PreparedStatementCallBack pareparedStatementCallBack){
Connection connection = JdbcUtils.createConnection();
PreparedStatement ps = JdbcUtils.createPreparedStatement(sql,connection);
try {
pareparedStatementCallBack.doInStatement(ps);
ps.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
} finally {
JdbcUtils.closeStatement(ps);
JdbcUtils.relaseConnection(connection);
}
}
}
// 回调接口RowCallBackHandler
package edu.jlu.fuliang.library.jdbc;
import java.sql.ResultSet;
public interface RowCallBackHandler {
public Object processRow(ResultSet rs);
}
// /回调接口PreparedStatementCallBack
package edu.jlu.fuliang.library.jdbc;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public interface PreparedStatementCallBack {
public void doInStatement(PreparedStatement stmt) throws SQLException;
}
// ORMaping接口
package edu.jlu.fuliang.library.jdbc;
import java.sql.ResultSet;
public interface ORMaping {
public Object mapping(ResultSet rs,Object o);
}
// JdbcUtils.java
package edu.jlu.fuliang.library.jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.sql.Statement;
public class JdbcUtils {
public static Connection createConnection(){ // 为了简单,进行了硬编码
String user = " root " ;
String passwd = " 123456 " ;
String url = " jdbc:mysql://localhost/test?useUnicode=true&characterEncoding=gb2312 " ;
Connection connection = null ;
try {
Class.forName( " com.mysql.jdbc.Driver " ).newInstance();
connection = DriverManager.getConnection(url,user,passwd);
}
catch (Exception e){
e.printStackTrace();
}
return connection;
}
public static PreparedStatement createPreparedStatement(String sql,Connection connection){
PreparedStatement stmt = null ;
try {
stmt = connection.prepareStatement(sql);
} catch (Exception e){
e.printStackTrace();
}
return stmt;
}
public static void closeStatement(Statement s){
try {
s.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
public static void relaseConnection(Connection connection){
try {
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
// 以下是数据访问对象:
// BorrowerDao.java
package edu.jlu.fuliang.library.dao;
import edu.jlu.fuliang.library.domain.Borrower;
public interface BorrowerDao {
public Borrower queryByLastName(String lastName);
public void updateBorrower(Borrower borrower);
public void insertBorrower(Borrower borrower);
public void deleteBorrowerByLastName(String lastName);
}
// BookDao.java
package edu.jlu.fuliang.library.dao;
import java.util.List;
import edu.jlu.fuliang.library.domain.Book;
public interface BookDao {
public Book queryByTitle(String title);
public List queryByAuthor(String author);
public List queryByBorrowerLastName(String firstName);
public void updateBook(Book book);
public void insertBook(Book book);
public void deleteBookByTile(String title);
}
// BorrowOrReturnDao.java
package edu.jlu.fuliang.library.dao;
public interface BorrowOrReturnDao {
public void borrowBook(String borrowerLastName,String bookTile);
public void returnBook(String borrowerLastName,String bookTile);
}
// 抽象工厂:
package edu.jlu.fuliang.library.dao;
public interface DaoFactory {
public BookDao createBookDao();
public BorrowerDao createBorrowerDao();
public BorrowOrReturnDao createBorrowOrReturnDao();
}
// 具体工厂:
package edu.jlu.fuliang.library.dao;
import edu.jlu.fuliang.library.dao.mysql.BookDaoImpl;
import edu.jlu.fuliang.library.dao.mysql.BorrowerDaoImpl;
public class MysqlDaoFactory implements DaoFactory{
public BookDao createBookDao() {
return new BookDaoImpl();
}
public BorrowerDao createBorrowerDao() {
return new BorrowerDaoImpl();
}
public BorrowOrReturnDao createBorrowOrReturnDao() {
return new BorrowOrReturnDaoImpl();
}
}
// BookDao的具体实现:
// BookDaoImpl.java
package edu.jlu.fuliang.library.dao.mysql;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;
import edu.jlu.fuliang.library.dao.BookDao;
import edu.jlu.fuliang.library.domain.Book;
import edu.jlu.fuliang.library.jdbc. * ;
public class BookDaoImpl implements BookDao{
private JdbcTemplate jdbcTemplate = new JdbcTemplate();
public Book queryByTitle(String title) {
String sql = " select * from book where title = " + title;
return (Book)jdbcTemplate.queryForObject(sql, new RowCallBackHandler(){
public Object processRow(ResultSet rs) {
BookMaping map = new BookMaping();
Book book = (Book)map.mapping(rs, new Book());
return book;
}
});
}
public List queryByAuthor(String author) {
String sql = " select * from book where author = " + author;
return jdbcTemplate.query(sql, new RowCallBackHandler(){
public Object processRow(ResultSet rs) {
BookMaping map = new BookMaping();
Book book = (Book)map.mapping(rs, new Book());
return book;
}
});
}
// Borrower的具体实现:
// BookDaoImpl.java
package edu.jlu.fuliang.library.dao.mysql;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import edu.jlu.fuliang.library.dao.BorrowerDao;
import edu.jlu.fuliang.library.domain.Borrower;
import edu.jlu.fuliang.library.jdbc.JdbcTemplate;
import edu.jlu.fuliang.library.jdbc.PreparedStatementCallBack;
import edu.jlu.fuliang.library.jdbc.RowCallBackHandler;
public class BorrowerDaoImpl implements BorrowerDao{
private JdbcTemplate jdbcTemplate = new JdbcTemplate();
public Borrower queryByLastName(String lastName) {
String sql = " select * from borrower where lastName = " + lastName;
return (Borrower)jdbcTemplate.queryForObject(sql, new RowCallBackHandler(){
public Object processRow(ResultSet rs) {
BorrowerMaping borrowerMaping = new BorrowerMaping();
return borrowerMaping.mapping(rs, new Borrower());
}
});
}
public void updateBorrower( final Borrower borrower) {
String sql = " update borrower set lastname = ?,firstname=? " +
" ,address =?,city =?,zip=?,state=? where lastname = ? " ;
jdbcTemplate.executeUpdate(sql, new PreparedStatementCallBack(){
public void doInStatement(PreparedStatement stmt) throws SQLException {
stmt.setString( 1 ,borrower.getLastName());
stmt.setString( 2 ,borrower.getFirstName());
stmt.setString( 3 ,borrower.getAddress());
stmt.setString( 4 ,borrower.getCity());
stmt.setString( 5 ,borrower.getZip());
stmt.setString( 6 ,borrower.getState());
stmt.setString( 7 ,borrower.getLastName());
}
});
}
public void insertBorrower( final Borrower borrower) {
String sql = " insert into borrower values(?,?,?,?,?,?) " ;
jdbcTemplate.executeUpdate(sql, new PreparedStatementCallBack(){
public void doInStatement(PreparedStatement stmt) throws SQLException {
stmt.setString( 1 ,borrower.getLastName());
stmt.setString( 2 ,borrower.getFirstName());
stmt.setString( 3 ,borrower.getAddress());
stmt.setString( 4 ,borrower.getCity());
stmt.setString( 5 ,borrower.getZip());
stmt.setString( 6 ,borrower.getState());
}
});
}
public void deleteBorrowerByLastName( final String lastName) {
String sql = " delete from borrower where lastName = ? " ;
jdbcTemplate.executeUpdate(sql, new PreparedStatementCallBack(){
public void doInStatement(PreparedStatement stmt) throws SQLException {
stmt.setString( 1 ,lastName);
}
});
}
}
// BorrowOrReturnDaoImpl.java
package edu.jlu.fuliang.library.dao.mysql;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import edu.jlu.fuliang.library.dao.BorrowOrReturnDao;
import edu.jlu.fuliang.library.jdbc.JdbcTemplate;
import edu.jlu.fuliang.library.jdbc.PreparedStatementCallBack;
public class BorrowOrReturnDaoImpl implements BorrowOrReturnDao{
private JdbcTemplate jdbcTemplate = new JdbcTemplate();
public void borrowBook( final String borrowerLastName, final String bookTitle) {
String sql = " insert into book_borrower values(?,?) " ;
jdbcTemplate.executeUpdate(sql, new PreparedStatementCallBack(){
public void doInStatement(PreparedStatement stmt) {
try {
stmt.setString( 1 ,borrowerLastName);
stmt.setString( 2 ,bookTitle);
} catch (SQLException e){
e.printStackTrace();
}
}
});
}
public void returnBook( final String borrowerLastName, final String bookTitle) {
String sql = " delete from book_borrower where lastname = ?,title = ? " ;
jdbcTemplate.executeUpdate(sql, new PreparedStatementCallBack(){
public void doInStatement(PreparedStatement stmt) {
try {
stmt.setString( 1 ,borrowerLastName);
stmt.setString( 2 ,bookTitle);
} catch (SQLException e){
e.printStackTrace();
}
}
});
}
}
// book的ORMaping的实现:
// BookMaping.java
package edu.jlu.fuliang.library.dao.mysql;
import java.sql.ResultSet;
import java.sql.SQLException;
import edu.jlu.fuliang.library.domain.Book;
import edu.jlu.fuliang.library.jdbc.ORMaping;
public class BookMaping implements ORMaping{
public Object mapping(ResultSet rs, Object o) {
Book book = (Book)o;
try {
book.setTitleName(rs.getString( " titleName " ));
book.setAuthor(rs.getString( " author " ));
book.setISBN(rs.getString( " isbn " ));
book.setType(rs.getInt( " type " ));
book.setItemsAvailable(rs.getInt( " itemAvailable " ));
} catch (SQLException e) {
e.printStackTrace();
}
return book;
}
}
borrower的ORMaping的实现:
// BorrowerMaping.java
package edu.jlu.fuliang.library.dao.mysql;
import java.sql.ResultSet;
import java.sql.SQLException;
import edu.jlu.fuliang.library.domain.Borrower;
import edu.jlu.fuliang.library.jdbc.ORMaping;
public class BorrowerMaping implements ORMaping{
public Object mapping(ResultSet rs, Object o) {
Borrower borrower = (Borrower)o;
try {
borrower.setLastName(rs.getString( 1 ));
borrower.setFirstName(rs.getString( 2 ));
borrower.setAddress(rs.getString( 3 ));
borrower.setCity(rs.getString( 4 ));
borrower.setZip(rs.getString( 5 ));
borrower.setState(rs.getString( 6 ));
} catch (SQLException e) {
e.printStackTrace();
}
return borrower;
}
}
// 业务层:
// Service接口
// Service.java
package edu.jlu.fuliang.library.service;
import java.util.List;
import edu.jlu.fuliang.library.domain.Book;
import edu.jlu.fuliang.library.domain.Borrower;
public interface Service {
public Book queryBookByTitle(String title);
public List queryBookByAuthor(String author);
public List queryBookByBorrowerLastName(String firstName);
public void updateBook(Book book);
public void insertBook(Book book);
public void deleteBookByTile(String title);
public Borrower queryBorrowerByLastName(String lastName);
public void updateBorrower(Borrower borrower);
public void insertBorrower(Borrower borrower);
public void deleteBorrowerByLastName(String lastName);
public void borrowBook(String borrowerLastName,String bookTitle);
public void returnBook(String borrowerLastName,String bookTitle);
}
// Service的具体实现
// LibraryService.java
package edu.jlu.fuliang.library.service;
import java.util.List;
import edu.jlu.fuliang.library.dao.BookDao;
import edu.jlu.fuliang.library.dao.BorrowOrReturnDao;
import edu.jlu.fuliang.library.dao.BorrowerDao;
import edu.jlu.fuliang.library.dao.DaoFactory;
import edu.jlu.fuliang.library.dao.MysqlDaoFactory;
import edu.jlu.fuliang.library.domain.Book;
import edu.jlu.fuliang.library.domain.Borrower;
public class LibraryService implements Service{
private BookDao bookDao;
private BorrowerDao borrowerDao;
private BorrowOrReturnDao borrowOrReturnDao;
public LibraryService(){
DaoFactory daoFactory = new MysqlDaoFactory();
bookDao = daoFactory.createBookDao();
borrowerDao = daoFactory.createBorrowerDao();
borrowOrReturnDao = daoFactory.createBorrowOrReturnDao();
}
public Book queryBookByTitle(String title) {
return bookDao.queryByTitle(title);
}
public List queryBookByAuthor(String author) {
return bookDao.queryByAuthor(author);
}
public List queryBookByBorrowerLastName(String firstName) {
return bookDao.queryByBorrowerLastName(firstName);
}
public void updateBook(Book book) {
bookDao.updateBook(book);
}
public void insertBook(Book book) {
bookDao.insertBook(book);
}
public void deleteBookByTile(String title) {
bookDao.deleteBookByTile(title);
}
public Borrower queryBorrowerByLastName(String lastName) {
return borrowerDao.queryByLastName(lastName);
}
public void updateBorrower(Borrower borrower) {
borrowerDao.updateBorrower(borrower);
}
public void insertBorrower(Borrower borrower) {
borrowerDao.insertBorrower(borrower);
}
public void deleteBorrowerByLastName(String lastName) {
borrowerDao.deleteBorrowerByLastName(lastName);
}
public void borrowBook(String borrowerLastName, String bookTitle) {
borrowOrReturnDao.borrowBook(borrowerLastName,bookTitle);
}
public void returnBook(String borrowerLastName, String bookTitle) {
borrowOrReturnDao.returnBook(borrowerLastName,bookTitle);
}
}
// view层:
// 主界面:
package edu.jlu.fuliang.library.view;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
public class LibraryMainFrame extends JFrame{
private JPanel myPanel = new MyPanel();
private JMenu functionMenu,infoMenu,maintenanceMenu;
private JMenuItem lendMenuItem,returnMenuItem;
private JMenuItem titleMenuItem,borrowerMenuItem,browseAllMenuItem;
private JMenuItem insertBookMenuItem,updateBookMenuItem;
private JMenuItem insertBorrowerMenuItem,updateBorrowerMenuItem;
public LibraryMainFrame(){
functionMenu = new JMenu( " Function " );
infoMenu = new JMenu( " Inforation " );
maintenanceMenu = new JMenu( " Maintenance " );
lendMenuItem = new JMenuItem( " Lend items... " );
returnMenuItem = new JMenuItem( " Return items... " );
functionMenu.add(lendMenuItem);
functionMenu.add(returnMenuItem);
titleMenuItem = new JMenuItem( " Search book... " );
borrowerMenuItem = new JMenuItem( " Search Borrower... " );
browseAllMenuItem = new JMenuItem( " Browse All... " );
infoMenu.add(titleMenuItem);
infoMenu.add(borrowerMenuItem);
infoMenu.add(browseAllMenuItem);
insertBookMenuItem = new JMenuItem( " Insert Title... " );
updateBookMenuItem = new JMenuItem( " Update Item... " );
insertBorrowerMenuItem = new JMenuItem( " Insert Borrower... " );
updateBorrowerMenuItem = new JMenuItem( " Update Borrower... " );
maintenanceMenu.add(insertBookMenuItem);
maintenanceMenu.add(updateBookMenuItem);
maintenanceMenu.add(insertBorrowerMenuItem);
maintenanceMenu.add(updateBorrowerMenuItem);
JMenuBar menuBar = new JMenuBar();
menuBar.add(functionMenu);
menuBar.add(infoMenu);
menuBar.add(maintenanceMenu);
setJMenuBar(menuBar);
add(myPanel);
setSize( 300 , 300 );
setVisible( true );
lendMenuItem.addActionListener( new ActionListener(){
public void actionPerformed(ActionEvent e) {
new BorrowDialog(LibraryMainFrame. this , " Lend book " , true );
}
});
returnMenuItem.addActionListener( new ActionListener(){
public void actionPerformed(ActionEvent e) {
new ReturnDialog(LibraryMainFrame. this , " Return book " , true );
}
});
titleMenuItem.addActionListener( new ActionListener(){
public void actionPerformed(ActionEvent e) {
new SearchBookDialog(LibraryMainFrame. this , " Search book " , true );
}
});
borrowerMenuItem.addActionListener( new ActionListener(){
public void actionPerformed(ActionEvent e) {
new BorrowerInformationDialog(LibraryMainFrame. this , " Borrower Information " , true );
}
});
browseAllMenuItem.addActionListener( new ActionListener(){
public void actionPerformed(ActionEvent e) {
}
});
insertBookMenuItem.addActionListener( new ActionListener(){
public void actionPerformed(ActionEvent e) {
new InsertBookDialog(LibraryMainFrame. this , " Insert book dialog " , true );
}
});
updateBookMenuItem.addActionListener( new ActionListener(){
public void actionPerformed(ActionEvent e) {
new UpdateBookDialog(LibraryMainFrame. this , " Update book dialog " , true );
}
});
insertBorrowerMenuItem.addActionListener( new ActionListener(){
public void actionPerformed(ActionEvent e) {
new InsertBorrowerDialog(LibraryMainFrame. this , " Insert borrower dialog " , true );
}
});
updateBorrowerMenuItem.addActionListener( new ActionListener(){
public void actionPerformed(ActionEvent e) {
new UpdateBorrowerDialog(LibraryMainFrame. this , " Update borrower dialog " , true );
}
});
}
private class MyPanel extends JPanel{
public void paint(Graphics g){
g.setColor(Color.green);
g.drawString( " Welcome to Library System! " , 40 , 40 );
}
}
public static void main(String []args){
LibraryMainFrame mainFrame = new LibraryMainFrame();
mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
package edu.jlu.fuliang.library.view;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import edu.jlu.fuliang.library.controller.InsertBorrowerController;
import edu.jlu.fuliang.library.domain.Borrower;
public class InsertBorrowerDialog extends JDialog{
JTextField lastNameField;
JTextField firstNameField;
JTextField addressField;
JTextField cityField;
JTextField zipField;
JTextField stateField;
JButton addButton,exitButton;
public InsertBorrowerDialog(JFrame f,String s, boolean b){
JPanel panel = new JPanel();
panel.setLayout( new GridLayout( 7 , 2 ));
panel.add( new JLabel( " Last Name: " ));
lastNameField = new JTextField( 10 );
panel.add(lastNameField);
firstNameField = new JTextField( 10 );
panel.add( new JLabel( " First Name: " ));
panel.add(firstNameField);
addressField = new JTextField( 10 );
panel.add( new JLabel( " Address: " ));
panel.add(addressField);
cityField = new JTextField( 10 );
panel.add( new JLabel( " City: " ));
panel.add(cityField);
zipField = new JTextField( 5 );
panel.add( new JLabel( " Zip: " ));
panel.add(zipField);
stateField = new JTextField( 5 );
panel.add( new JLabel( " State: " ));
panel.add(stateField);
addButton = new JButton( " Add " );
exitButton = new JButton( " Exit " );
panel.add(addButton);
panel.add(exitButton);
add(panel);
this .setSize( 200 , 200 );
this .setVisible( true );
addButton.addActionListener( new ActionListener(){
public void actionPerformed(ActionEvent e) {
Borrower borrower = new Borrower();
borrower.setLastName(lastNameField.getText());
borrower.setFirstName(firstNameField.getText());
borrower.setAddress(addressField.getText());
borrower.setCity(cityField.getText());
borrower.setZip(zipField.getText());
borrower.setState(stateField.getText());
InsertBorrowerController controller = new InsertBorrowerController();
controller.execute(borrower);
}
});
exitButton.addActionListener( new ActionListener(){
public void actionPerformed(ActionEvent e) {
InsertBorrowerDialog. this .setVisible( false );
}
});
}
}
// InsertBookDialog.java
// package edu.jlu.fuliang.library.view;
import javax.swing. * ;
import edu.jlu.fuliang.library.controller.InsertBookController;
import edu.jlu.fuliang.library.domain.Book;
import java.awt. * ;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class InsertBookDialog extends JDialog{
private JTextField titleNameField,authorField,iSBNField;
private JTextField typeField,itemAvailableField;
private JButton addButton , exitButton;
public InsertBookDialog(JFrame f,String s, boolean b){
JPanel panel = new JPanel();
panel.setLayout( new GridLayout( 6 , 2 ));
panel.add( new JLabel( " Tile: " ));
titleNameField = new JTextField();
panel.add(titleNameField);
panel.add( new JLabel( " Author: " ));
authorField = new JTextField();
panel.add(authorField);
panel.add( new JLabel( " ISBN: " ));
iSBNField = new JTextField();
panel.add(iSBNField);
panel.add( new JLabel( " Type: " ));
typeField = new JTextField();
panel.add(typeField);
panel.add( new JLabel( " Item available: " ));
itemAvailableField = new JTextField();
panel.add(itemAvailableField);
addButton = new JButton( " Add " );
exitButton = new JButton( " Exit " );
panel.add(addButton);
panel.add(exitButton);
add(panel);
setSize( 200 , 200 );
setVisible( true );
addButton.addActionListener( new ActionListener(){
public void actionPerformed(ActionEvent e) {
Book book = new Book();
book.setTitleName(titleNameField.getText());
book.setAuthor(authorField.getText());
book.setISBN(iSBNField.getText());
book.setType(Integer.parseInt(typeField.getText()));
book.setItemsAvailable(Integer.parseInt(itemAvailableField.getText()));
InsertBookController controller = new InsertBookController();
controller.execute(book);
}
});
exitButton.addActionListener( new ActionListener(){
public void actionPerformed(ActionEvent event){
InsertBookDialog. this .setVisible( false );
}
});
}
}
// UpdateBookDialog.java
package edu.jlu.fuliang.library.view;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import edu.jlu.fuliang.library.controller.UpdateBookController;
import edu.jlu.fuliang.library.domain.Book;
public class UpdateBookDialog extends JDialog{
private JTextField titleNameField,authorField,iSBNField;
private JTextField typeField,itemAvailableField;
private JButton updateButton , exitButton;
public UpdateBookDialog(JFrame f,String s, boolean b){
JPanel panel = new JPanel();
panel.setLayout( new GridLayout( 6 , 2 ));
panel.add( new JLabel( " Tile: " ));
titleNameField = new JTextField();
panel.add(titleNameField);
panel.add( new JLabel( " Author: " ));
authorField = new JTextField();
panel.add(authorField);
panel.add( new JLabel( " ISBN: " ));
iSBNField = new JTextField();
panel.add(iSBNField);
panel.add( new JLabel( " Type: " ));
typeField = new JTextField();
panel.add(typeField);
panel.add( new JLabel( " Item available: " ));
itemAvailableField = new JTextField();
panel.add(itemAvailableField);
updateButton = new JButton( " Update: " );
exitButton = new JButton( " Exit " );
panel.add(updateButton);
panel.add(exitButton);
add(panel);
setSize( 200 , 200 );
setVisible( true );
updateButton.addActionListener( new ActionListener(){
public void actionPerformed(ActionEvent e) {
Book book = new Book();
book.setTitleName(titleNameField.getText());
book.setAuthor(authorField.getText());
book.setISBN(iSBNField.getText());
book.setType(Integer.parseInt(typeField.getText()));
book.setItemsAvailable(Integer.parseInt(itemAvailableField.getText()));
UpdateBookController controller = new UpdateBookController();
controller.execute(book);
}
});
exitButton.addActionListener( new ActionListener(){
public void actionPerformed(ActionEvent event){
UpdateBookDialog. this .setVisible( false );
}
});
}
}
// UpdateBorrowerDialog.java
package edu.jlu.fuliang.library.view;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import edu.jlu.fuliang.library.controller.InsertBorrowerController;
import edu.jlu.fuliang.library.controller.UpdateBorrowerController;
import edu.jlu.fuliang.library.domain.Borrower;
public class UpdateBorrowerDialog extends JDialog{
private JTextField lastNameField;
private JTextField firstNameField;
private JTextField addressField;
private JTextField cityField;
private JTextField zipField;
private JTextField stateField;
JButton updateButton,exitButton;
public UpdateBorrowerDialog(JFrame f,String s, boolean b){
JPanel panel = new JPanel();
panel.setLayout( new GridLayout( 7 , 2 ));
panel.add( new JLabel( " Last Name: " ));
lastNameField = new JTextField( 10 );
panel.add(lastNameField);
firstNameField = new JTextField( 10 );
panel.add( new JLabel( " First Name: " ));
panel.add(firstNameField);
addressField = new JTextField( 10 );
panel.add( new JLabel( " Address: " ));
panel.add(addressField);
cityField = new JTextField( 10 );
panel.add( new JLabel( " City: " ));
panel.add(cityField);
zipField = new JTextField( 5 );
panel.add( new JLabel( " Zip: " ));
panel.add(zipField);
stateField = new JTextField( 5 );
panel.add( new JLabel( " State: " ));
panel.add(stateField);
updateButton = new JButton( " Update " );
exitButton = new JButton( " Exit " );
panel.add(updateButton);
panel.add(exitButton);
add(panel);
this .setSize( 200 , 200 );
this .setVisible( true );
updateButton.addActionListener( new ActionListener(){
public void actionPerformed(ActionEvent e) {
Borrower borrower = new Borrower();
borrower.setLastName(lastNameField.getText());
borrower.setFirstName(firstNameField.getText());
borrower.setAddress(addressField.getText());
borrower.setCity(cityField.getText());
borrower.setZip(zipField.getText());
borrower.setState(stateField.getText());
UpdateBorrowerController controller = new UpdateBorrowerController();
controller.execute(borrower);
}
});
exitButton.addActionListener( new ActionListener(){
public void actionPerformed(ActionEvent e) {
UpdateBorrowerDialog. this .setVisible( false );
}
});
}
}
// SearchBookDialog.java
package edu.jlu.fuliang.library.view;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Map;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import edu.jlu.fuliang.library.controller.QueryBookInfoController;
import edu.jlu.fuliang.library.domain.Book;
public class SearchBookDialog extends JDialog{
private JTextField titleNameField,authorField,iSBNField;
private JTextField typeField,itemAvailableField;
private JButton searchButton , exitButton;
public SearchBookDialog(JFrame f,String s, boolean b){
JPanel panel = new JPanel();
panel.setLayout( new GridLayout( 6 , 2 ));
panel.add( new JLabel( " Tile: " ));
titleNameField = new JTextField();
panel.add(titleNameField);
panel.add( new JLabel( " Author: " ));
authorField = new JTextField();
authorField.setEditable( false );
panel.add(authorField);
panel.add( new JLabel( " ISBN: " ));
iSBNField = new JTextField();
iSBNField.setEditable( false );
panel.add(iSBNField);
panel.add( new JLabel( " Type: " ));
typeField = new JTextField();
typeField.setEditable( false );
panel.add(typeField);
panel.add( new JLabel( " Item available: " ));
itemAvailableField = new JTextField();
itemAvailableField.setEditable( false );
panel.add(itemAvailableField);
searchButton = new JButton( " Search " );
exitButton = new JButton( " Exit " );
panel.add(searchButton);
panel.add(exitButton);
add(panel);
setSize( 200 , 200 );
setVisible( true );
searchButton.addActionListener( new ActionListener(){
public void actionPerformed(ActionEvent e) {
String titleName = titleNameField.getText();
QueryBookInfoController controller = new QueryBookInfoController();
Map map = controller.execute(titleName);
Book book = (Book)map.get( " book " );
authorField.setText(book.getAuthor());
iSBNField.setText(book.getISBN());
typeField.setText(String.valueOf(book.getType()));
itemAvailableField.setText(String.valueOf(book.getItemsAvailable()));
}
});
exitButton.addActionListener( new ActionListener(){
public void actionPerformed(ActionEvent event){
SearchBookDialog. this .setVisible( false );
}
});
}
}
// BorrowDialog.java
package edu.jlu.fuliang.library.view;
import javax.swing. * ;
import edu.jlu.fuliang.library.controller.BorrowController;
import java.awt. * ;
import java.awt.event. * ;
import java.util. * ;
import java.util.List;
public class BorrowDialog extends JDialog{
private JTextField borrowerLastNameField,bookTitleField;
private JButton borrowButton,exitButton;
public BorrowDialog(JFrame frame,String title, boolean b){
borrowerLastNameField = new JTextField();
bookTitleField = new JTextField();
borrowButton = new JButton( " Borrow " );
exitButton = new JButton( " Exit " );
JPanel panel = new JPanel();
panel.setLayout( new GridLayout( 3 , 2 ));
panel.add( new JLabel( " Borrower Last Name: " ));
panel.add(borrowerLastNameField);
panel.add( new JLabel( " Book title: " ));
panel.add(bookTitleField);
panel.add(borrowButton);
panel.add(exitButton);
add(panel);
setSize( 250 , 100 );
setVisible( true );
borrowButton.addActionListener( new ActionListener(){
public void actionPerformed(ActionEvent e) {
String borrowerLastName = borrowerLastNameField.getText();
String bookTitle = bookTitleField.getText();
BorrowController controller = new BorrowController();
List list = new ArrayList( 2 );
list.add(borrowerLastName);
list.add(bookTitle);
controller.execute(list);
}
});
exitButton.addActionListener( new ActionListener(){
public void actionPerformed(ActionEvent e) {
BorrowDialog. this .setVisible( false );
}
});
}
}
// ReturnDialog.java
package edu.jlu.fuliang.library.view;
import java.awt.GridLayout;
import java.util.ArrayList;
import java.util.List;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing. * ;
import edu.jlu.fuliang.library.controller.ReturnController;
public class ReturnDialog extends JDialog{
private JTextField borrowerLastNameField,bookTitleField;
private JButton borrowButton,exitButton;
public ReturnDialog(JFrame frame,String title, boolean b){
borrowerLastNameField = new JTextField();
bookTitleField = new JTextField();
borrowButton = new JButton( " Borrow " );
exitButton = new JButton( " Exit " );
JPanel panel = new JPanel();
panel.setLayout( new GridLayout( 3 , 2 ));
panel.add( new JLabel( " Borrower Last Name: " ));
panel.add(borrowerLastNameField);
panel.add( new JLabel( " Book title: " ));
panel.add(bookTitleField);
panel.add(borrowButton);
panel.add(exitButton);
add(panel);
setSize( 250 , 100 );
setVisible( true );
borrowButton.addActionListener( new ActionListener(){
public void actionPerformed(ActionEvent e) {
String borrowerLastName = borrowerLastNameField.getText();
String bookTitle = bookTitleField.getText();
ReturnController controller = new ReturnController();
List list = new ArrayList( 2 );
list.add(borrowerLastName);
list.add(bookTitle);
controller.execute(list);
}
});
exitButton.addActionListener( new ActionListener(){
public void actionPerformed(ActionEvent e) {
ReturnDialog. this .setVisible( false );
}
});
}
}
// Controller:
// Controller接口
// Controller.java
package edu.jlu.fuliang.library.controller;
import java.util.Map;
public interface Controller{
public Map execute();
}
// FormController.java
package edu.jlu.fuliang.library.controller;
import java.util.Map;
public interface FormController {
public Map execute(Object o);
}
// InsertBookController.java
package edu.jlu.fuliang.library.controller;
import java.util.Map;
import edu.jlu.fuliang.library.domain.Book;
import edu.jlu.fuliang.library.service.LibraryService;
import edu.jlu.fuliang.library.service.Service;
public class InsertBookController {
private Service service = new LibraryService();
public Map execute(Object o) {
Book book = (Book)o;
service.insertBook(book);
return null ;
}
}
// QueryBookInfoController.java
package edu.jlu.fuliang.library.controller;
import java.util.HashMap;
import java.util.Map;
import edu.jlu.fuliang.library.domain.Book;
import edu.jlu.fuliang.library.service.LibraryService;
import edu.jlu.fuliang.library.service.Service;
public class QueryBookInfoController implements FormController{
private Service service = new LibraryService();
public Map execute(Object o){
String title = (String)o;
Book book = service.queryBookByTitle(title);
Map map = new HashMap();
map.put( " book " ,book);
return map;
}
}
// UpdateBookController.java
package edu.jlu.fuliang.library.controller;
import java.util.Map;
import edu.jlu.fuliang.library.domain.Book;
import edu.jlu.fuliang.library.service.LibraryService;
import edu.jlu.fuliang.library.service.Service;
public class UpdateBookController implements FormController{
private Service service = new LibraryService();
public Map execute(Object o){
Book book = (Book)o;
service.updateBook(book);
return null ;
}
}
// InsertBorrowerController.java
package edu.jlu.fuliang.library.controller;
import java.util.Map;
import edu.jlu.fuliang.library.domain.Borrower;
import edu.jlu.fuliang.library.service.LibraryService;
import edu.jlu.fuliang.library.service.Service;
public class InsertBorrowerController implements FormController{
private Service service = new LibraryService();
public Map execute(Object o) {
Borrower borrower = (Borrower)o;
service.insertBorrower(borrower);
return null ;
}
}
// QueryBorrowerController.java
package edu.jlu.fuliang.library.controller;
import java.util.HashMap;
import java.util.Map;
import edu.jlu.fuliang.library.domain.Borrower;
import edu.jlu.fuliang.library.service.LibraryService;
import edu.jlu.fuliang.library.service.Service;
public class QueryBorrowerController {
private Service service = new LibraryService();
public Map execute(Object o){
String lastName = (String)o;
Borrower brrower = service.queryBorrowerByLastName(lastName);
Map map = new HashMap();
map.put( " brrower " ,brrower);
return map;
}
}
// UpdateBorrowerController.java
package edu.jlu.fuliang.library.controller;
import java.util.Map;
import edu.jlu.fuliang.library.domain.Borrower;
import edu.jlu.fuliang.library.service.LibraryService;
import edu.jlu.fuliang.library.service.Service;
public class UpdateBorrowerController implements FromController{
private Service service = new LibraryService();
public Map execute(Object o){
Borrower borrower = (Borrower)o;
service.updateBorrower(borrower);
return null ;
}
}
// BorrowController.java
package edu.jlu.fuliang.library.controller;
import java.util. * ;
import edu.jlu.fuliang.library.service.LibraryService;
import edu.jlu.fuliang.library.service.Service;
public class BorrowController implements FormController{
private Service service = new LibraryService();
public Map execute(Object o) {
List list = (List)o;
String borrowerFirstName = (String) list.get( 0 );
String bookTitle = (String)list.get( 1 );
service.borrowBook(borrowerFirstName,bookTitle);
return null ;
}
}
// ReturnController.java
package edu.jlu.fuliang.library.controller;
import java.util.List;
import java.util.Map;
import edu.jlu.fuliang.library.service.LibraryService;
import edu.jlu.fuliang.library.service.Service;
public class ReturnController {
private Service service = new LibraryService();
public Map execute(Object o) {
List list = (List)o;
String borrowerFirstName = (String) list.get( 0 );
String bookTitle = (String)list.get( 1 );
service.returnBook(borrowerFirstName,bookTitle);
return null ;
}
}
// domain
// Book.java
package edu.jlu.fuliang.library.domain;
import java.util.List;
public class Book {
private String titleName;
private String author;
private String ISBN;
private int type;
private int itemsAvailable;
private List borrowers;
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this .author = author;
}
public String getISBN() {
return ISBN;
}
public void setISBN(String isbn) {
ISBN = isbn;
}
public int getItemsAvailable() {
return itemsAvailable;
}
public void setItemsAvailable( int itemsAvailable) {
this .itemsAvailable = itemsAvailable;
}
public String getTitleName() {
return titleName;
}
public void setTitleName(String titleName) {
this .titleName = titleName;
}
public int getType() {
return type;
}
public void setType( int type) {
this .type = type;
}
public List getBorrowers() {
return borrowers;
}
public void setBorrowers(List borrowers) {
this .borrowers = borrowers;
}
}
// Borrower.java
package edu.jlu.fuliang.library.domain;
import java.util.List;
public class Borrower {
private String lastName;
private String firstName;
private String address;
private String city;
private String zip;
private String state;
private List books;
public String getAddress() {
return address;
}
public void setAddress(String address) {
this .address = address;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this .city = city;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this .firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this .lastName = lastName;
}
public String getState() {
return state;
}
public void setState(String state) {
this .state = state;
}
public String getZip() {
return zip;
}
public void setZip(String zip) {
this .zip = zip;
}
public List getBooks() {
return books;
}
public void setBooks(List books) {
this .books = books;
}
}
从xuliangliang的BLOG上转来的,自己看看。在与sqlserver连接做数库数。仅作研究。因为我java还没有学完
怕下次找不到了,这次先转来,I hope 良良不会介意