在视图层,我们看到有不同的数字代表不同的功能,我们以其中一个为例,添加编辑为例:
方法为editZhangWu()方法,代码如下:
private void editZhangWu() {
Scanner sc = new Scanner(System.in);
System.out.println("请输入ID号");
int id = sc.nextInt();
System.out.println("请输入新的账务类别");
String flname = sc.next();
System.out.println("请输入新的花费金额");
double money = sc.nextDouble();
System.out.println("请输入新的时间");
String createtime = sc.next();
System.out.println("请输入新的花费详细描述");
String dest = sc.next();
ZhangWu z = new ZhangWu(id,flname,money,createtime,dest);
controller.editZhangWu(z);
System.out.println("账务编辑成功!");
}
当用户选择编辑账务是,运行此方法,用户输入信息,然后接受,把他们存为ZhangWu类List,调用控制层ediyZhangWu方法。
我们看控制层方法:
package com.fei.gj.controller;
import java.util.List;
import com.fei.gj.domain.ZhangWu;
import com.fei.gj.service.ZhangWuService;
/**
* 控制器,把view层的数据传递给service层
* @author fei
*
*/
public class ZhangWuController {
private ZhangWuService service = new ZhangWuService();
// 查询所有账务
public List<ZhangWu> selectAll(){
return service.selectAll();
}
// 条件查询
public List<ZhangWu> selectTo(String startDate,String endDate){
return service.selectTo(startDate, endDate);
}
public void addZhangWu(ZhangWu z) {
service.addZhangWu(z);
}
// 编辑账务
public void editZhangWu(ZhangWu z) {
service.editZhangWu(z);
}
// 删除账务
public void delectZhangWu(int id) {
service.delectZhangWu(id);
}
}
不要看其他,找到editZhangWU(ZhangWu z)方法,他调用service层的editZhangWU(ZhangWu z)方法,实际上,因为程序简单,service也是这种形式,它调用dao的editZhangWU(ZhangWu z)方法,我们直接看dao的方法:
package com.fei.gj.dao;
//实现数据库的增删改查
import java.sql.SQLException;
import java.util.List;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import com.fei.gj.domain.ZhangWu;
import com.fei.gj.tools.JDBCUtils;
public class ZhangWuDao {
private QueryRunner qr = new QueryRunner(JDBCUtils.getConnection());
// 编辑账务
public void editZhangWu(ZhangWu z) {
try {
String sql = "UPDATE gj set flname = ?,money = ?,createtime = ?,dest = ? WHERE id = ?";
Object[] param = {z.getFlname(),z.getMoney(),z.getCreatetime(),z.getDest(),z.getId()};
qr.update(sql,param);
}catch(SQLException e) {
System.out.println(e);
throw new RuntimeException("编辑账务失败");
}
}
}
我把其他方法删掉,只看删除方法。
一个sql语句,一个传参,就能操作数据库,实际上其他的功能跟这个很相似,查看是select,删除delete,添加insert
这是其中细节要注意和加上异常处理就可以了。
我们接下来看程序截图
下篇,我们看运行截图和文件程序下载