package org.lxh.useradmin.dao;
import java.util.List;
import org.lxh.useradmin.vo.User;
public interface IUserDAO {
/**
* 表示数据库的增加操作
*
* @param user
* @return
* @throws Exception
*/
public boolean doCreate(User user) throws Exception;
public boolean doUpdate(User user) throws Exception;
/**
* 表示删除操作,按编号删除
*
* @param id
* @return
* @throws Exception
*/
public boolean doDelete(int id) throws Exception;
/**
* 表示数据库的查询操作
*
* @param id
* @return
* @throws Exception
*/
public User findById(int id) throws Exception;
/**
* 查询的时候将返回一组对象
*
* @param keyWord
* @return
* @throws Exception
*/
public List<User> findAll(String keyWord) throws Exception;
}
-------------------------
package org.lxh.useradmin.dao.impl;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
import org.lxh.useradmin.dao.IUserDAO;
import org.lxh.useradmin.vo.User;
public class IUserDAOImpl implements IUserDAO {
private Connection conn = null;
public IUserDAOImpl(Connection conn) {
this.conn = conn;
}
@Override
public boolean doCreate(User user) throws Exception {
boolean flag = false;
PreparedStatement pstmt = null;
String sql = "INSERT INTO user(name,sex,birthday) VALUES (?,?,?) ";
try {
pstmt = this.conn.prepareStatement(sql);
pstmt.setString(1, user.getName()); // 所有的内容从user类中取出
pstmt.setString(2, user.getSex()); // 所有的内容从user类中取出
pstmt.setDate(3, new java.sql.Date(user.getBirthday().getTime()));
if (pstmt.executeUpdate() > 0) {// 至少已经更新了一行
flag = true;
}
} catch (Exception e) {
throw e;
} finally { // 不管如何抛出,最终肯定是要进行数据库的关闭操作的
if (pstmt != null) {
try {
pstmt.close();
} catch (Exception e1) {
}
}
}
return flag;
}
@Override
public boolean doDelete(int id) throws Exception {
boolean flag = false;
PreparedStatement pstmt = null;
String sql = "DELETE FROM user WHERE id=? ";
try {
pstmt = this.conn.prepareStatement(sql);
pstmt.setInt(1, id); // 所有的内容从user类中取出
if (pstmt.executeUpdate() > 0) {// 至少已经更新了一行
flag = true;
}
} catch (Exception e) {
throw e;
} finally { // 不管如何抛出,最终肯定是要进行数据库的关闭操作的
if (pstmt != null) {
try {
pstmt.close();
} catch (Exception e1) {
}
}
}
return flag;
}
@Override
public boolean doUpdate(User user) throws Exception {
boolean flag = false;
PreparedStatement pstmt = null;
String sql = "UPDATE user SET name=?,sex=?,birthday=? WHERE id=?";
try {
pstmt = this.conn.prepareStatement(sql);
pstmt.setString(1, user.getName()); // 所有的内容从user类中取出
pstmt.setString(2, user.getSex()); // 所有的内容从user类中取出
pstmt.setDate(3, new java.sql.Date(user.getBirthday().getTime()));
pstmt.setInt(4, user.getId());
if (pstmt.executeUpdate() > 0) {// 至少已经更新了一行
flag = true;
}
} catch (Exception e) {
throw e;
} finally { // 不管如何抛出,最终肯定是要进行数据库的关闭操作的
if (pstmt != null) {
try {
pstmt.close();
} catch (Exception e1) {
}
}
}
return flag;
}
@Override
public List<User> findAll(String keyWord) throws Exception {
List<User> all = new ArrayList<User>();
PreparedStatement pstmt = null;
String sql = "SELECT id,name,sex,birthday FROM user WHERE name LIKE ? OR sex LIKE ? OR birthday LIKE ?";
try {
pstmt = this.conn.prepareStatement(sql);
pstmt.setString(1, "%" + keyWord + "%");
pstmt.setString(2, "%" + keyWord + "%");
pstmt.setString(3, "%" + keyWord + "%");
ResultSet rs = pstmt.executeQuery(); // 执行查询操作
while (rs.next()) {
User user = new User();
user.setId(rs.getInt(1));
user.setName(rs.getString(2));
user.setSex(rs.getString(3));
user.setBirthday(rs.getDate(4));
all.add(user); // 所有的内容向集合中插入
}
rs.close();
} catch (Exception e) {
throw e;
} finally { // 不管如何抛出,最终肯定是要进行数据库的关闭操作的
if (pstmt != null) {
try {
pstmt.close();
} catch (Exception e1) {
}
}
}
return all;
}
@Override
public User findById(int id) throws Exception {
User user = null;
PreparedStatement pstmt = null;
String sql = "SELECT id,name,sex,birthday FROM user WHERE id=?";
try {
pstmt = this.conn.prepareStatement(sql);
pstmt.setInt(1, id);
ResultSet rs = pstmt.executeQuery(); // 执行查询操作
if (rs.next()) {
user = new User();
user.setId(rs.getInt(1));
user.setName(rs.getString(2));
user.setSex(rs.getString(3));
user.setBirthday(rs.getDate(4));
}
rs.close();
} catch (Exception e) {
throw e;
} finally { // 不管如何抛出,最终肯定是要进行数据库的关闭操作的
if (pstmt != null) {
try {
pstmt.close();
} catch (Exception e1) {
}
}
}
return user;
}
}
----------------------------
package org.lxh.useradmin.dao.proxy;
import java.util.List;
import org.lxh.useradmin.dao.IUserDAO;
import org.lxh.useradmin.dao.impl.IUserDAOImpl;
import org.lxh.useradmin.dbc.DataBaseConnection;
import org.lxh.useradmin.vo.User;
public class IUserDAOProxy implements IUserDAO {
private DataBaseConnection dbc = null;
private IUserDAO dao = null;
public IUserDAOProxy() {
this.dbc = new DataBaseConnection();
this.dao = new IUserDAOImpl(this.dbc.getConnection());
}
@Override
public boolean doCreate(User user) throws Exception {
boolean flag = true;
try {
flag = this.dao.doCreate(user);
} catch (Exception e) {
throw e;
} finally {
this.dbc.close();
}
return flag;
}
@Override
public boolean doDelete(int id) throws Exception {
boolean flag = true;
try {
flag = this.dao.doDelete(id);
} catch (Exception e) {
throw e;
} finally {
this.dbc.close();
}
return flag;
}
@Override
public boolean doUpdate(User user) throws Exception {
boolean flag = true;
try {
flag = this.dao.doUpdate(user);
} catch (Exception e) {
throw e;
} finally {
this.dbc.close();
}
return flag;
}
@Override
public List<User> findAll(String keyWord) throws Exception {
List<User> all = null;
try {
all = this.dao.findAll(keyWord);
} catch (Exception e) {
throw e;
} finally {
this.dbc.close();
}
return all;
}
@Override
public User findById(int id) throws Exception {
User user = null;
try {
user = this.dao.findById(id);
} catch (Exception e) {
throw e;
} finally {
this.dbc.close();
}
return user;
}
}
-----------------------------
package org.lxh.useradmin.dbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class DataBaseConnection {
private static final String DBDRIVER = "org.gjt.mm.mysql.Driver" ;
private static final String DBURL = "jdbc:mysql://localhost:3306/haobo" ;
private static final String DBUSER = "root" ;
private static final String DBPASS = "haobo" ;
private Connection conn = null ;
public DataBaseConnection(){
try {
Class.forName(DBDRIVER) ;
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
conn = DriverManager.getConnection(DBURL, DBUSER,DBPASS) ;
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public Connection getConnection(){
return this.conn ;
}
public void close(){
if(this.conn!=null){
try {
this.conn.close() ;
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
----------------------------------
package org.lxh.useradmin.factory;
import org.lxh.useradmin.dao.IUserDAO;
import org.lxh.useradmin.dao.proxy.IUserDAOProxy;
public class DAOFactory {
public static IUserDAO getIUserDAOInstance(){
return new IUserDAOProxy() ;
}
}
--------------------
package org.lxh.useradmin.menu;
import org.lxh.useradmin.operate.UserOperate;
import org.lxh.useradmin.util.InputData;
public class Menu {
public Menu() {
while (true) {
this.show();
}
}
public void show() {
System.out.println("======== MLDN人员管理系统 ========");
System.out.println(" 1、增加用户");
System.out.println(" 2、修改用户");
System.out.println(" 3、删除用户");
System.out.println(" 4、查询单个用户");
System.out.println(" 5、查询全部用户");
System.out.println(" 6、退出系统");
InputData input = new InputData();
int ch = input.getInt("/n请选择:", "请输入正确的选项,");
switch (ch) {
case 1: {
UserOperate.insert() ;
break;
}
case 2: {
UserOperate.update() ;
break;
}
case 3: {
UserOperate.delete() ;
break;
}
case 4: {
UserOperate.findId() ;
break;
}
case 5: {
UserOperate.findAll() ;
break;
}
case 6: {
System.exit(1);
break;
}
default: {
System.out.println("请选择正确的选项!");
break;
}
}
}
}
----------------------
package org.lxh.useradmin.operate;
import java.util.Iterator;
import java.util.List;
import org.lxh.useradmin.factory.DAOFactory;
import org.lxh.useradmin.util.InputData;
import org.lxh.useradmin.vo.User;
public class UserOperate {
public static void insert() {
User user = new User();
InputData input = new InputData();
user.setName(input.getString("请输入姓名:"));
user.setSex(input.getString("请输入性别:"));
user.setBirthday(input.getDate("请输入生日:", "内容必须是日期(yyyy-mm-dd),"));
try {
DAOFactory.getIUserDAOInstance().doCreate(user);
} catch (Exception e) {
e.printStackTrace();
}
}
public static void update() {
InputData input = new InputData();
int id = input.getInt("请输入要修改用户的编号:", "编号必须是数字,");
User user = null;
try {
user = DAOFactory.getIUserDAOInstance().findById(id);
} catch (Exception e) {
e.printStackTrace();
}
if (user != null) {
user.setName(input.getString("请输入姓名(原姓名:" + user.getName() + "):"));
user.setSex(input.getString("请输入性别(原姓名:" + user.getSex() + "):"));
user.setBirthday(input.getDate("请输入生日(原生日:" + user.getBirthday()
+ "):", "内容必须是日期(yyyy-mm-dd),"));
try {
DAOFactory.getIUserDAOInstance().doUpdate(user) ;
} catch (Exception e) {
e.printStackTrace();
}
} else {
System.out.println("要查找的用户不存在!");
}
}
public static void delete() {
InputData input = new InputData();
int id = input.getInt("请输入要删除的用户编号:", "编号必须是数字,");
try {
DAOFactory.getIUserDAOInstance().doDelete(id) ;
} catch (Exception e) {
e.printStackTrace();
}
}
public static void findId() {
InputData input = new InputData();
int id = input.getInt("请输入要查询的编号:", "编号必须是数字,");
User user = null;
try {
user = DAOFactory.getIUserDAOInstance().findById(id);
} catch (Exception e) {
e.printStackTrace();
}
if (user != null) {
System.out.println(user);
} else {
System.out.println("要查找的用户不存在!");
}
}
public static void findAll() {
InputData input = new InputData();
String keyWord = input.getString("请输入要查询的关键字:") ;
List<User> allUser = null ;;
try {
allUser = DAOFactory.getIUserDAOInstance().findAll(keyWord);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Iterator<User> iter = allUser.iterator() ;
while(iter.hasNext()){
User user = iter.next() ;
System.out.println(user);
}
}
}
------------------
package org.lxh.useradmin.util;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class InputData {
private BufferedReader buf = null;
public InputData() {
this.buf = new BufferedReader(new InputStreamReader(System.in));
}
public int getInt(String info, String err) {
int i = 0;
boolean flag = true;
while (flag) {
String str = this.getString(info);
if (str.matches("//d+")) {
i = Integer.parseInt(str);
flag = false;
} else {
System.out.print(err);
}
}
return i;
}
public String getString(String info) {
String str = null;
System.out.print(info);
try {
str = this.buf.readLine();
} catch (IOException e) {
}
return str;
}
public Date getDate(String info, String err) {
Date date = null;
boolean flag = true;
while (flag) {
String str = this.getString(info);
if (str.matches("//d{4}-//d{2}-//d{2}")) {
try {
date = new SimpleDateFormat("yyyy-MM-dd").parse(str);
flag = false;
} catch (ParseException e) {
}
} else {
System.out.print(err);
}
}
return date;
}
}
-----------
package org.lxh.useradmin.vo;
import java.util.Date;
public class User {
private int id;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
private String name;
private String sex;
private Date birthday;
@Override
public String toString() {
return "编号:" + this.id + ";姓名:" + this.name + ";性别:" + this.sex
+ ";生日:" + this.birthday;
}
}
-----------
DROP TABLE user ;
CREATE TABLE user(
id INT AUTO_INCREMENT PRIMARY KEY ,
name VARCHAR(50) NOT NULL ,
sex VARCHAR(10) NOT NULL ,
birthday DATE
) ;