利用上篇博客创建的DBItil工具类中的方法(可参考:DBUtil数据库工具类),本篇博客将创建一个简易的学生管理系统
实战
import java.sql.ResultSet;
import java.util.Scanner;
public class Realize2 {
static boolean flag = true;
public static void main(String[] args) {
while(flag == true) {
menu();
}
}
static void menu() {
System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~");
System.out.println("~~~~~~~~学生管理系统~~~~~~~~");
System.out.println("_______1.添加学生信息_______");
System.out.println("_______2.删除学生信息_______");
System.out.println("_______3.修改学生信息_______");
System.out.println("_______4.查询学生信息_______");
System.out.println("_______0.退出系统__________");
System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~");
Scanner scanner = new Scanner(System.in);
int num = scanner.nextInt();
switch (num) {
case 1: {
System.out.println("请先输入学号:");
String id = scanner.next();
if(DBUtil.exist("select * from user_info where id=?",id)) {
System.err.println("学号重复!添加失败");
return;
}
System.out.println("请先输入姓名:");
String name = scanner.next();
System.out.println("请输入电话:");
String mobile = scanner.next();
System.out.println("请输入地址:");
String address = scanner.next();
if(DBUtil.upDate("insert into user_info (id,name,mobile,address) values (?,?,?,?)",id,name,mobile,address)){
System.out.println("添加成功!");
break;
}else {
System.err.println("添加失败!SQL语句错误!");
break;
}
}
case 2: {
System.out.println("请先输入学号:");
String id = scanner.next();
if(!DBUtil.exist("select * from user_info where id=?",id)) {
System.err.println("学号不存在!删除失败");
return;
}
String sql = "delete from user_info where id='"+id+"'";
if(DBUtil.upDate("delete from user_info where id=?",id)) {
System.out.println("删除成功!");
}else {
System.err.println("删除失败!");
}
break;
}
case 3: {
System.out.println("请先输入学号:");
String id = scanner.next();
if(!DBUtil.exist("select * from user_info where id=?",id)) {
System.err.println("学号不存在!修改失败");
return;
}
System.out.println("请再输入修改后的姓名:");
String name = scanner.next();
System.out.println("请再输入修改后的电话:");
String mobile = scanner.next();
System.out.println("请再输入修改后的地址:");
String address = scanner.next();
if(DBUtil.upDate("update user_info set name=?,mobile=?,address=? where id=?",name,mobile,address,id)){
System.out.println("修改成功!");
}else {
System.err.println("修改失败!");
}
break;
}
case 4: {
System.out.println("请输入要查询的学号:");
String id = scanner.next();
if(!DBUtil.exist("select * from user_info where id=?",id)) {
System.err.println("学号不存在!查询失败");
return;
}
class RowMapper implements IRowMapper{
@Override
public void rowMapper(ResultSet resultSet) {
try {
if(resultSet.next()) {
String name = resultSet.getString("name");
String mobile = resultSet.getString("mobile");
String address = resultSet.getString("address");
System.out.println("学号:"+id+",姓名:"+name+",电话:"+mobile+",地址:"+address);
return;
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
String sql = "select * from user_info where id=?";
IRowMapper rowMapper = new RowMapper();
DBUtil.select(sql,rowMapper,id);
break;
}
case 0: {
flag = false;
return;
}
default:
System.err.println("请输入正确序号!");
break;
}
}
}
Lambda优化
考虑到工具类使用的IRowMapper属于函数式接口,在case 4中,创建了一个内部类我们可以改编为匿名内部类并且使用Lambda表达式简化,例如:
case 4: {
System.out.println("请输入要查询的学号:");
String id = scanner.next();
if(!DBUtil.exist("select * from user_info where id=?",id)) {
System.err.println("学号不存在!查询失败");
return;
}
IRowMapper rowMapper = (ResultSet resultSet)->{
try {
if(resultSet.next()) {//9、获取table中的数据
String name = resultSet.getString("name");
String mobile = resultSet.getString("mobile");
String address = resultSet.getString("address");
System.out.println("学号:"+id+",姓名:"+name+",电话:"+mobile+",地址:"+address);
}
} catch (Exception e) {
e.printStackTrace();
}
};
String sql = "select * from user_info where id=?";//1、首先获取操作语句
DBUtil.select(sql,rowMapper,id);
}
还可以进一步简化:
case 4: {
System.out.println("请输入要查询的学号:");
String id = scanner.next();
if(!DBUtil.exist("select * from user_info where id=?",id)) {
System.err.println("学号不存在!查询失败");
return;
}
DBUtil.select(sql,(ResultSet resultSet)->{
try {
if(resultSet.next()) {//
String name = resultSet.getString("name");
String mobile = resultSet.getString("mobile");
String address = resultSet.getString("address");
System.out.println("学号:"+id+",姓名:"+name+",电话:"+mobile+",地址:"+address);
}
} catch (Exception e) {
e.printStackTrace();
}
},id);
}