看几个本人写的LOWER界面:
实现的框架
实现的代码
package com.hr.entity;
/**
* @ClassName Student
* @Description: TODO
* @Author 汤永红
* @Date 2020/8/22 0022-10:24
* @Version V1.0
**/
public class Student {
/**
* 编号
*/
private Integer id;
/**
* 姓名
*/
private String name;
/**
* 性别
*/
private String sex;
/**
* 出生年份
*/
private String birth;
/**
* 系
*/
private String department;
/**
* 地址
*/
private String address;
public Student() {
}
public Student(Integer id, String name, String sex, String birth, String department, String address) {
this.id = id;
this.name = name;
this.sex = sex;
this.birth = birth;
this.department = department;
this.address = address;
}
public Student(String name, String sex, String birth, String department, String address) {
this.name = name;
this.sex = sex;
this.birth = birth;
this.department = department;
this.address = address;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getBirth() {
return birth;
}
public void setBirth(String birth) {
this.birth = birth;
}
public String getDepartment() {
return department;
}
public void setDepartment(String department) {
this.department = department;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
@Override
public String toString() {
return "Student{" +
"id=" + id +
", name='" + name + '\'' +
", sex='" + sex + '\'' +
", birth='" + birth + '\'' +
", department='" + department + '\'' +
", address='" + address + '\'' +
'}';
}
}
package com.hr.db;
import java.sql.*;
/**
* @ClassName DBHelper
* @Description: TODO
* @Author 汤永红
* @Date 2020/8/22 0022-10:42
* @Version V1.0
**/
public class DBHelper {
protected static Connection conn;
protected PreparedStatement pstmt;
protected ResultSet rs;
//
private static final String URL = "jdbc:mysql://localhost:3306/java95?useUnicode=true&characterEncoding=utf-8&useSSL=false";
private static final String USER_NAME = "root";
private static final String PASSWORD = "52Java";
public static Connection getConnection() {
try {
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection(URL, USER_NAME, PASSWORD);
System.out.println("连接数据成功");
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
return conn;
}
public static void closeAll(ResultSet rs, PreparedStatement pstmt, Connection conn) {
try {
if (rs != null) {
rs.close();
rs = null;
}
if (pstmt != null) {
pstmt.close();
pstmt = null;
}
if (conn != null) {
conn.close();
conn = null;
}
} catch (SQLException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
getConnection();
}
}
package com.hr.dao;
import com.hr.entity.Student;
import java.util.List;
/**
* student对应的数据库操作接口
*/
public interface StudentDao {
/**
* 查所有
*
* @return 学生集合
*/
public List<Student> findAll();
/**
* 查单个
*
* @param id 学生id
* @return 学生
*/
public Student findOne(Integer id);
/**
* 模糊查
*
* @param student 学生对象
* @return 学生集合
*/
public List<Student> findByLike(Student student);
/**
* 添加
*
* @param student 学生
* @return 影响的行数 大于0 成功 否则失败
*/
public int add(Student student);
/**
* 根据id删除学生
*
* @param id 学生id
* @return 影响的行数 大于0 成功 否则失败
*/
public int delete(Integer id);
/**
* 修改学生
*
* @param student 学生
* @return 影响的行数 大于0 成功 否则失败
*/
public int update(Student student);
}
package com.hr.dao.impl;
import com.hr.dao.StudentDao;
import com.hr.db.DBHelper;
import com.hr.entity.Student;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
/**
* @ClassName StudentDaoImpl
* @Description: TODO
* @Author 汤永红
* @Date 2020/8/22 0022-10:33
* @Version V1.0
**/
public class StudentDaoImpl extends DBHelper implements StudentDao {
//要写昨天教的代码
@Override
public List<Student> findAll() {
List<Student> lists = null;
//1.连
conn = getConnection();
//2.送
String sql = "select * from student";
try {
pstmt = conn.prepareStatement(sql);
//3.执行
rs = pstmt.executeQuery();
//4.查出来
if (rs != null) {
lists = new ArrayList<>();//创建集合,用来装学生的
while (rs.next()) {
//
Student stu = new Student();
stu.setId(rs.getInt("id"));
stu.setName(rs.getString("name"));
stu.setSex(rs.getString("sex"));
stu.setBirth(rs.getString("birth"));
stu.setDepartment(rs.getString("department"));
stu.setAddress(rs.getString("address"));
lists.add(stu);
}
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
closeAll(rs, pstmt, conn);
}
return lists; //注意是把装好学生的集合返回出去
}
@Override
public Student findOne(Integer id) {
conn = getConnection();
try {
String sql = "select * from student where id = ?";
pstmt = conn.prepareStatement(sql);
pstmt.setInt(1, id);
rs = pstmt.executeQuery();
if (rs != null) {
while (rs.next()) {
Student stu = new Student();
stu.setId(rs.getInt("id"));
stu.setName(rs.getString("name"));
stu.setSex(rs.getString("sex"));
stu.setBirth(rs.getString("birth"));
stu.setDepartment(rs.getString("department"));
stu.setAddress(rs.getString("address"));
return stu;
}
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
closeAll(rs, pstmt, conn);
}
return null;
}
@Override
public List<Student> findByLike(Student student) {
List<Student> lists = null;
//1.连
conn = getConnection();
try {
//2.送 难点:拼字符串 StringBuffer
//2.1查所有
StringBuffer sql = new StringBuffer("select * from student where 1 = 1 ");
//2.1其它的
if (student != null) {
//按姓名模糊查
if (student.getName() != null && !"".equals(student.getName())) {
//双引号+变量+双引号
sql.append("and name like '%" + student.getName() + "%'");
}
//按性别精确查
if (student.getSex() != null && !"".equals(student.getSex())) {
sql.append("and sex = '" + student.getSex() + "'");
}
//按系精确查
if (student.getDepartment() != null && !"".equals(student.getDepartment())) {
sql.append("and department = '" + student.getDepartment() + "'");
}
//按地址模糊查
if (student.getAddress() != null && !"".equals(student.getAddress())) {
sql.append("and address like '%" + student.getAddress() + "%'");
}
}
pstmt = conn.prepareStatement(sql.toString());
System.out.println(pstmt);//就可以看到控制台拼好的sql语句
//3.执行
rs = pstmt.executeQuery();
//4.查出来
if (rs != null) {
lists = new ArrayList<>();//创建集合,用来装学生的
while (rs.next()) {
//
Student stu = new Student();
stu.setId(rs.getInt("id"));
stu.setName(rs.getString("name"));
stu.setSex(rs.getString("sex"));
stu.setBirth(rs.getString("birth"));
stu.setDepartment(rs.getString("department"));
stu.setAddress(rs.getString("address"));
lists.add(stu);
}
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
closeAll(rs, pstmt, conn);
}
return lists; //注意是把装好学生的集合返回出去
}
@Override
public int add(Student student) {
//1.连
conn = getConnection();
//2.送
try {
String sql = "insert into student(name,sex,birth,department,address) values (?,?,?,?,?)";
pstmt = conn.prepareStatement(sql);
//为问号全部赋值
pstmt.setString(1, student.getName());
pstmt.setString(2, student.getSex());
pstmt.setString(3, student.getBirth());
pstmt.setString(4, student.getDepartment());
pstmt.setString(5, student.getAddress());
//3.执行
int i = pstmt.executeUpdate();
return i;
} catch (SQLException e) {
e.printStackTrace();
} finally {
closeAll(null, pstmt, conn);
}
return 0;
}
@Override
public int delete(Integer id) {
//1.连
conn = getConnection();
//2.送
String sql = "delete from student where id = ?";
try {
pstmt = conn.prepareStatement(sql);
pstmt.setInt(1, id);
//3.执行
int i = pstmt.executeUpdate();
return i;
} catch (SQLException e) {
e.printStackTrace();
} finally {
closeAll(null, pstmt, conn);
}
return 0;
}
@Override
public int update(Student student) {
conn = getConnection();
try {
String sql = "update student set name=?,sex=?,birth=?,department=?,address=? where id=?";
pstmt = conn.prepareStatement(sql);
//为问号赋值
pstmt.setString(1, student.getName());
pstmt.setString(2, student.getSex());
pstmt.setString(3, student.getBirth());
pstmt.setString(4, student.getDepartment());
pstmt.setString(5, student.getAddress());
pstmt.setInt(6, student.getId());
//执行
int i = pstmt.executeUpdate();
return i;
} catch (SQLException e) {
e.printStackTrace();
} finally {
closeAll(null, pstmt, conn);
}
return 0;
}
}
package com.hr.service;
import com.hr.entity.Student;
import java.util.List;
/**
* student对应的数据库操作接口
*/
public interface StudentService {
/**
* 查所有
*
* @return 学生集合
*/
public List<Student> findAll();
/**
* 查单个
*
* @param id 学生id
* @return 学生
*/
public Student findOne(Integer id);
/**
* 模糊查
*
* @param student 学生对象
* @return 学生集合
*/
public List<Student> findByLike(Student student);
/**
* 添加
*
* @param student 学生
* @return 影响的行数 大于0 成功 否则失败
*/
public boolean add(Student student);
/**
* 根据id删除学生
*
* @param id 学生id
* @return 影响的行数 大于0 成功 否则失败
*/
public boolean delete(Integer id);
/**
* 修改学生
*
* @param student 学生
* @return 影响的行数 大于0 成功 否则失败
*/
public boolean update(Student student);
}
package com.hr.service.impl;
import com.hr.dao.StudentDao;
import com.hr.dao.impl.StudentDaoImpl;
import com.hr.entity.Student;
import com.hr.service.StudentService;
import java.util.List;
/**
* @ClassName StudentServiceImpl
* @Description: TODO
* @Author 汤永红
* @Date 2020/8/22 0022-10:35
* @Version V1.0
**/
public class StudentServiceImpl implements StudentService {
//调dao层
StudentDao studentDao = new StudentDaoImpl();
@Override
public List<Student> findAll() {
return studentDao.findAll();
}
@Override
public Student findOne(Integer id) {
return studentDao.findOne(id);
}
@Override
public List<Student> findByLike(Student student) {
return studentDao.findByLike(student);
}
@Override
public boolean add(Student student) {
return studentDao.add(student) > 0 ? true : false;
}
@Override
public boolean delete(Integer id) {
return studentDao.delete(id) > 0 ? true : false;
}
@Override
public boolean update(Student student) {
return studentDao.update(student) > 0 ? true : false;
}
}
package com.hr.test;
import com.hr.entity.Student;
import com.hr.service.StudentService;
import com.hr.service.impl.StudentServiceImpl;
import org.junit.Before;
import org.junit.Test;
import java.util.List;
/**
* @ClassName TestStudent
* @Description: TODO
* @Author 汤永红
* @Date 2020/8/22 0022-10:37
* @Version V1.0
**/
public class TestStudent {
//调服务层
private StudentService service;
@Before
public void init() {
service = new StudentServiceImpl();//要在before创建,这注意
}
//1.查所有 不用写main方法
@Test
public void findAll() {
List<Student> lists = service.findAll();
for (Student student : lists) {
System.out.println(student);
}
}
@Test
public void findOne() {
Student student = service.findOne(910);
System.out.println(student);
}
@Test
public void findByLike() {
Student stu = new Student();
//stu.setName("王");
// stu.setSex("男");
//stu.setAddress("长沙");
stu.setDepartment("计算机系");
List<Student> lists = service.findByLike(stu);
for (Student list : lists) {
System.out.println(list);
}
}
@Test
public void add() {
Student stu = new Student();
stu.setName("嫦娥");
stu.setSex("女");
stu.setAddress("天上");
stu.setDepartment("神仙");
stu.setBirth(2000 + "");
boolean flag = service.add(stu);
if (flag) {
System.out.println("添加成功");
} else {
System.out.println("添加失败");
}
}
@Test
public void delete() {
boolean flag = service.delete(911);
if (flag) {
System.out.println("删除成功");
} else {
System.out.println("删除失败");
}
}
@Test
public void update() {
//1.先查单个
Student changer = service.findOne(912);
System.out.println(changer);
//只改部门
changer.setDepartment("月宫");
//处理日期
changer.setBirth(changer.getBirth().substring(0, 4));
boolean flag = service.update(changer);
if (flag) {
System.out.println("修改成功");
} else {
System.out.println("修改失败");
}
}
}
package com.hr.ui;
import com.hr.entity.Student;
import com.hr.service.StudentService;
import com.hr.service.impl.StudentServiceImpl;
import javax.swing.*;
import javax.swing.table.DefaultTableModel;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.List;
import java.util.Vector;
//32.34.35
/**
* @ClassName MainFrame
* @Description: TODO
* @Author 汤永红
* @Date 2020/8/25 0025-9:02
* @Version V1.0
**/
public class MainFrame extends JFrame {
private DefaultTableModel dtm;
// 引入服务层
private StudentService service = new StudentServiceImpl();
public static void main(String[] args) {
new MainFrame();
}
public MainFrame() {
setTitle("学员管理系统主界面");
setSize(800, 600);
setLocationRelativeTo(null);//居中
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//退出并关闭
//1.上下两部分
JPanel panelTop = new JPanel();
panelTop.setBackground(Color.GRAY);
JPanel panelBottom = new JPanel();
panelBottom.setBackground(Color.CYAN);
//2.JFrame中的容器设置为边界布局
getContentPane().setLayout(new BorderLayout());
//3.上面的面板加入北边
getContentPane().add(panelTop, BorderLayout.NORTH);
//4.下面的面板加入中间
getContentPane().add(panelBottom, BorderLayout.CENTER);
//5.上面的面板分成两部分
//5.1先要面板的宽高
//panelTop.setPreferredSize(new Dimension(800, 150));
//5.2先要设置为边界布局
panelTop.setLayout(new BorderLayout());
//5.3创建上下面板
JPanel panelTop1 = new JPanel();
//在设置布局的时候左对齐(流式布局默认为居中对齐)
panelTop1.setLayout(new FlowLayout(FlowLayout.LEFT));
//放按钮
JButton btnAdd = new JButton("添加");
JButton btnUpdate = new JButton("修改");
JButton btnDelete = new JButton("删除");
panelTop1.add(btnAdd);
panelTop1.add(btnUpdate);
panelTop1.add(btnDelete);
JPanel panelTop2 = new JPanel();
panelTop2.setLayout(new FlowLayout(FlowLayout.LEFT));
JLabel lblName = new JLabel("按姓名查");
panelTop2.add(lblName);
JTextField txtName = new JTextField();
txtName.setPreferredSize(new Dimension(120, 25));
panelTop2.add(txtName);
JButton btnSelect = new JButton("查找");
panelTop2.add(btnSelect);
//5.4 放
panelTop.add(panelTop1, BorderLayout.NORTH);
panelTop.add(panelTop2, BorderLayout.CENTER);
//底部造表格,首先用边界布局
panelBottom.setLayout(new BorderLayout());
//选做一个滚动面板
JScrollPane scrollPane = new JScrollPane();
//放入底部
panelBottom.add(scrollPane, BorderLayout.CENTER);
//造表格
dtm = new DefaultTableModel();
JTable table = new JTable();
table.setModel(dtm);//这里的意思,先给表格一个大铁门,后面再放数据
refreshTable();//一句搞定
//把表格放入滚动面板
scrollPane.setViewportView(table);
// 按钮的事件监听
btnSelect.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
//1.检查文本框有没有值
//1.1获取文本框的值
String name = txtName.getText();
//1.2判断
//1.3.如果有,就调模糊查
Student stu = new Student();
stu.setName(name);
refreshTable2(stu);
}
});
btnAdd.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
//弹出一个模态对话框
StudentAddDialog dialog = new StudentAddDialog();
dialog.setModal(true);
dialog.setVisible(true);
refreshTable();//刷新表格
}
});
//修改
btnUpdate.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
//1. 提醒用户选择要修改的行
int index = table.getSelectedRow();
//1.1如果index为-1,说明没有选择行
if (index == -1) {
JOptionPane.showMessageDialog(null, "请选择要修改的行" + index);
return;
}
//JOptionPane.showMessageDialog(null, "当前的行号为:" + index);
//2.获取用户选择的行的第一列值
String id = dtm.getValueAt(index, 0) + "";
//JOptionPane.showMessageDialog(null, "当前行的第一列的值为:" + id);
//3.送到修改对话框
StudentUpdateDialog sud = new StudentUpdateDialog(id);
//刷新表格
refreshTable();
}
});
btnDelete.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
//1.提醒用得选呀
int index = table.getSelectedRow();
if (table.getSelectedRow() == -1) {
JOptionPane.showMessageDialog(null, "请选择要删除的行!");
return;
}
//2.获得选中行的id
int id = Integer.parseInt(dtm.getValueAt(index, 0) + "");
//先问用户是不是真的要删除?为了防止用户的误操作
int i = JOptionPane.showConfirmDialog(null, "你确定要删除吗", "警告", JOptionPane.YES_NO_OPTION);
if (JOptionPane.OK_OPTION == i) {//0
boolean flag = service.delete(id);
if (flag) {
JOptionPane.showMessageDialog(null, "删除成功");
refreshTable();//刷表格
} else {
JOptionPane.showMessageDialog(null, "删除失败");
}
}
}
});
//所有控件造出来了,再显示给用户看
setVisible(true);
}
//抽成列方法
public Vector getCols() {
Vector cols = new Vector();
cols.add("编号");
cols.add("姓名");
cols.add("性别");
cols.add("生日");
cols.add("院系");
cols.add("地址");
return cols;
}
//以下四个方法其实可以抽成两个方法,为何一变学生就接受不了呢?为何要写出自己看不下去的代码呢?生活所迫。
//抽成行方法
public Vector<Vector> getRows() {
Vector<Vector> rows = new Vector<>();
//查询所有学生
List<Student> students = service.findAll();
//把List转为Vector
if (students != null && students.size() > 0) {
for (Student student : students) {
//每一行数据都放入Vector
Vector v = new Vector();
v.add(student.getId());
v.add(student.getName());
v.add(student.getSex());
String msg = student.getBirth() != null ? student.getBirth().substring(0, 4) : student.getBirth();
v.add(msg);
v.add(student.getDepartment());
v.add(student.getAddress());
//小v放rows
rows.add(v);
}
}
return rows;
}
//抽成大铁门方法
public void refreshTable() {
Vector cols = getCols();
Vector<Vector> rows = getRows();
dtm.setDataVector(rows, cols);
}
//===================================================================================
//抽成行方法
public Vector<Vector> getRows2(Student stu) {
Vector<Vector> rows = new Vector<>();
//模糊查询所有学生
List<Student> students = service.findByLike(stu);
//把List转为Vector
if (students != null && students.size() > 0) {
for (Student student : students) {
//每一行数据都放入Vector
Vector v = new Vector();
v.add(student.getId());
v.add(student.getName());
v.add(student.getSex());
String msg = student.getBirth() != null ? student.getBirth().substring(0, 4) : student.getBirth();
v.add(msg);
v.add(student.getDepartment());
v.add(student.getAddress());
//小v放rows
rows.add(v);
}
}
return rows;
}
//抽成大铁门方法
public void refreshTable2(Student student) {
Vector cols = getCols();
Vector<Vector> rows = getRows2(student);
dtm.setDataVector(rows, cols);
}
}
package com.hr.ui;
import com.hr.entity.Student;
import com.hr.service.StudentService;
import com.hr.service.impl.StudentServiceImpl;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
/**
* @ClassName StudentAddDialog
* @Description: TODO
* @Author 汤永红
* @Date 2020/8/25 0025-10:03
* @Version V1.0
**/
public class StudentAddDialog extends JDialog {
private StudentService service = new StudentServiceImpl();
public StudentAddDialog() {
setTitle("添加学员信息");
setSize(400, 600);
setLocationRelativeTo(null);
//用网格布局
getContentPane().setLayout(new GridLayout(7, 2, 1, 50));
JLabel lblId = new JLabel("编号:");
JTextField txtId = new JTextField();
// 编号不让编辑
txtId.setEditable(false);
//txtId.setEnabled(false);
//txtId.setVisible(false);
JLabel lblName = new JLabel("姓名:");
JTextField txtName = new JTextField();
JLabel lblSex = new JLabel("性别:");
//JTextField txtSex = new JTextField();
JPanel panelSex = new JPanel();
ButtonGroup bg = new ButtonGroup();
JRadioButton btnBoy = new JRadioButton("男");
JRadioButton btnGirl = new JRadioButton("女");
//默认选中男
btnBoy.setSelected(true);
//加背景色
btnBoy.setBackground(Color.red);
//设置字体
btnBoy.setFont(new Font("黑体", Font.BOLD, 24));
//设置字色
btnBoy.setForeground(Color.YELLOW);
bg.add(btnBoy);
bg.add(btnGirl);
panelSex.add(btnBoy);
panelSex.add(btnGirl);
//
JLabel lblBirth = new JLabel("出生年:");
JTextField txtBirth = new JTextField();
JLabel lblDepartment = new JLabel("院系:");
//JTextField txtDepartment = new JTextField();
String names[] = {"请选择", "计算机系", "中文系", "英语系"};
JComboBox cobDepartment = new JComboBox(names);
JLabel lblAddress = new JLabel("地址:");
JTextField txtAddress = new JTextField();
JButton btnAdd = new JButton("添加");
JButton btnCancel = new JButton("取消");
getContentPane().add(lblId);
getContentPane().add(txtId);
getContentPane().add(lblName);
getContentPane().add(txtName);
getContentPane().add(lblSex);
getContentPane().add(panelSex);
getContentPane().add(lblBirth);
getContentPane().add(txtBirth);
getContentPane().add(lblDepartment);
getContentPane().add(cobDepartment);
getContentPane().add(lblAddress);
getContentPane().add(txtAddress);
getContentPane().add(btnAdd);
getContentPane().add(btnCancel);
//添加
btnAdd.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
//1.先判断用户填写了没
//1.1姓名
String name = txtName.getText();
if (name == null || "".equals(name)) {
JOptionPane.showMessageDialog(null, "请输入学员姓名!");
return;
}
//1.2性别
String sex = btnBoy.isSelected() ? "男" : "女";
//1.3生日 1900~2020年
String birth = txtBirth.getText();
//1.3.1判断是不是4位
if (birth.length() != 4) {
JOptionPane.showMessageDialog(null, "生日 1900~2020年");
return;
}
//1.3.2强转成int
int year = 0;
try {
year = Integer.parseInt(birth);
} catch (Exception e1) {
JOptionPane.showMessageDialog(null, "生日 1900~2020年");
return;
}
//1.3.3 判断范围
if (!(year >= 1900 && year <= 2020)) {
JOptionPane.showMessageDialog(null, "生日 1900~2020年");
return;
}
//1.3判断下拉列表
if (cobDepartment.getSelectedIndex() == 0) {
JOptionPane.showMessageDialog(null, "请选择院系!");
return;
}
//转为字符串
String department = cobDepartment.getSelectedItem() + "";
//1.4地址
String address = txtAddress.getText();
//2.收集信息
Student student = new Student();
student.setName(name);
student.setSex(sex);
student.setBirth(birth);
student.setDepartment(department);
student.setAddress(address);
//3.调服务层
boolean flag = service.add(student);
if (flag) {
JOptionPane.showMessageDialog(null, "添加成功");
//自己关掉自己
dispose();
} else {
JOptionPane.showMessageDialog(null, "添加失败");
}
}
});
//setVisible(true);
}
// public static void main(String[] args) {
// new StudentAddDialog();
// }
}
package com.hr.ui;
import com.hr.entity.Student;
import com.hr.service.StudentService;
import com.hr.service.impl.StudentServiceImpl;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
//修改
/**
* @ClassName StudentUpdateDialog
* @Description: TODO
* @Author 汤永红
* @Date 2020/8/26 0026-8:45
* @Version V1.0
**/
public class StudentUpdateDialog extends JDialog {
//1.把需要的控件全部声明
private JLabel lblId;
private JTextField txtId;
private JLabel lblName;
private JTextField txtName;
private JLabel lblSex;
private JPanel panelSex;
private ButtonGroup bg;
private JRadioButton radBoy;
private JRadioButton radGirl;
private JLabel lblBirth;
private JTextField txtBirth;
private JLabel lblDepartment;
private JComboBox cobDepartment;
private JLabel lblAddress;
private JTextField txtAddress;
private JButton btnEdit;
private JButton btnCancel;
//创建服务
private StudentService service = new StudentServiceImpl();
public StudentUpdateDialog(String id) {
System.out.println(id);
//根据传过来的id查单个
Student stu = service.findOne(Integer.parseInt(id));
System.out.println(stu);
//2.全部初始化
lblId = new JLabel("编号:");
txtId = new JTextField();
txtId.setText(id);//回显id
lblName = new JLabel("姓名:");
txtName = new JTextField();
txtName.setText(stu.getName());
lblSex = new JLabel("性别");
panelSex = new JPanel();
bg = new ButtonGroup();
radBoy = new JRadioButton("男");
radGirl = new JRadioButton("女");
//
if (stu.getSex().equals(radBoy.getText())) {
radBoy.setSelected(true);
} else {
radGirl.setSelected(true);
}
//
lblBirth = new JLabel("出生年:");
txtBirth = new JTextField();
txtBirth.setText(stu.getBirth() != null ? stu.getBirth().substring(0, 4) : stu.getBirth());
lblDepartment = new JLabel("院系:");
cobDepartment = new JComboBox();
//给值: 类似表格的写法// 还有一个叫JList也类似这么写
DefaultComboBoxModel cbm = new DefaultComboBoxModel();
cobDepartment.setModel(cbm);
cbm.addElement("请选择");
cbm.addElement("计算机系");
cbm.addElement("英语系");
cbm.addElement("中文系");
//先获得记录中的系
String department = stu.getDepartment();
//2.比较
int size = cbm.getSize();
for (int i = 0; i < size; i++) {
if ((cbm.getElementAt(i) + "").equals(department)) {
cbm.setSelectedItem(department);
break;
}
}
lblAddress = new JLabel("地址:");
txtAddress = new JTextField();
txtAddress.setText(stu.getAddress());
btnEdit = new JButton("修改");
btnCancel = new JButton("取消");
//3.放
setTitle("修改学员信息");
setSize(400, 600);
//3.1设置布局
this.setLayout(new GridLayout(7, 2, 10, 50));
//3.2放
add(lblId);
add(txtId);
txtId.setEditable(false);//主键不能改
add(lblName);
add(txtName);
add(lblSex);
add(panelSex);
bg.add(radBoy);
bg.add(radGirl);
panelSex.add(radBoy);
panelSex.add(radGirl);
add(lblBirth);
add(txtBirth);
add(lblDepartment);
add(cobDepartment);
add(lblAddress);
add(txtAddress);
add(btnEdit);
add(btnCancel);
//pack();//适合大小
setLocationRelativeTo(null);
//写事件监听
btnEdit.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
//1.获取值
int ids = Integer.parseInt(id);
String name = txtName.getText();
String sex = null;
if (radBoy.isSelected()) {
sex = radBoy.getText();
} else {
sex = radGirl.getText();
}
String birth = txtBirth.getText();
String department = cobDepartment.getSelectedItem() + "";
String address = txtAddress.getText();
Student stu = new Student();
stu.setId(ids);
stu.setName(name);
stu.setSex(sex);
stu.setBirth(birth);
stu.setDepartment(department);
stu.setAddress(address);
//2.封装成对象
//3.调服务层的方法
boolean flag = service.update(stu);
if (flag) {
JOptionPane.showMessageDialog(null, "修改成功");
dispose();//关掉自己
} else {
JOptionPane.showMessageDialog(null, "修改失败");
}
}
});
setModal(true);
setVisible(true);
}
// public static void main(String[] args) {
// new StudentUpdateDialog();
// }
}
数据表
/*
Navicat Premium Data Transfer
Source Server : java95
Source Server Type : MySQL
Source Server Version : 50717
Source Host : localhost:3306
Source Schema : java95
Target Server Type : MySQL
Target Server Version : 50717
File Encoding : 65001
Date: 26/08/2020 14:56:13
*/
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for student
-- ----------------------------
DROP TABLE IF EXISTS `student`;
CREATE TABLE `student` (
`id` int(10) NOT NULL AUTO_INCREMENT,
`name` varchar(20) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
`sex` varchar(4) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL,
`birth` year NULL DEFAULT NULL,
`department` varchar(20) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL,
`address` varchar(50) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL,
PRIMARY KEY (`id`) USING BTREE,
UNIQUE INDEX `id`(`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 917 CHARACTER SET = utf8 COLLATE = utf8_bin ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of student
-- ----------------------------
INSERT INTO `student` VALUES (901, '张老大', '男', 1985, '计算机系', '北京市海淀区');
INSERT INTO `student` VALUES (902, '张老二', '男', 1986, '中文系', '北京市昌平区');
INSERT INTO `student` VALUES (903, '张三', '女', 1990, '中文系', '湖南省永州市');
INSERT INTO `student` VALUES (904, '李四', '男', 1990, '英语系', '辽宁省阜新市');
INSERT INTO `student` VALUES (905, '王五', '女', 1991, '计算机系', '福建省厦门市');
INSERT INTO `student` VALUES (906, '王六', '男', 1988, '计算机系', '湖南省衡阳市');
INSERT INTO `student` VALUES (907, '零零七', '男', 1988, '计算机系', '湖南省长沙市');
INSERT INTO `student` VALUES (908, '零_七', '男', 1988, '计算机系', '湖南省长沙市');
INSERT INTO `student` VALUES (912, '嫦娥', '女', 2000, '中文系', '天上');
INSERT INTO `student` VALUES (913, '燕南天', '男', 2000, '英语系', '浏阳市');
INSERT INTO `student` VALUES (914, '测试', '女', 2010, '中文系', '娄底');
INSERT INTO `student` VALUES (915, '彭维新', '男', 2010, '计算机系', '长沙');
INSERT INTO `student` VALUES (916, '孙司空', '男', 1999, '英语系', '衡阳');
SET FOREIGN_KEY_CHECKS = 1;