第一次写博客——记录学习的一小段收获

作为一个在大学学习了三年通信工程专业的人,但是在计算机方面却一窍不通,说出去都让人笑话,最近两个月也在很努力的学习前端和后端的知识,从JAVA到Web前端再到数据库,虽然这两个月学的不是很深,但我觉得确实收获到了很多,学会了很多,这是我第一次写博客,其实也不知道该写什么,就记录自己的学习过程把。到现在已经学习了两个月了,以前经常在博客上看别人发的文章,从别人的文章中获取一些新的知识或者找到一些好的方法,但从来没想过自己去写一篇文章,可能也是因为觉得自己能力不足,知识面也不够,所以才不会有这种想法。但现在我觉得每个阶段有空都在博客上发表自己的一些学习记录,自己的一些足迹,回头看也会有蛮多收获的把。
今天主要是学习了DBUtil的一个使用,主要的知识点有以下三点:
1、操作属性文件properties类
 Properties properties=new Properties();
 properties.load(new FileReader("文件所在路径"));
通过getProperty()方法来调用文件里面的值
2、数据连接池,即程序启动时、就创建若干连接对象
 (1)、 DBCP
 (2)、 Druid:(现在我主要用这个)
 下载地址:http://repo1.maven.org/maven2/com/alibaba/druid/
 相关属性说明:https://github.com/alibaba/druid/wiki
 (3)、JNDI
 (4)、C3PO
3、DBUtils的使用(实体类的属性要与数据库的列名一致)
 (1)、导入MySql、DbUtils和Druid的jar包
 (2)、 创建属性类
   Properties properties=new Properties(); properties.load(new FileReader("文件所在路径"));
 (3)、 固定获取连接池对象
     DataSource ds =DruidDataSourceFactory.createDataSource(properties);
 (4)、获取连接对象  
    QueryRunner query=new QueryRunner(ds);
 (5)、增删查改 query有两个方法:
    update(增删改): query.update("sql语句",N个参数);
    query(查询) 主要用到了Handler处理器
     BeanListHandler<T>(T.class):返回一个集合
     BeanHandler<T>(T.class):返回表的第一行
     ScalarHandler<Long>():返回一个长整型
     自定义Handler实现类,返回一个集合,可用来多表联查
以下就是以student表和class表为例的一个两表联查的自定义Handler实现类,以及自己创建的student表和classes表。

//创建属性类
Properties pro=new Properties();
//加载属性文件、一定要加模块名
pro.load(new FileReader("Project/dbutil.properties"));
//获取固定的连接池对象
DataSource ds=DruidDataSourceFactory.createDataSource(pro);
//获取连接对象
QueryRunner qr=new QueryRunner(ds);
//反射和泛型,qr有两个方法query查询和update增删改

//添加数据
qr.update("insert into student(name,pwd,classid) values(?,?,?)", "李学学", "114477", 1);
//删除数据
qr.update("delete from student where id=?",9);
//修改数据
qr.update("update student set name=?,pwd=?,classid=? where id=?","李学学","222222",3,6);


//查询所有数据
List<Student> query1 = qr.query("select * from student", new BeanListHandler<Student>(Student.class));
for (Student info:query1) {
System.out.println(info);
}
//查询第一行的数据
Student query2 = qr.query("select * from student", new BeanHandler<>(Student.class));
System.out.println(query2);

 



//查询某个值
Long query3 = qr.query("select count(1) from student", new ScalarHandler<Long>());
System.out.println(query3);

 

 


//自定义Handler实现类
List<Student> query4 = qr.query("select s.id as \"id\",s.name as \"name\",s.pwd as \"pwd\",c.id as \"classid\",c.name as \"classname\"\n" +
"from student s,classes c where s.classid=c.id;", new StudentHandler());
for (Student info:query4) {
System.out.println(info);
}

 

 

 

 

 
今天的大致内容就是这些,一些内容都是我自己总结的,可能会有错误,希望大家能做出批评与指正!谢谢!
posted @ 2020-08-06 09:51  这是个小白猿  阅读(92)  评论(0)    收藏  举报