前言
1.为什么分析DbUtils
序号 reason 1 dbutils是对jdbc的一个简单的封装,分析dbutils可以深入理解jdbc的原理 2 可以理解到大师的编程思想,鄙人觉得这是一件很有意义的事情 3 简单,作为一个工具类,无疑,它是精简的 4 因为现在csdn可以使用markdown写博客!!! 5 顺便学习一下maven,现在的开源项目基本离不开maven的存在了 6 待编^_^
2.使用的工具
序号 工具名称 说明 1 eclipse mars 此版本集成maven 2 maven 3.3.9 下载个独立版的操作方便,需要配置环境变量 3 xmind 7 思维导图,本博客大部分彩色图片基本来自此,免费的哦,所以大家不需要去拼命的寻找破解版
一:源码结构
1.dbutils源码结构
注:至于具体项目读者自行导入maven工程即可见到,如果大家对maven存在疑惑,鄙人会在接下来的一段时间会对maven做一个分析^_^
2.用户操作类
二:使用dbutils.jar–一切的分析都是建立在运行的情况下的。
1.需要的jar包
使用mysql作为数据库,当然需要导入mysql的驱动。 导入commons-dbutils-1.6.jar,当然如果你想可以追踪源码和看说明更加清晰的话,可以选择绑定jar的关联commons-dbutils-1.6-sources.jar和commons-dbutils-1.6-javadoc.jar。Java Build Path内编辑,此处就不赘述了。
2.测试数据库字段
userid username password int String String
注:get与set就不写了哈,javabean。。。Is so simple,呜,表示笔者曾经看过一个对于javabean的注解的jar包,但是没找到源码,所以就不愿意用了,支持maven,有兴趣的可以百度一下哈^_^。
3.测试代码
3.1Before与After分析
3.1.1代码
Connection conn = null ;
@Before
public void getconnect () {
try {
/**
* java里面任何class都要装载在虚拟机上才能运行
* Class.forName("com.mysql.jdbc.Driver")返回的是一个类
* Class.forName("com.mysql.jdbc.Driver");的作用是要求JVM查找并加载指定的Driver类,
* 也就是说JVM会执行该类的静态代码段
*
* 实例化的方式
* 1.类加载机制
* Java中工厂模式经常使用newInstance()方法来创建对象,因此从为什么要使用工厂模式上可以找到具体答案。
* 2.new实例化
*
*/
Class.forName("com.mysql.jdbc.Driver" );
conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/music" , "root" , "root" );
} catch (Throwable e) {
e.printStackTrace();
}
}
@After
public void close () {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
3.1.2代码片段解析
3.2单行查询
3.2.1代码
@Test
public void test1 () throws SQLException {
String sql = "select * from user where userid =6" ;
QueryRunner qr = new QueryRunner();
User u = qr.query(conn, sql, new BeanHandler<User>(User.class));
System.out.println(u.toString());
}
3.2.2代码片段分析
编号 代码 分析 1 qr.query() 泛型机制,查阅java核心技术卷一
异常说明
maven异常
编号 异常名称 解决方法 1 Plugin execution not covered by lifecycle configuration: org.apache.felix:maven-bundle-plugin:2.4.0:manifest (execution: bundle-manifest, phase: process-classes) 可能maven版本问题,暂时笔者还没解决,但是不影响maven编译,如果有读者解决了,如果方便可以告诉笔者一下,^_^