Dao模式02



Dao-jdvd封装 

一个典型的Dao模式主要由以下几部分组成

Dao接口:把对数据库的所有操作定义成抽象方法,可以提供多种实现

Dao接口:针对不同数据库给出的Dao接口定义方法的具体实现

实体类:用于存放于存放与传输对象数据

数据库链接和关闭工具类:避免了数据库链接和关闭代码的重复性使用,方便代码修改..

//与数据库建立链接

 public Connection lianjie(){
  Connection connection=null;
   try {
   Class.forName("com.mysql.jdbc.Driver");
  } catch (ClassNotFoundException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  
   try {
   connection=DriverManager.getConnection("jdbc:mysql://localhost:3306/ren","root","root");
  } catch (SQLException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  return connection;
 
 }

//实现数据 添加 删除 修改功能

 public int tianjiashangchuxiugai(String sql,Object[]objects){
   conn=lianjie();
   PreparedStatement preparedStatement=null;
   int an = 0;
   try {
   preparedStatement=conn.prepareStatement(sql);
   if (objects!=null) {
    for (int i = 0; i < objects.length; i++) {
     preparedStatement.setObject(i+1, objects[i]);
    }
   }
  
  } catch (SQLException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
   try {
    an=preparedStatement.executeUpdate();
   } catch (SQLException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   }
  return an;
 }

//查询功能
 public ResultSet chaxun(String sql){
  conn=lianjie();
  ResultSet an = null;
  PreparedStatement preparedStatement=null;
  try {
   preparedStatement=conn.prepareStatement(sql);
   an=preparedStatement.executeQuery();
  } catch (SQLException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  return an;
 }

 //关闭资源管理器
 public void guanbi(Connection connection,PreparedStatement preparedStatement,ResultSet resultSet){
  if (resultSet!=null) {
   try {
    resultSet.close();
   } catch (SQLException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   }
  }
  
  if (preparedStatement!=null) {
   try {
    preparedStatement.close();
   } catch (SQLException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   }
  }
  if (connection!=null) {
   try {
    connection.close();
   } catch (SQLException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   }
  }

//创建一个类 字段=建立链接数据库要执行某张表的属性

public class Fenzhuan implements Serializable {
  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 getAge() {
  return age;
 }
 public void setAge(String age) {
  this.age = age;
 }
 
 
 public Fenzhuan(int id, String name, String age, String sex) {
  super();
  this.id = id;
  this.name = name;
  this.age = age;
  this.sex = sex;
 }


 
public Fenzhuan() {
 super();
}
public String getSex() {
 return sex;
}
public void setSex(String sex) {
 this.sex = sex;
}
private int id;

private String name;
  private String age;
 
  private  String sex;
 
 
 
 

}



//创建一个接口 实现里面的方法


public interface Moban {
     int tianjia(Fenzhuan fenzhuan);
     int shangchu(Fenzhuan fenzhuan);
     int xiugai(Fenzhuan fenzhuan);
     List<Fenzhuan> chaxun();
}

//实现里面的方法

public class shixianlei extends Dao implements Moban{

 
 //添加
 public int tianjia(Fenzhuan fenzhuan) {
  String sql="insert into renlei(`name`,age,sex)values(?,?,?)";
  Object [] objects=new Object[]{fenzhuan.getName(),fenzhuan.getAge(),fenzhuan.getSex()};  
  int an=this.tianjiashangchuxiugai(sql, objects);
  return an;
 }


 //删除
 public int shangchu(Fenzhuan fenzhuan) {
  String sql="DELETE FROM renlei WHERE id=? ";
  Object [] objects=new Object[]{fenzhuan.getId()};
 int an=this.tianjiashangchuxiugai(sql, objects);
  return an;
 }


 //修改 
 public int xiugai(Fenzhuan fenzhuan) {
  String sql="UPDATE renlei SET `name`=? WHERE id=?";
  Object [] objects=new Object[]{fenzhuan.getName(),fenzhuan.getId()};
  int an=this.tianjiashangchuxiugai(sql, objects);  
  return an;
 }

 //查询
 public List<Fenzhuan> chaxun() {
  String sql="SELECT * FROM renlei";
  ResultSet an=this.chaxun(sql);
  List<Fenzhuan> list =new ArrayList<Fenzhuan>();
 
   try {
  while (an.next()) {
   
     Fenzhuan fenzhuan=new Fenzhuan();
     fenzhuan.setId(an.getInt("id"));
     fenzhuan.setName(an.getString("name"));
     fenzhuan.setAge(an.getString("age"));
          fenzhuan.setSex(an.getString("sex"));     
     l
     list.add(fenzhuan);
  }
 } catch (SQLException e) {
  // TODO Auto-generated catch block
  e.printStackTrace();
 }
  return list;
 }

}

Properties类

properies类它可以实现读取Java配置文件,这样我们就可以把常用的配置信息写在配置文件中方便维护和修改

添加文件内容 database.properties配置文件中有:

driver=com.mysql.jdbc.Driver

url=jdbc:mysql://localhost:3306/数据库名

username=用户名

password=用户密码

public class BaseDao{
     private static String driver=""; //数据库驱动字符串
     private static String url="";    //链接URl字符串
     private static String user="";    //用户登陆用户名
     private static String passwrod="";  //用户密码
    static{
        init();

    }
    public static void init(){
           Propers params=new Properties();
         String configFile="database.properties";
           InputStream is=BaseDao.Class.getClassLoader().getResourceAsStream(configFile);
          try{
            //从输入流中读取属性列表
              params.load(is);

         }catch(IOExceptipn e){
           e.printStackTrace();
 
 
        }

        driver=params.getProperty("driver");
        url=params.getProperty("url");
       userr=params.getProperty("user");
       passwrodr=params.getProperty("passwrod");


     }


}

数据库注意sex是char类型 但myeclipse 必须是String类型才行否者添加的时候会报错!







猜你喜欢

转载自blog.csdn.net/qq_41941613/article/details/79830301