按照程序的逻辑(职能)划分:
- dao:数据访问层:数据库的增删该查
- service:业务逻辑层:逻辑判断:if 排序等
- controller:调度:调用哪一个service
- view:视图 接收输入 展示数据
MVC 设计模式
Model:模型层 dao 数据访问层
service 业务逻辑层
Controller :控制器 调度
View:视图层 控制台 html jsp页面
例子:
pojo
package cn.cc.mvc.pojo;
public class Dept {
private String deptno;
private String dname;
private String loc;
public String getDeptno() {
return deptno;
}
public void setDeptno(String deptno) {
this.deptno = deptno;
}
public String getDname() {
return dname;
}
public void setDname(String dname) {
this.dname = dname;
}
public String getLoc() {
return loc;
}
public void setLoc(String loc) {
this.loc = loc;
}
}
dao数据访问层
package cn.cc.mvc.dao;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import cn.cc.mvc.pojo.Dept;
import cn.cc.mvc.util.DbUtil;
//Dept 的CRUD
public class DeptDao {
DbUtil db = new DbUtil();
//添加部门方法
public int addDept(Dept dept) {
String sql = "insert into deptmvc(deptno,dname,loc) values(?,?,?)";
List<Object> para = new ArrayList<Object>();
para.add(dept.getDeptno());
para.add(dept.getDname());
para.add(dept.getLoc());
int result = db.executeOper(sql,para);
return result;
}
//查询部门方法
public List<Dept> getAllDepts() {
String sql = "select deptno,dname,loc from deptmvc";
List<Dept> listDepts = new ArrayList<Dept>();
ResultSet rs = db.executeSelect(sql);
try {
while(rs.next()) {
Dept d = new Dept();
d.setDeptno(rs.getString("deptno"));
d.setDname(rs.getString("dname"));
d.setLoc(rs.getString("loc"));
listDepts.add(d);
}
} catch (SQLException e) {
e.printStackTrace();
}
return listDepts;
}
//按条件查询方法
public List<Dept> getDeptsByLoc(Dept dept){
String sql="select * from dept where loc like ?";
//声明给sql语句中?赋值的集合
List<Object> para=new ArrayList<Object>();
para.add("%"+dept.getLoc()+"%");
ResultSet rs=db.executeSelect(sql, para);
//声明集合:存放rs中的查询结果
List<Dept> listDepts=new ArrayList<Dept>();
try {
while(rs.next()){
Dept d=new Dept();
d.setDeptno(rs.getString("deptno"));
d.setDname(rs.getString("dname"));
d.setLoc(rs.getString("loc"));
listDepts.add(d);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return listDepts;
}
}
service业务逻辑层
package cn.cc.mvc.service;
import java.util.List;
import cn.cc.mvc.dao.DeptDao;
import cn.cc.mvc.pojo.Dept;
public class DeptService {
DeptDao dd = new DeptDao();
public String addDept(Dept dept) {
int result = dd.addDept(dept);
String message="";
if (result == 1) {
message = "添加部门成功";
}else {
message = "添加部门失败";
}
return message;
}
public List<Dept> getAllDepts(){
return dd.getAllDepts();
}
public List<Dept> getDeptsByLoc(Dept dept){
return dd.getDeptsByLoc(dept);
}
}
controller调度层
package cn.cc.mvc.Controller;
import java.util.List;
import cn.cc.mvc.pojo.Dept;
import cn.cc.mvc.service.DeptService;
public class DeptController {
DeptService ds = new DeptService();
public String addDept(Dept dept) {
return ds.addDept(dept);
}
public List<Dept> getAllDepts(){
return ds.getAllDepts();
}
public List<Dept> getDeptsByLoc(Dept dept){
return ds.getDeptsByLoc(dept);
}
}
view视图层
package cn.cc.mvc.view;
import java.util.List;
import java.util.Scanner;
import cn.cc.mvc.Controller.DeptController;
import cn.cc.mvc.pojo.Dept;
public class DeptView {
DeptController dc = new DeptController();
Scanner input = new Scanner(System.in);
public void addDept() {
Dept d = new Dept();
System.out.println("部门编号:");
d.setDeptno(input.next());
System.out.println("部门名称:");
d.setDname(input.next());
System.out.println("部门位置:");
d.setLoc(input.next());
String message = dc.addDept(d);
System.out.println(message);
}
public void showAllDepts() {
List<Dept> depts = dc.getAllDepts();
System.out.println("部门编号\t部门名称\t位置");
for (Dept dept : depts) {
System.out.println(dept.getDeptno()+"\t"+dept.getDname()+"\t"+dept.getLoc());
}
}
//根据地址查询部门信息
public void getDeptsByLoc(){
System.out.println("请输入部门地址:");
Dept d=new Dept();
d.setLoc(input.next());
List<Dept> depts=dc.getDeptsByLoc(d);
System.out.println("部门编号\t部门名称\t位置");
for(Dept dept:depts){
System.out.println(dept.getDeptno()+"\t"+dept.getDname()+"\t"+dept.getLoc());
}
}
}