1、dbutil出现的原因:
a、大量的重复代码
b、jdbc的简单封装
c、使用策略模式可以生成不同的返回类型
2、技术要点:
a、反射
b、泛型
c、元数据
d、可变参数
3、流程:
1、客户端调用query方法,进入该方法首先使用工厂模式创建一个数据库连接对象,这样的好处是隐藏了new的关键字,
并且代码的扩展性很强,改变了具体的实现类不影响系统的构架,
2、通过适配器模式(adaper)来兼容了一些查询的功能,这样可以使客户调用起来更方便,然后又通过一个工厂模式
得到了一个预处理对象,得到对象之后把这个预处理对象填充条件(问号),如果可变参数没有值的话则直接返回,
否则把可变参数的值一一设置到预处理对象中。
3、这里又使用了策略模式来解决了返回类型,它可以取决与客户需要的是set还是list、或者是map类型,然后创建了一
个集合。通过反射技术来得到属性类的所有信息,像set、get方法和字段,之后通过结果集的元数据来得到表中的列信息,
把属性和数据库中的列一一对应,这样是防止了表中的列和属性类中的属性顺序不一样而判断的。
4、最后才创建bean,首先使用了反射机制来生成一个对象,然后处理的数据的类型,处理完之后调用了属性类中的set方
法把相应的值设置的属性中,然后把每一个对象都设置好封装成一个bean,最后把这些bean存放到集合(set、list),
或者map中返回。
a、大量的重复代码
b、jdbc的简单封装
c、使用策略模式可以生成不同的返回类型
2、技术要点:
a、反射
b、泛型
c、元数据
d、可变参数
3、流程:
1、客户端调用query方法,进入该方法首先使用工厂模式创建一个数据库连接对象,这样的好处是隐藏了new的关键字,
并且代码的扩展性很强,改变了具体的实现类不影响系统的构架,
2、通过适配器模式(adaper)来兼容了一些查询的功能,这样可以使客户调用起来更方便,然后又通过一个工厂模式
得到了一个预处理对象,得到对象之后把这个预处理对象填充条件(问号),如果可变参数没有值的话则直接返回,
否则把可变参数的值一一设置到预处理对象中。
3、这里又使用了策略模式来解决了返回类型,它可以取决与客户需要的是set还是list、或者是map类型,然后创建了一
个集合。通过反射技术来得到属性类的所有信息,像set、get方法和字段,之后通过结果集的元数据来得到表中的列信息,
把属性和数据库中的列一一对应,这样是防止了表中的列和属性类中的属性顺序不一样而判断的。
4、最后才创建bean,首先使用了反射机制来生成一个对象,然后处理的数据的类型,处理完之后调用了属性类中的set方
法把相应的值设置的属性中,然后把每一个对象都设置好封装成一个bean,最后把这些bean存放到集合(set、list),
或者map中返回。