jdbc第三天---配置文件、dao模式

一、配置文件

  1、为什么需要使用配置文件

    首先:看一下不用配置文件的参数写法 

public class JDBCUtils{
  private static final String DRIVER="com.mysql.jdbc.Driver";
  private static final String URL="jdbc:mysql://localhost/表名?character=utf8&useSSL=false&useUnicode=true";
  private static final String USER="root";
  private static final String PASSWORD="root";
                           ........            
}

    当不用配置文件时,JDBCUtils中的参数采用固定写法,这是硬编码。这种写法的问题是,当需要更改数据库连接信息时,需要将这个项目完全停止,然后再更改里边需要改的信息,然后再将java文件编译成Class文件。而使用配置文件,配置文件不参与编译,只要将代码编译完,可以随时读取配置文件中的信息。

  2、配置文件种类

    xxx.properties                      xxx.xml

    xxx.properties是键值对格式的存储方式,xxx.xml是类似标签方式的写法,properties比xml块,这里我们使用properties

  3、配置文件编写  db.properties

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost/表名?useSSL=true&useUnicode=false&character=utf8
user=root
password=root

  4、加载配置文件

public class JDBCUtils{
//此处这四个是变量,所以就不使用final修饰
  private static String DRIVER;
  private static String URL;
  private static String USER;
  private static String PASSWORD;    

  static{
//配置文件的内容也秩序加载一次,所以写在静态代码块中
//加载配置文件,以流的方式 InputStream inStream=JDBCUils.class.getClassLoader().getResourceAsStream("db.properties");//此处注意文件路径的书写 //创建properties对象
    Properties pps=new Properties();
//加载配置文件的流对象
    pps.load(inStream);
//使用加载过流对象的配置文件对象获取参数信息
    DRIVER=(String)pps.get("driver");
    URL=(String)pps.get("url");
    USER=(String)pps.get("user");
    PASSWORD=(String)pps.get("password");

//加载驱动
    Class.forName(DRIVER);
 }

        .........以下就和之前的写法一样了 }

二、DAO模式

  1、什么是DAO模式

    DAO(Data Access Object,数据访问对象),主要的功能是进行数据操作,在程序设计层中属于数据操作层。

    application中的5层:客户层、显示层、业务层、数据操作层、资源层

  2、DAO模式的两大优点

    ①隔离了逻辑处理代码和数据操作代码,提高了程序的可重用性

    ②使用了面向接口的设计模式,提高了程序的可扩展性和可维护性

  3、DAO层内容

    dao层包含了两大内容:

    ①接口:接口中写相应表的操作方法

    ②接口的实现类:写相对应的方法实现

    完成了业务逻辑代码和数据处理代码的隔离

  4、示例代码

    文件树结构:

      

   Login接口:

public interface LogIn {
    UserTable login(String username,String password);
}

     LogInImpl:

public class LogInImpl implements LogIn {

    @Override
    public UserTable login(String username, String password) {
        SelectUT selectUT = new SelectUT();
        UserTable userTable = selectUT.selectByNameAndPassword(username, password);
        return userTable;
    }
}

    测试类:

public class DaoTest {
    public static void main(String[] args) {
//        模拟前端页面
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入用户名");
        String username = scanner.next();
        System.out.println("请输入密码");
        String password = scanner.next();

        System.out.println("请输入部门编号");
        int role_id = scanner.nextInt();

//        登录测试
        LogInImpl logIn = new LogInImpl();
        UserTable userTable= logIn.login(username, password);
        if(userTable==null){
            System.out.println("用户名和密码错误");
        }else {
            System.out.println("登录成功");
        }
    }
}
View Code

 

posted @ 2020-12-29 10:29  橙汁one  阅读(155)  评论(0编辑  收藏  举报