简单的DAO操作

来源:互联网 发布:java redis消息队列 编辑:程序博客网 时间:2024/06/05 19:32

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
) ;

原创粉丝点击