1.实体层:com.java.model;
首先在实体层model里面添加图书类别BookType的实体信息,包括get set方法和构造方法:
package com.java.model;
/**
* 图书类别实体
* @author
*
*/
public class BookType {
//编号
private int id;
//图书类别名称
private String bookTypeName;
//图书类别描述
private String bookTypeDesc;
public BookType() {
super();
// TODO Auto-generated constructor stub
}
public BookType(String bookTypeName, String bookTypeDesc) {
super();
this.bookTypeName = bookTypeName;
this.bookTypeDesc = bookTypeDesc;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getBookTypeName() {
return bookTypeName;
}
public void setBookTypeName(String bookTypeName) {
this.bookTypeName = bookTypeName;
}
public String getBookTypeDesc() {
return bookTypeDesc;
}
public void setBookTypeDesc(String bookTypeDesc) {
this.bookTypeDesc = bookTypeDesc;
}
}
2.数据访问层:com.java.dao;
我们先在数据库db_book里面新建一个t_bookType表,存储了图书类别的数据:
在数据访问层Dao里面新建图书类别的数据访问类BookTypeDao,主要包含了添加图书类别的信息:
package com.java.dao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import com.java.model.BookType;
/**
* 图书类别Dao
* @author
*
*/
public class BookTypeDao {
public int add_Book(Connection con,BookType bookType) throws Exception{
String sql="insert into BookType values(null,?,?)";
PreparedStatement pstmt=con.prepareStatement(sql);
pstmt.setString(1, bookType.getBookTypeName());
pstmt.setString(2, bookType.getBookTypeDesc());
//返回操作的结果
return pstmt.executeUpdate();
}
}
3.工具类:com.java.util;
在工具类里面写上一个判断字符串是否为空的StringUtil类:
package com.java.util;
public class StringUtil {
/**
* 判断是否为空
*
* @param str
* @return
*/
public static boolean isEmpty(String str) {
if (str == null || "".equals(str.trim())) {
return true;
} else {
return false;
}
}
/**
* 判断是否不是空
*/
public static boolean isNotEmpty(String str) {
//注意这里的逻辑判断条件
if (str != null && !"".equals(str.trim())) {
return true;
} else {
return false;
}
}
}
4.视图层:com.java.view;
首先图书类别添加的窗体也是一个内部窗体,我们在view里面新建一个BookType_add_InterFrm类:
右键点击view包->new->Other->WindowBuilder->Swing Designer->JInternalFrame类;
建好之后在Designer上添加一些控件:
这里都是一些基本的控件和按钮,图标可以用我们之前的images包里面导入的图标;
给JTextField框进行重命名,命名为:bookTypeName_Txt;
给JTextArea框进行重命名,命名为: bookTypeDesc_Txt;
控件功能代码:
(1) 首先是重置按钮功能:
右键重置按钮->Add event handler->action->actionPerformed;
系统会自动在Source里面生成对应的方法:
这里我们在actionPerformed()方法里面写一个resetValueActionPerformed(e)方法,
将实现重置的代码写在这个方法里面,并将方法的定义写在系统自动生成的actionPerformed()方法的外部;
用文本自带的setText方法将框里面的内容设置为空!这样就可以了;
(2)添加功能按钮:
右键添加按钮->Add event handler->action->actionPerformed;
系统会自动在Source里面生成对应的方法:
这里我们在actionPerformed()方法里面写一个bookTypeAddActionPerformed(e)方法,
将实现重置的代码写在这个方法里面,并将方法的定义写在系统自动生成的actionPerformed()方法的外部;
//添加事件处理
private void bookTypeAddActionPerformed(ActionEvent evt) {
//从界面获取用户填的图书类别名称和图书类别描述信息
String bookTypeName=this.bookTypeName_Txt.getText();
String bookTypeDesc=this.bookTypeDesc_Txt.getText();
//判断图书类别名称是否为空
if(StringUtil.isEmpty(bookTypeName)){
JOptionPane.showMessageDialog(null, "图书类别名称不能为空!");
return;
}
//进行数据库连接
BookType bookType=new BookType(bookTypeName,bookTypeDesc);
Connection con=null;
try {
con=dbUtil.getCon();//首先连接数据库
int result=bookTypeDao.add_Book(con,bookType);//返回的是Int类型,表示执行了几条数据
if(result==1){
JOptionPane.showMessageDialog(null, "图书类别添加成功!");
resetValue();//添加成功后要立即将框中内容重置
}else{
JOptionPane.showMessageDialog(null, "图书类别添加失败!");
}
} catch (Exception e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}finally{
try {
dbUtil.close(con);//最后要关闭数据库连接
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
(3)测试环节:
我们可以去看数据库表中t_booktype的数据:
可以看到图书类别数据添加成功!