1、新建图书信息表t_book
添加外键,t_book的bookTypeId外键关联于t_bookType的主键id
2、新建Book的实体
public class Book {
private int id;//编号
private String bookName;//图书名称
private String author;//作者
private String sex;//性别
private Float price;//价格
private Integer bookTypeId;//图书类别Id
private String bookTypeName;//图书类别名称
private String bookDesc;//描述
public Book(String bookName, String author, String sex, Float price, Integer bookTypeId, String bookDesc) {
super();
this.bookName = bookName;
this.author = author;
this.sex = sex;
this.price = price;
this.bookTypeId = bookTypeId;
this.bookDesc = bookDesc;
}
public Book(int id, String bookName, String author, Float price, Integer bookTypeId, String bookTypeName,
String bookDesc) {
super();
this.id = id;
this.bookName = bookName;
this.author = author;
this.price = price;
this.bookTypeId = bookTypeId;
this.bookTypeName = bookTypeName;
this.bookDesc = bookDesc;
}
public Book() {
super();
// TODO Auto-generated constructor stub
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getBookName() {
return bookName;
}
public void setBookName(String bookName) {
this.bookName = bookName;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
public Float getPrice() {
return price;
}
public void setPrice(Float price) {
this.price = price;
}
public Integer getBookTypeId() {
return bookTypeId;
}
public void setBookTypeId(Integer bookTypeId) {
this.bookTypeId = bookTypeId;
}
public String getBookTypeName() {
return bookTypeName;
}
public void setBookTypeName(String bookTypeName) {
this.bookTypeName = bookTypeName;
}
public String getBookDesc() {
return bookDesc;
}
public void setBookDesc(String bookDesc) {
this.bookDesc = bookDesc;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
}
3、新建book的数据操作Dao类,BookDao.java
/**
* 图书Dao类
* @author Administrator
*
*/
public class BookDao {
/**
* 图书添加
* @param con
* @param book
* @return
* @throws Exception
*/
public int add(Connection con,Book book) throws Exception{
String sql="insert into t_book values(null,?,?,?,?,?,?)";
PreparedStatement pstmt=con.prepareStatement(sql);
pstmt.setString(1, book.getBookName());
pstmt.setString(2, book.getAuthor());
pstmt.setString(3, book.getSex());
pstmt.setFloat(4, book.getPrice());
pstmt.setInt(5, book.getBookTypeId());
pstmt.setString(6, book.getBookDesc());
return pstmt.executeUpdate();
}
}
4、新建图书添加界面BookAddInterFrm.java
修改布局:
添加JLabel,JTextField,JRadioButton,JTextArea,JButton组件
重命名组件名称
5、新建“图书管理-添加”事件
public void actionPerformed(ActionEvent e) {
BookAddInterFrm bookAddInterFrm=new BookAddInterFrm();
bookAddInterFrm.setVisible(true);
table.add(bookAddInterFrm);
}
6、封装一个方法,把图书类别的数据写入进去
/**
* 初始化图书类别下拉框
*/
private void fillBookType(){
Connection con=null;
BookType bookType=null;
try{
con=dbUtil.getCon();
ResultSet rs=bookTypeDao.list(con, new BookType());
while(rs.next()){
bookType=new BookType();
bookType.setId(rs.getInt("id"));
bookType.setBookTypeName(rs.getString("bookTypeName"));
this.bookTypeJcb.addItem(bookType);
}
}catch(Exception e){
e.printStackTrace();
}finally{
try {
dbUtil.close(con);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
调用方法
fillBookType();
在BookType.java里添加重写toString的代码,不然显示如图
@Override
public String toString() {
return bookTypeName;
}
7、实现添加功能
给添加按钮添加事件
public void actionPerformed(ActionEvent e) {
BookAddActionPerformed(e);
}
新建重置表单方法
/**
* 重置表单
*/
private void resetValue() {
this.bookNameTxt.setText("");
this.authorTxt.setText("");
this.priceTxt.setText("");
this.manJrb.setSelected(true);
this.bookDescTxt.setText("");
if(this.bookTypeJcb.getItemCount()>0){
this.bookTypeJcb.setSelectedIndex(0);
}
}
/**
* 图书添加事件处理
* @param e
*/
private void BookAddActionPerformed(ActionEvent evt) {
String bookName=this.bookNameTxt.getText();
String author=this.authorTxt.getText();
String price=this.priceTxt.getText();
String bookDesc=this.bookDescTxt.getText();
if(StringUtil.isEmpty(bookName)){
JOptionPane.showMessageDialog(null, "图书名称为空!");
return;
}
if(StringUtil.isEmpty(author)){
JOptionPane.showMessageDialog(null, "作者为空!");
return;
}
if(StringUtil.isEmpty(price)){
JOptionPane.showMessageDialog(null, "价格为空!");
return;
}
String sex="";
if(manJrb.isSelected()){//如果选择男
sex="男";
}else if(femaleJrb.isSelected()){
sex="女";
}
BookType bookType=(BookType)bookTypeJcb.getSelectedItem();
int bookTypeId=bookType.getId();
Book book=new Book(bookName,author,sex,Float.parseFloat(price),bookTypeId,bookDesc);
Connection con=null;
try{
con=dbUtil.getCon();
int addNum=bookDao.add(con, book);
if(addNum==1){
JOptionPane.showMessageDialog(null, "添加成功");
resetValue();
}else{
JOptionPane.showMessageDialog(null, "添加失败");
}
}catch(Exception e){
e.printStackTrace();
JOptionPane.showMessageDialog(null, "添加失败");
}finally{
try {
dbUtil.close(con);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
8、实现重置功能
新建重置按钮事件
public void actionPerformed(ActionEvent e) {
resetValueActionPerformed(e);
}
/**
* 重置事件处理
* @param e
*/
private void resetValueActionPerformed(ActionEvent evt) {
this.resetValue();
}