手记

JDBC实战之女神禁区功能

数据库表结构:
CREATE TABLE `goddess` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `user_name` varchar(30) NOT NULL,
  `sex` int(11) DEFAULT NULL,
  `age` int(11) DEFAULT NULL,
  `birthday` date DEFAULT NULL,
  `email` varchar(30) DEFAULT NULL,
  `mobile` varchar(11) DEFAULT NULL,
  `create_user` varchar(30) DEFAULT NULL,
  `create_date` date DEFAULT NULL,
  `update_user` varchar(30) DEFAULT NULL,
  `update_date` date DEFAULT NULL,
  `isdel` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8;

数据库表数据:
insert  into `goddess`(`id`,`user_name`,`sex`,`age`,`birthday`,`email`,`mobile`,`create_user`,`create_date`,`update_user`,`update_date`,`isdel`) values 
(1,'小溪',1,22,'2000-12-12','xiaoxi@163.com','13911111111','ADMIN','2015-01-08','ADMIN','2015-01-08',0),
(2,'小夏',1,19,'2000-12-12','xiaoxi@163.com','13911111111','ADMIN','2015-01-08','admin','2016-11-22',0),
(3,'小凌',1,22,'2000-12-12','xiaoxi@163.com','13911111111','ADMIN','2015-01-08','ADMIN','2015-01-08',0),
(4,'小红',1,18,'2016-11-21','13838@qq.com','13838383888','admin','2016-11-21','admin','2016-11-21',0),
(5,'小小',1,20,'1990-02-02','123456@qq.com','12345678543','admin','2016-11-21','admin','2016-11-21',0),
(6,'小惜',1,22,'1994-03-03','123@qq.com','13512345678','admin','2016-11-21','admin','2016-11-21',0),
(7,'小小',1,25,'1991-03-06','1991@qq.com','13812345678','admin','2016-11-22','admin','2016-11-22',0);
/**
* JDBC工具类
* @author:凌_惜
* @date:2016年11月21日 上午9:48:28
*/
public class JDBCUtil {

    private static final String URL = "jdbc:mysql://localhost:3306/test";
    private static final String USER = "root";
    private static final String PASSWORD = "1234";
    private static Connection conn = null;

    static {
        try {
            Class.forName("com.mysql.jdbc.Driver");
            conn = DriverManager.getConnection(URL, USER, PASSWORD);
        } catch (Exception e) {
            e.printStackTrace();
        } 
    }

    /**
     * 获取数据库连接
     * @return
     */
    public static Connection getConnection () {
        return conn;
    }

}
/**
* 女神实体类
* @author:凌_惜
* @date:2016年11月21日 上午10:20:29
*/
public class Goddess {

    private Integer id;           
    private String userName; //姓名         
    private Integer sex;  //性别        
    private Integer age;  //年龄         
    private Date birthday;  //生日         
    private String email;   //邮箱        
    private String mobile;  //手机号         
    private String createUser;  //创建人         
    private Date createDate;  //创建时间         
    private String updateUser;  //更新人         
    private Date updateDate;  //更新时间         
    private Integer isdel;   //删除标记  0:否  1:是

    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public String getUserName() {
        return userName;
    }
    public void setUserName(String userName) {
        this.userName = userName;
    }
    public Integer getSex() {
        return sex;
    }
    public void setSex(Integer sex) {
        this.sex = sex;
    }
    public Integer getAge() {
        return age;
    }
    public void setAge(Integer age) {
        this.age = age;
    }
    public Date getBirthday() {
        return birthday;
    }
    public void setBirthday(Date birthday) {
        this.birthday = birthday;
    }
    public String getEmail() {
        return email;
    }
    public void setEmail(String email) {
        this.email = email;
    }
    public String getMobile() {
        return mobile;
    }
    public void setMobile(String mobile) {
        this.mobile = mobile;
    }
    public String getCreateUser() {
        return createUser;
    }
    public void setCreateUser(String createUser) {
        this.createUser = createUser;
    }
    public Date getCreateDate() {
        return createDate;
    }
    public void setCreateDate(Date createDate) {
        this.createDate = createDate;
    }
    public String getUpdateUser() {
        return updateUser;
    }
    public void setUpdateUser(String updateUser) {
        this.updateUser = updateUser;
    }
    public Date getUpdateDate() {
        return updateDate;
    }
    public void setUpdateDate(Date updateDate) {
        this.updateDate = updateDate;
    }
    public Integer getIsdel() {
        return isdel;
    }
    public void setIsdel(Integer isdel) {
        this.isdel = isdel;
    }

}
/**
* 女神Dao层
* @author:凌_惜
* @date:2016年11月21日 上午10:30:55
*/
public class GoddessDao {

    /**
     * 添加女神信息
     * @throws Exception
     */
    public void addGoddess (Goddess goddess) throws Exception {
        Connection conn = JDBCUtil.getConnection();
        String sql = "insert into goddess(user_name,sex,age,birthday,email,mobile,"
                    + "create_user,create_date,update_user,update_date,isdel) "
                    + "values(?,?,?,?,?,?,?,current_date(),?,current_date(),?)";
        PreparedStatement statement = conn.prepareStatement(sql);
        statement.setString(1, goddess.getUserName());
        statement.setInt(2, goddess.getSex());
        statement.setInt(3, goddess.getAge());
        statement.setDate(4, new Date(goddess.getBirthday().getTime()));
        statement.setString(5, goddess.getEmail());
        statement.setString(6, goddess.getMobile());
        statement.setString(7, goddess.getCreateUser());
        statement.setString(8, goddess.getUpdateUser());
        statement.setInt(9, goddess.getIsdel());
        statement.execute();
    }

    /**
     * 批量删除女神信息(逻辑删除)
     * @throws Exception
     */
    public void delGoddess (Integer[] ids) throws Exception {
        Connection conn = JDBCUtil.getConnection();
        String sql = "update goddess set isdel=1 where id=?";
        PreparedStatement statement = conn.prepareStatement(sql);
        for(int i =0 ;i<ids.length;i++){   
            statement.setInt(1,ids[i]);  
            statement.addBatch();                 
        }   
        statement.executeBatch();
    }

    /**
     * 更改女神信息
     * @throws Exception
     */
    public void updateGoddess (Goddess goddess) throws Exception {
        Connection conn = JDBCUtil.getConnection();
        String sql = "update goddess set user_name=?,age=?,birthday=?,email=?,mobile=?,"
                    + "update_user=?,update_date=current_date() where id=?";
        PreparedStatement statement = conn.prepareStatement(sql);
        statement.setString(1, goddess.getUserName());
        statement.setInt(2, goddess.getAge());
        statement.setDate(3, new Date(goddess.getBirthday().getTime()));
        statement.setString(4, goddess.getEmail());
        statement.setString(5, goddess.getMobile());
        statement.setString(6, goddess.getUpdateUser());
        statement.setInt(7, goddess.getId());
        statement.execute();
    }

    /**
     * 查询全部女神信息
     * @return
     * @throws Exception
     */
    public List<Goddess> queryGoddess () throws Exception {
        Connection conn = JDBCUtil.getConnection();
        String sql = "select * from goddess where isdel=0";
        PreparedStatement statement = conn.prepareStatement(sql);
        ResultSet result = statement.executeQuery();
        List<Goddess> goddessList = new ArrayList<Goddess>();
        while (result.next()) {
            Goddess goddess = new Goddess();
            goddess.setId(result.getInt("id"));
            goddess.setUserName(result.getString("user_name"));
            goddessList.add(goddess);
        } 
        return goddessList;
    }

    /**
     * 根据姓名模糊查询女神信息
     * @param name
     * @return
     */
    public List<Goddess> queryGoddessByUserName (String name) throws Exception {
        Connection conn = JDBCUtil.getConnection();
        String sql = "select * from goddess where isdel=0 and user_name like ?";
        PreparedStatement statement = conn.prepareStatement(sql);
        statement.setString(1, "%" + name + "%");
        ResultSet result = statement.executeQuery();
        List<Goddess> goddessList = new ArrayList<Goddess>();
        while (result.next()) {
            Goddess goddess = new Goddess();
            goddess.setId(result.getInt("id"));
            goddess.setUserName(result.getString("user_name"));
            goddessList.add(goddess);
        }
        return goddessList;
    }

    /**
     * 根据id查询女神信息
     * @return
     * @throws Exception
     */
    public Goddess getGoddess (Integer id) throws Exception {
        Connection conn = JDBCUtil.getConnection();
        String sql = "select * from goddess where isdel=0 and id=?";
        PreparedStatement statement = conn.prepareStatement(sql);
        statement.setInt(1, id);
        ResultSet result = statement.executeQuery();
        Goddess goddess = null;
        while (result.next()) {
            goddess = new Goddess();
            goddess.setId(result.getInt("id"));
            goddess.setUserName(result.getString("user_name"));
            goddess.setSex(result.getInt("sex"));
            goddess.setAge(result.getInt("age"));
            goddess.setBirthday(result.getDate("birthday"));
            goddess.setEmail(result.getString("email"));
            goddess.setMobile(result.getString("mobile"));
        }
        return goddess;
    }

}
/**
* 女神action层
* @author:凌_惜
* @date:2016年11月21日 下午1:13:21
*/
public class GoddessAction {

    /**
     * 添加
     * @param goddess
     */
    public void add (Goddess goddess) throws Exception {
        GoddessDao dao = new GoddessDao();
        goddess.setSex(1);
        goddess.setCreateUser("admin");
        goddess.setUpdateUser("admin");
        goddess.setIsdel(0);
        dao.addGoddess(goddess);
    }

    /**
     * 删除
     * @param id
     */
    public void delete (Integer[] ids) throws Exception {
        GoddessDao dao = new GoddessDao();
        dao.delGoddess(ids);
    }

    /**
     * 更新
     * @param goddess
     */
    public void update (Goddess goddess) throws Exception {
        GoddessDao dao = new GoddessDao();
        goddess.setUpdateUser("admin");
        dao.updateGoddess(goddess);
    }

    /**
     * 查询全部
     * @return
     */
    public List<Goddess> query () throws Exception {
        GoddessDao dao = new GoddessDao();
        List<Goddess> list = dao.queryGoddess();
        return list;
    }

    /**
     * 根据名字模糊查询
     * @param name
     * @return
     */
    public List<Goddess> queryByUsername (String name) throws Exception {
        GoddessDao dao = new GoddessDao();
        return dao.queryGoddessByUserName(name);
    }

    /**
     * 根据id查询
     * @param id
     * @return
     */
    public Goddess getGoddess (Integer id) throws Exception {
        GoddessDao dao = new GoddessDao();
        return dao.getGoddess(id);
    }

}
/**
* 女神view层
* @author:凌_惜
* @date:2016年11月21日 下午2:52:48
*/
public class GodessView {

    private static final String CONTEXT = "=====欢迎来到女神禁区,下面是女神禁区功能列表=====\n"
                                        + "字母[m]:主菜单\n"
                                        + "字母[q]:查看全部女神信息\n"
                                        + "字母[g]:查看某位女神详细信息\n"
                                        + "字母[a]:添加女神信息\n"
                                        + "字母[u]:更新女神信息\n"
                                        + "字母[d]:删除女神信息\n"
                                        + "字母[s]:根据名字模糊查询女神信息\n"
                                        + "字母[b]:退出当前功能,返回主菜单\n"
                                        + "字母[e]:退出女神禁区\n"
                                        + "请选择:";
    private static final String OPERATION_MAIN = "m";
    private static final String OPERATION_QUERY = "q";
    private static final String OPERATION_GET = "g";
    private static final String OPERATION_ADD = "a";
    private static final String OPERATION_UPDATE = "u";
    private static final String OPERATION_DELETE = "d";
    private static final String OPERATION_SEARCH = "s";
    private static final String OPERATION_BREAK = "b";
    private static final String OPERATION_EXIT = "e";

    /**
     * 程序入口
     * @param args
     */
    public static void main(String[] args) {
        System.out.println(CONTEXT);
        Scanner scan = new Scanner(System.in);  
        GoddessAction goddessAction = new GoddessAction();
        Goddess goddess = null;
        List<Goddess> list = null;
        String pervious = null;
        Integer step = 1;
        while (scan.hasNext()) {
            String flag = scan.next().trim();
            //退出
            if (OPERATION_EXIT.equalsIgnoreCase(flag)) {
                System.out.println("你已成功退出女神禁区!");
                break;
            }
            //主菜单
            if (OPERATION_MAIN.equalsIgnoreCase(flag)) {
                step = 1;
                pervious = null;
                System.out.println(CONTEXT);
            }
            //退出当前功能,返回主菜单
            if (OPERATION_BREAK.equalsIgnoreCase(flag)) {
                step = 1;
                pervious = null;
                System.out.println(CONTEXT);
            }
            //查看全部女神信息
            if (OPERATION_QUERY.equalsIgnoreCase(flag)) {
                try {
                    list = goddessAction.query();
                    if (list != null) {
                        System.out.println("---本禁区全部女神基本信息如下---");
                        for (Goddess g : list) {
                            System.out.println("编号:" + g.getId() + ",姓名:" + g.getUserName());
                        }
                    } else {
                        System.out.println("查询的女神不存在!");
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                    System.out.println("查询女神基本信息失败!");
                }
            }
            //查看某个女神详细信息
            if (OPERATION_GET.equalsIgnoreCase(flag) || OPERATION_GET.equals(pervious)) {
                pervious = OPERATION_GET;
                if (step == 1) {
                    System.out.println("请输入要查看的女神[ID]:");
                } else if (step == 2) {
                    try {
                        goddess = goddessAction.getGoddess(Integer.valueOf(flag));
                        if (goddess != null) {
                            step = 1;
                            pervious = null;
                            System.out.println("编号:" + goddess.getId() + "\n姓名:" + goddess.getUserName() 
                                            + "\n性别:" + (goddess.getSex() == 1 ? "女":"男") + "\n年龄:" + goddess.getAge() 
                                            + "\n生日:" + goddess.getBirthday() + "\n邮箱:" + goddess.getEmail() 
                                            + "\n手机号:" + goddess.getMobile());
                        } else {
                            step = 1;
                            pervious = null;
                            System.out.println("查询的女神不存在!");
                        }
                    } catch (NumberFormatException e) {
                        step = 1;
                        pervious = null;
                        System.out.println("请输入正确的女神ID:");
                    } catch (Exception e) {
                        e.printStackTrace();
                        step = 1;
                        pervious = null;
                        System.out.println("查询女神详细信息失败!");
                    }
                }
                if(OPERATION_GET.equals(pervious)){
                    step ++;
                }
            }
            //根据名字模糊查询女神信息
            if (OPERATION_SEARCH.equalsIgnoreCase(flag) || OPERATION_SEARCH.equals(pervious)) {
                pervious = OPERATION_SEARCH;
                if (step == 1) {
                    System.out.println("请输入任意女神名字的一个或多个字:");
                } else if (step == 2) {
                    try {
                        list = goddessAction.queryByUsername(flag);
                        if (list != null) {
                            for (Goddess g : list) {
                                System.out.println("编号:" + g.getId() + ",姓名:" + g.getUserName());
                            }
                            step = 1;
                            pervious = null;
                        } else {
                            step = 1;
                            pervious = null;
                            System.out.println("查询的女神不存在!");
                        }
                    } catch (Exception e) {
                        e.printStackTrace();
                        step = 1;
                        pervious = null;
                        System.out.println("查询女神信息失败!");
                    }
                }
                if(OPERATION_SEARCH.equals(pervious)){
                    step ++;
                }
            }
            //添加女神信息
            if (OPERATION_ADD.equalsIgnoreCase(flag) || OPERATION_ADD.equals(pervious)) {
                pervious = OPERATION_ADD;
                if (step == 1) {
                    System.out.println("请输入女神[姓名]:");
                } else if (step == 2) {
                    goddess = new Goddess();
                    goddess.setUserName(flag);
                    System.out.println("请输入女神[年龄]:");
                } else if (step == 3) {
                    try {
                        goddess.setAge(Integer.valueOf(flag));
                        System.out.println("请输入女神[生日],格式为yyyy-MM-dd:");
                    } catch (NumberFormatException e) {
                        step = 2;
                        System.out.println("请输入正确的女神的[年龄]:");
                    }
                } else if (step == 4) {
                    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
                    try {
                        goddess.setBirthday(sdf.parse(flag));
                    } catch (ParseException e) {
                        step = 3;
                        System.out.println("请输入正确的女神的[生日]:");
                    }
                    System.out.println("请输入女神[邮箱]:");
                } else if (step == 5) {
                    goddess.setEmail(flag);
                    System.out.println("请输入女神[手机号]:");
                } else if (step == 6) {
                    goddess.setMobile(flag);
                    try {
                        goddessAction.add(goddess);
                        System.out.println("添加女神信息成功!");
                        step = 1;
                        pervious = null;
                    } catch (Exception e) {
                        e.printStackTrace();
                        step = 1;
                        pervious = null;
                        System.out.println("添加女神信息失败!");
                    }
                } 
                if (OPERATION_ADD.equals(pervious)) {
                    step ++;
                }
            }
            //更新女神信息
            if (OPERATION_UPDATE.equalsIgnoreCase(flag) || OPERATION_UPDATE.equals(pervious)) {
                pervious = OPERATION_UPDATE;
                if (step == 1) {
                    System.out.println("请输入要更新的女神的[ID]:");
                } else if (step == 2) { 
                    try {
                        Integer id = Integer.valueOf(flag);
                        goddess = goddessAction.getGoddess(id);
                        if (goddess == null) {
                            step = 1;
                            System.out.println("输入的女神[ID]不存在哦!");
                        }
                    } catch (NumberFormatException e) {
                        step = 1;
                        System.out.println("请输入正确的女神[ID]]:");
                    } catch (Exception e) {
                        step = 1;
                        System.out.println("输入的女神[ID]不存在哦!");
                    }
                    System.out.println("请输入女神[姓名]:(如不更新该字段,则输入null)");
                } else if (step == 3) {
                    if (!"null".equalsIgnoreCase(flag)) {
                        goddess.setUserName(flag);
                    }
                    System.out.println("请输入女神[年龄]:(如不更新该字段,则输入null)");
                } else if (step == 4) {
                    try {
                        if (!"null".equalsIgnoreCase(flag)) {
                            Integer age = Integer.valueOf(flag);
                            goddess.setAge(age);
                        }
                        System.out.println("请输入女神[生日],格式为yyyy-MM-dd:(如不更新该字段,则输入null)");
                    } catch (NumberFormatException e) {
                        step = 3;
                        System.out.println("请输入正确的女神[年龄]:");
                    }
                } else if (step == 5) {
                    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
                    try {
                        if (!"null".equalsIgnoreCase(flag)) {
                            goddess.setBirthday(sdf.parse(flag));
                        }
                        System.out.println("请输入女神[邮箱]:(如不更新该字段,则输入null)");
                    } catch (ParseException e) {
                        step = 4;
                        System.out.println("请输入正确的女神的[生日]:");
                    }
                } else if (step == 6) {
                    if (!"null".equalsIgnoreCase(flag)) {
                        goddess.setEmail(flag);
                    }
                    System.out.println("请输入女神[手机号]:(如不更新该字段,则输入null)");
                } else if (step == 7) {
                    if (!"null".equalsIgnoreCase(flag)) {
                        goddess.setMobile(flag);
                    }
                    try {
                        goddessAction.update(goddess);
                        System.out.println("更新女神信息成功!");
                        step = 1;
                        pervious = null;
                    } catch (Exception e) {
                        e.printStackTrace();
                        step = 1;
                        pervious = null;
                        System.out.println("更新女神信息失败!");
                    }
                } 
                if (OPERATION_UPDATE.equals(pervious)) {
                    step ++;
                }
            }
            //删除女神信息
            if (OPERATION_DELETE.equalsIgnoreCase(flag) || OPERATION_DELETE.equals(pervious)) {
                pervious = OPERATION_DELETE;
                if (step == 1) {
                    System.out.println("请输入要删除的女神[ID]:(删除多个用逗号隔开,如1,2)");
                } else if (step == 2) {
                    try {
                        String[] ss = flag.split(",");
                        Integer[] ids = new Integer[ss.length];
                        for (int i = 0; i < ss.length; i++) {
                            ids[i] = Integer.parseInt(ss[i]);
                        }
                        goddessAction.delete(ids);
                        System.out.println("删除女神信息成功!");
                        step = 1;
                        pervious = null;
                    } catch (NumberFormatException e) {
                        step = 1;
                        System.out.println("请输入正确的女神[ID]:");
                    } catch (Exception e) {
                        e.printStackTrace();
                        step = 1;
                        pervious = null;
                        System.out.println("删除女神信息失败!");
                    }
                }
                if(OPERATION_DELETE.equals(pervious)){
                    step ++;
                }
            }
        }
    }

}

35人推荐
随时随地看视频
慕课网APP

热门评论

数据库的代码或者视图也弄出来啊

不然谁知道数据库里面的是什么

数据库的代码或者视图也弄出来啊

不然谁知道数据库里面的是什么

更新那里有点问题吧,如果输入null会出错的

查看全部评论