zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    bzoj4183: tree
    bzoj4389: ZYB and Trees
    bzoj3253: 改编
    uoj#274. 【清华集训2016】温暖会指引我们前行
    uoj#272. 【清华集训2016】石家庄的工人阶级队伍比较坚强
    uoj#11. 【UTR #1】ydc的大树
    uoj#29. 【IOI2014】Holiday
    uoj#187. 【UR #13】Ernd
    bzoj5019: [Snoi2017]遗失的答案
    bzoj5017: [Snoi2017]炸弹
  • 原文地址:https://www.cnblogs.com/fbbg/p/14205187.html
Copyright © 2011-2022 走看看