我们先在数据库里添加一个t_book表;
然后将t_book表里面的外键bookTypeId与t_booktype的主键bookTypeId相关联!
1.实体层:com.java.model;
新建一个图书t_book的的实体信息,包括get set方法和构造方法:
package com.java.model;
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 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 String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
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;
}
}
2.数据访问层:com.java.dao;
在数据访问层Dao里面新建图书的数据访问类BookDao,主要包含了图书添加的方法:
package com.java.dao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import com.java.model.Book;
/**
* 图书Dao类
* @author Huke
*
*/
public class BookDao {
/**
* 图书添加
* @param con
* @param book
* @return
* @throws Exception
*/
public int addBook(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();
}
}
3.视图层:com.java.view;
首先图书添加的窗体也是一个内部窗体,我们在view里面新建一个Book_Add_InterFrm类:
右键点击view包->new->Other->WindowBuilder->Swing Designer->JInternalFrame类;
建好之后在Designer上添加一些控件:
给图书名称框进行重命名,命名为:bookName_Txt;
给图书作者框进行重命名,命名为: author_Txt;
给图书价格框进行重命名,命名为:price_Txt;
给图书描述框进行重命名,命名为:bookDesc_Txt;
给图书类别框进行重命名,命名为:bookType_Jcb;
给作者性别框进行重命名,命名为:man_Jrb和woman_Jrb;
然后在主界面中MainFrm添加事件处理:
在图书管理下面的图书添加->右键->Add event handler->action->actionPerformed;
并添加如上代码!
下面写一个初始化图书类别下拉框的方法:
在Book_Add_InterFrm类里面添加一个方法fillBookType();
然后放在上面调用:
用来初始化图书下拉框里面的内容;我们测试一下:
可以看到图书添加的框出来后下拉框里面有内容!
下面实现图书添加的功能:
/**
* 图书添加事件
* @param evt
*/
private void bookAddActionPerformed(ActionEvent evt) {
//从用户界面获取信息
String bookName=this.bookName_Txt.getText();
String author=this.author_Txt.getText();
String price=this.price_Txt.getText();
String bookDesc=this.bookDesc_Txt.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(man_Jrb.isSelected()){
sex="男";
}else if(woman_Jrb.isSelected()){
sex="女";
}
//获取图书类别id
BookType bookType=(BookType) bookType_Jcb.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.addBook(con,book);
if(addNum==1){
JOptionPane.showMessageDialog(null, "图书添加成功!");
resetValue();
}else{
JOptionPane.showMessageDialog(null, "图书添加失败!");
}
} catch (Exception e) {
e.printStackTrace();
} finally{
try {
dbUtil.close(con);
} catch (Exception e) {
e.printStackTrace();
}
}
}
这里先要在实体层里面的Book类添加相应的构造方法:
然后还要写一个添加完之后的重置表单resetValue()方法:
/**
* 重置表单
*/
private void resetValue(){
this.bookName_Txt.setText("");
this.author_Txt.setText("");
this.price_Txt.setText("");
this.man_Jrb.setSelected(true);
this.bookDesc_Txt.setText("");
if(this.bookType_Jcb.getItemCount()>0){
//默认设置选中第一项
this.bookType_Jcb.setSelectedIndex(0);
}
}
接着重置的功能直接调用resetValue方法就可以了!
测试环节:
我们来看看数据库里面t_book表中的内容:
可以看到图书添加成功!