public class JdbcDemo1{
public static void main(String[] args){
//1.注册驱动
DriverManager.registerDriver(new com.mysql.jdbc.Driver());
//2.连接操作
Connection con = DriverManger.getConnection("jdbc:mysql://localhost:3306/eesy","root","password");
//3.获取操作数据库的预处理对象
PreparedStatment pstm = conn.preareStatement("select * from account");
//4.执行SQL,得到结果集
ResultSet rs = pstm.executeQuery();
//5.遍历结果集
while(rs.next()){
System.out.println(rs.getString("name"));
}
//6.释放资源
rs.close();
pstm.close();
conn.close();
}
}
我为什么一定要将com.mysql.jdbc.Driver()写出来,通常情况下我们都是采用导包的方式,当我们将mysql的jar包删掉,程序就会报错,这里就存在着程序的耦合。
耦合:耦合就是程序间的依赖关系
包括:
类之间的依赖
方法间的依赖
我们今天主要了解一下类之间的依赖,我们在程序中要有意识的解耦,即降低程序间的依赖关系。
我们在实际开发中应该做到:编译期不依赖,运行时才依赖。
以前我们注册驱动时会编译:
Class.forName(“com.mysql.jdbc.Driver”);
解耦的思路:
第一步:使用反射来创建对象,而避免使用new关键字。
第一种方法依赖具体的驱动类,不像第二种依赖字符串,从而减少了耦合。
第二步:通过读取配置文件来获取要创建的对象全限定类名。
/**
*一个创建Bean对象的工厂
*
*Bean:在计算机英语中、有可重用组件的含义。
*JavaBean:用java语言编写的可重用组件
*javabean>实体类
*
*它就是创建我们的service和dao对象的
*
*第一个:需要一个配置文件来配置我们的service和dao
* 配置的内容:唯一标识=全限定类名(key=value)
*第二个:通过读取配置文件中配置的内容,反射创建对象
*
* 我的配置文件可以是xml也可以是properties
*/
public class BeanFactory{
//定义一个properties对象
private static Properties props;
//使用静态代码块Properties对象赋值
static{
try{
//实例化对象
props=new Properties();
//获取properties文件的流对象
InputStream in =BeanFactory.class.getClassLoader()
.getResourcesAsStream("bean.properties");
props.load(in);
}catch(Exception e){
throw new ExceptionInInitiazerError("初始化properties失败!");
}
}
/**
*根据bean名称获取bean对象
*
*/
public Object getBean(String beanName){
Object bean;
try{
String beanPath =props.getProperty(beanName);
bean =Class.forName(beanPath).newInstance();
}catch(Exception e){
e.printStackTrace();
}
return bean;
}
}