properties配置文件+DAO模式记事本案例

来源:互联网 发布:pr淘宝主图视频比特率 编辑:程序博客网 时间:2024/06/06 18:53

properties配置文件是为方便项目一些信息修改以便于项目重新加载搭建服务器而使用经常使用的一种方法。

下面以记事本案例为例:

首先设计数据库如图:(以mysql数据库为例,项目数据库可改)


java代码实现:

架构图:


BaseDao类:

package com.hdk.myboke.dao;import java.io.IOException;import java.io.InputStream;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;import java.util.Properties;public class BaseDao {    String DBUser;//用户名    String DBHost;//地址    String DBPwd;//密码    String DBName;//数据库名    int Port;//端口    int DBType;//数据库类型:1-mysql ,2-sqlserver        Connection conn;//创建连接对象    PreparedStatement ps;//创建查询对象    ResultSet rs;//创建结果集        public BaseDao(){    Properties pro = new Properties();    InputStream is = BaseDao.class.getClassLoader().getResourceAsStream("database1.properties");      try {pro.load(is);DBUser=pro.getProperty("DBUser");DBHost=pro.getProperty("DBHost");DBPwd=pro.getProperty("DBPwd");DBName=pro.getProperty("DBName");Port=Integer.parseInt(pro.getProperty("Port"));DBType=Integer.parseInt(pro.getProperty("DBType"));pro.clear();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}        }        public void open(){    try {    if(DBType==1){        Class.forName("com.mysql.jdbc.Driver");        conn=DriverManager.getConnection("jdbc:mysql://"+DBHost+":"+Port+"/"+DBName, DBUser, DBPwd);        }else if(DBType==2){        Class.forName("com.microsoft.sqlserver.sqlserverDriver");        conn=DriverManager.getConnection("jdbc:sqlserver://"+DBHost+":"+Port+";database="+DBName, DBUser, DBPwd);        }    } catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}    }        public void close(){    try {    if(rs!=null){    rs.close();    ps.close();conn.close();    }    } catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}    }        public int excuteUpdate(String sql,Object...parm){//可变参数    open();    int a=0;        try {    ps=conn.prepareStatement(sql);       if(parm!=null){      for(int i=0;i<parm.length;i++){ps.setObject(i+1, parm[i]);      }       }       a=ps.executeUpdate();       close();        } catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}        return a;    }        public ResultSet excuteQuery(String sql,Object [] parm){    open();        try {   ps=conn.prepareStatement(sql);       if(parm!=null){      for(int i=0;i<parm.length;i++){    ps.setObject(i+1, parm[i]);      }       }       rs=ps.executeQuery();    } catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}    return rs;    }}
创建properties配置文件:



打开文件进行编辑,BaseDao类中变量对应:

BaseDao中的代码块部分:

BoteDao类:

package com.hdk.myboke.dao;import java.sql.SQLException;import java.util.ArrayList;import java.util.Date;import java.util.List;import com.hdk.myboke.entiy.Bote;public class BoteDao extends BaseDao {//添加功能模块    public int add(Bote bote){    /*String sql = "insert into boteinfo values(null,?,?,?)";    Object[] parm={bote.getTitle(),bote.getContent(),bote.getTime()};        int a = excuteUpdate(sql, parm);*/    int a = excuteUpdate("insert into boteinfo values(?,?,?,?)",bote.getId(),bote.getTitle(),bote.getContent(),bote.getTime());//数据插入操作    return a;    }    //删除功能模块    public int delete(int id){    String sql = "delete from boteinfo where id=?";    Object[] parm={id};    int a = excuteUpdate(sql, parm);    return a;        }    //查询功能模块    public List<Bote> getAll(){    String sql="select * from boteinfo";    rs=excuteQuery(sql, null);    List<Bote> list = new ArrayList<Bote>();    try {while(rs.next()){Bote bo = new Bote();bo.setId(rs.getInt("id"));bo.setTitle(rs.getString("title"));bo.setContent(rs.getString("content"));bo.setTime(rs.getDate("time"));list.add(bo);}close();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}    return list;    }       }
实体类:Bote类:

package com.hdk.myboke.entiy;import java.util.Date;public class Bote {    private int id;//记事本编号    private String title;//记事本标题    private String content;//记事本内容那    private Date time;//完成时间    //对变量进行封装public int getId() {return id;}public void setId(int id) {this.id = id;}public String getTitle() {return title;}public void setTitle(String title) {this.title = title;}public String getContent() {return content;}public void setContent(String content) {this.content = content;}public Date getTime() {return time;}public void setTime(Date time) {this.time = time;}        }
BoteBiz类:
package com.hdk.myboke.entiy;import java.text.SimpleDateFormat;import java.util.Date;import java.util.List;import java.util.Scanner;import com.hdk.myboke.dao.BoteDao;public class BoteBiz {Scanner sc = new Scanner(System.in);//输入对象Bote bo = new Bote();//创建Bote对象实例BoteDao bd = new BoteDao();//创建BoteDao对象实例    public void add(){    System.out.println("请输入编号:");    bo.setId(sc.nextInt());    System.out.println("请输入标题:");    bo.setTitle(sc.next());    System.out.println("请输入内容:");    bo.setContent(sc.next());    System.out.println("完成时间");    /*SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式    bo.setTime(df.format(new Date()));*/    bo.setTime(new Date());//获取当前系统时间    int a = bd.add(bo);//调用BoteDao中add方法把Bote对象传进去    if(a>0){    System.out.println("添加成功");    }else{    System.out.println("添加失败");    }    }    public void del(){//删除操作    System.out.println("请输入要删除的编号:");    int num=sc.nextInt();    int a = bd.delete(num);    if(a>0){    System.out.println("删除成功");    }else{    System.out.println("删除失败");    }        }    public void show(){//查询操作    List<Bote> list = bd.getAll();    for(Bote li:list){    System.out.println("编号:"+li.getId());    System.out.println("标题:"+li.getTitle());    System.out.println("内容:"+li.getContent());    System.out.println("完成时间:"+li.getTime());    System.out.println();    }    }}
Main入口类:

package com.hdk.myboke.entiy;import java.util.Scanner;public class Main {/** * @param args */public static void main(String[] args) {Scanner sc = new Scanner(System.in);//创建输入对象    BoteBiz boz = new BoteBiz();//创建实例对象do{System.out.println("*********************************");System.out.println("********     1.添加记事本             *******");System.out.println("********     2.删除记事本             *******");System.out.println("********     3.查询记事本             *******");System.out.println("********     4.退出记事本             *******");System.out.println("*********************************");        System.out.println("请输入您要的操作:");        int input = sc.nextInt();    switch(input){             case 1:              boz.add();              break;             case 2:              boz.del();                 break;             case 3:              boz.show();                 break;             case 4:             System.out.println("系统已退出!");                 return;//跳出方法             default:                 break;        }   }while(true); }}
控制台实现效果:






数据操作界面:


以上只演示增加功能,其他功能自行测试!