控制层的功能是连接视图层和模型层,主要实现的是根据视图层的命令,调用模型层的方法;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import jdbc_chuan.dao.GoddessDao;
import jdbc_chuan.model.Goddess;
public class GoddessAction {
GoddessDao dao=new GoddessDao();
public void add(Goddess g) throws SQLException{
dao.addGodness(g);
}
public void update(Goddess g) throws SQLException{
dao.updateGoddess(g);
}
public void del(Integer id) throws SQLException{
dao.delGoddess(id);
}
public List<Goddess> query() throws SQLException{
return dao.query();
}
public List<Goddess> query(List<Map<String,Object>>params) throws SQLException{
return dao.query(params);
}
public Goddess getquery(Integer id) throws SQLException{
return dao.getquery(id);
}
}
视图层:
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import java.util.Scanner;
import com.imooc.action.GoddessAction;
import com.imooc.model.Goddess;
public class View {
private static final String CONTEXT="欢迎来到女神禁区:\n" +
"下面是女神禁区的功能列表:\n" +
"[MAIN/M]:主菜单\n" +
"[QUERY/Q]:查看全部信息\n" +
"[GET/G]:查看单条详细信息\n" +
"[ADD/A]:添加女神信息\n" +
"[UPDATE/U]:更新信息\n" +
"[DELETE/D]:删除信息\n" +
"[SEARCH/S]:查询信息(根据姓名、手机号来查询)\n" +
"[EXIT/E]:退出\n" +
"[BREAK/B]:退出当前功能,返回主菜单";
private static final String OPERATION_MAIN="MAIN";
private static final String OPERATION_QUERY="QUERY";
private static final String OPERATION_GET="GET";
private static final String OPERATION_ADD="ADD";
private static final String OPERATION_UPDATE="UPDATE";
private static final String OPERATION_DELETE="DELETE";
private static final String OPERATION_SEARCH="SEARCH";
private static final String OPERATION_EXIT="EXIT";
private static final String OPERATION_BREAK="BREAK";
public static void main(String[] args) {
System.out.println(CONTEXT);
//怎么保持程序一直运行
Scanner scan=new Scanner(System.in);
Goddess goddess=new Goddess();
GoddessAction action=new GoddessAction();
String prenious=null;
Integer step=1;
while(scan.hasNext()){
String in=scan.next().toString();
if(OPERATION_EXIT.equals(in.toUpperCase())
||OPERATION_EXIT.substring(0, 1).equals(in.toUpperCase())){
System.out.println("您已成功退出数据库。");
break;
}else if(OPERATION_QUERY.equals(in.toUpperCase())
||OPERATION_QUERY.substring(0, 1).equals(in.toUpperCase())){
try {
List<Goddess> list=action.query();
for (Goddess go : list) {
System.out.println(go.getId()+",姓名:"+go.getUser_name());
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}else if(OPERATION_ADD.equals(in.toUpperCase())
||OPERATION_ADD.substring(0, 1).equals(in.toUpperCase())
||OPERATION_ADD.equals(prenious)){
prenious=OPERATION_ADD;
//新增女神
if(1==step){
System.out.println("请输入[姓名]");
}else if(2==step){
goddess.setUser_name(in);
System.out.println("请输入[年龄]");
}else if(3==step){
goddess.setAge(Integer.valueOf(in));
System.out.println("请输入[生日],格式如:yyyy-MM-dd");
}else if(4==step){
SimpleDateFormat sf=new SimpleDateFormat("yyyy-MM-dd");
Date birthday=null;
try {
birthday = sf.parse(in);
goddess.setBirthday(birthday);
System.out.println("请输入[邮箱]");
} catch (ParseException e) {
e.printStackTrace();
System.out.println("您输入的格式有误,请重新输入");
step=3;
}
}else if(5==step){
goddess.setEmail(in);
System.out.println("请输入[手机号]");
}else if(6==step){
goddess.setMobile(in);
try {
action.add(goddess);
System.out.println("新增成功");
} catch (Exception e) {
e.printStackTrace();
System.out.println("新增失败");
}
}
if(OPERATION_ADD.equals(prenious)){
step++;
}
}else{
System.out.println("您输入的值为:"+in);
}
}
}
}
注意上面的两个标记,第一个是precious,用来保证在完成这一项功能之前不会跳到另外的功能去;
第二个是step,用来一步步的执行当前功能,而不是一次性全都输出