1.实体层:com.java.model;
首先在实体层model里面添加图书类别BookType的实体信息,包括get、set方法和构造方法:
package model;
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 dao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import model.BookType;
/**
* 图书类别Dao类
* @author 123
*
*/
public class BookTypeDao {
/**
* 图书类别添加
* @param con
* @param bookType
* @return
* @throws Exception
*/
//传两个参数
public int add_book(Connection con,BookType bookType) throws Exception{
//采用预编译的方式
String sql = "insert into t_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 util;
/**
* 字符串工具类
* @author 123
*
*/
public class StringUtil {
/**
* 判断是否是空
* @param str
* @return
*/
public static boolean isEmpty(String str) {
//trim() 函数移除字符串两侧的空白字符或其他预定义字符。
if(str == null || "".equals(str.trim())) {
return true;
}else {
return false;
}
}
/**
* 判断是否不是空
* @param str
* @return
*/
public static boolean isNotEmpty(String str) {
//注意这里的逻辑判断条件
if(str != null && "".equals(str.trim())) {
return true;
}else {
return false;
}
}
}
4.视图层:com.java.view;
首先图书类别添加的窗体也是一个内部窗体,我们在view里面新建一个BookTypeAddInterFrm类:
右键点击view包->new->Other->WindowBuilder->Swing Designer->JInternalFrame类;
建好之后在Designer上添加一些控件:
这里都是一些基本的控件和按钮,图标可以用我们之前的images包里面导入的图标;
给JTextField框进行重命名,命名为:bookTypeNameTxt;
给JTextArea框进行重命名,命名为: bookTypeDescTxt;
控件功能代码:
(1) 首先是重置按钮功能:
右键重置按钮->Add event handler->action->actionPerformed;
系统会自动在Source里面生成对应的方法:
这里我们在actionPerformed()方法里面写一个resetValueActionPerformed(e)方法,
将实现重置的代码写在这个方法里面,并将方法的定义写在系统自动生成的actionPerformed()方法的外部;
用文本自带的setText方法将框里面的内容设置为空!这样就可以了;
然后我们在 MainFrm 这边在图书类别上面添加一个事件:
然后我们可以看到这个窗口弹出:
最后我们加一行设置边框的代码(美化边框):bookTypeDescTxt.setBorder(new LineBorder(new java.awt.Color(127,157,185),1,false));
(2)添加功能按钮:
右键添加按钮->Add event handler->action->actionPerformed;
系统会自动在Source里面生成对应的方法:
将实现重置的代码写在这个方法里面,并将方法的定义写在系统自动生成的actionPerformed()方法的外部;
在接下来的代码中还需要准备两步操作:
然后补充一下代码:
//添加事件处理
private void bookTypeAddActionPerformed(ActionEvent evt) {
// TODO Auto-generated method stub
//从界面获取用户天的图书类别名称和图书类别描述信息
String bookTypeName = this.bookTypeNameTxt.getText();
String bookTypeDesc = this.bookTypeDescTxt.getText();
//判断图书类别是否为空
if(StringUtil.isEmpty(bookTypeName)) {
JOptionPane.showMessageDialog(null, "图书类别名称不能为空!");
return;
}
//进行数据库连接
BookType bookType = new BookType(bookTypeName,bookTypeDesc);
Connection con = null;
try {
con = dbUtil.getCon();//首先连接数据库
int n = bookTypeDao.add_book(con, bookType);
if(n == 1) {
JOptionPane.showMessageDialog(null, "图书类别添加成功!");
resetValue();//添加成功后要立即将框中的内容重置
}else {
JOptionPane.showMessageDialog(null, "图书类别添加失败!");
}
}catch(Exception e) {
e.printStackTrace();
JOptionPane.showMessageDialog(null, "图书类别添加失败!");
}finally {
try {
dbUtil.closeCon(con);//最后要关闭数据库连接
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
(3)测试环节: