一、配置文件
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("登录成功"); } } }