解决的问题:
a、大量的重复代码
b、jdbc的简单封装
c、使用策略模式可以生成不同的返回类型
涉及技术:
a、反射
b、泛型
c、元数据
d、可变参数
缺点:没有进行事务处理
流程:
调用query 方法(具体的) ---->适配器模式兼容查询功能 预处理------->选择类型-------->创建bean 利用反射机制生成一个对象
用法:
1.定义一类:继承BasicDataSource 并定义一方法 用this 定义父类连结数据库的属性
public class LoginDataSource extends BasicDataSource{
public LoginDataSource() {
this.setDriverClassName("com.mysql.jdbc.Driver");
this.setUsername("root");
this.setPassword("123");
this.setUrl("jdbc:mysql://192.168.2.72/english?useUnicode=true&charactorEncodering=UTF-8");
}
}
2.得到QueryRunner 构造QueryRunner 有两种方法:无参 ,DataSource类型的参数 采用后一种
QueryRunner queryRunner= new QueryRunner(new LoginDataSource());
3.执行具体的SQL操作
queryRunner.query();
queryRunner.update();
.......
Connection connection = queryRunner.getDataSource().getConnection(); // 得到连结对象
a、大量的重复代码
b、jdbc的简单封装
c、使用策略模式可以生成不同的返回类型
涉及技术:
a、反射
b、泛型
c、元数据
d、可变参数
缺点:没有进行事务处理
流程:
调用query 方法(具体的) ---->适配器模式兼容查询功能 预处理------->选择类型-------->创建bean 利用反射机制生成一个对象
用法:
1.定义一类:继承BasicDataSource 并定义一方法 用this 定义父类连结数据库的属性
public class LoginDataSource extends BasicDataSource{
public LoginDataSource() {
this.setDriverClassName("com.mysql.jdbc.Driver");
this.setUsername("root");
this.setPassword("123");
this.setUrl("jdbc:mysql://192.168.2.72/english?useUnicode=true&charactorEncodering=UTF-8");
}
}
2.得到QueryRunner 构造QueryRunner 有两种方法:无参 ,DataSource类型的参数 采用后一种
QueryRunner queryRunner= new QueryRunner(new LoginDataSource());
3.执行具体的SQL操作
queryRunner.query();
queryRunner.update();
.......
Connection connection = queryRunner.getDataSource().getConnection(); // 得到连结对象