学习心得--JDBC、druid、Apache及HTML浅谈

本周学习了JDBC,以及与JDBC相关的知识,Druid连接池,Apache的DBUtils工具,并熟识了HTML的一些基本标签。

JDBC

  • JDBC核心开发步骤
  • 注册驱动
Class.forName("com.mysql.jdbc.Driver");
  • 连接数据库
Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/database?useUnicode=true&characterEncoding=utf8","root","****");
  • 获取发送SQL的对象
Statement statement = connection.createStatement();
  • 执行SQL语句
int result = statement.executeUpdate("SQL语句");
  • 处理结果
if(result > 0){
	System.out.println("执行成功");
}
  • 释放资源
statement.close();
connection.close();
  • ResultSet结果集:在执行查询SQL后,存放查询到的结果集数据
  • 接受结果集:
ResultSet rs = statement.executeQuery(sql)
  • 遍历数据的方法
int getInt(int columnIndex) throws SQLException;//获得当前行的第N列的int值
int getInt(String columnLabel) throws SQLException;//获得当前行columnLabel列的int值
  • SQL注入问题:当用户输入的数据中有SQL关键字或语法时,并且参与了SQL语句的编译,导致SQL语句编译后条件结果为true,一直得到正确的结果。
  • PreparedStatement:PreparedStatement接口继承了Statement接口。执行SQL语句的方法没有区别!
  • 作用:
  • 1.预编译SQL语句,效率高!
  • 2.安全,避免SQL注入
  • 3.可以动态的填充数据,执行多个同构的SQL语句
  • 参数标记:
PreparedStatement pstmt = connection.prepareStatement(sql); 
  • 动态参数绑定:pstmt.setXxx(下标,值);参数下标是从1开始,为指定占位符下标绑定值
  • 封装工具类
  • 提供public static Connection getConnection()方法
  • 提供public static void closeAll(Connection conn,Statement statement,ResultSet resultSet)
  • 跨平台方案
  • 定义 private static final Properties properties = new Properties();//配置文件集合
  • 在src目录下新建db.properties文件
  • ORM实体类
  • 通过entity的规则对表中的数据进行对象的封装
  • 表名=类名;列名=属性名;提供各个属性的get、set方法
  • 提供无参构造方法、(视情况添加有参构造)
  • DAO
  • 将所有对同一张表的操作都封装在一个XXXDaoImpl对象中。
  • 根据增删改查的不同功能,实现具体的方法(insert,update,delete,select,selectAll)
  • 对于任何一张表中的数据进行操作时,无非就是增、删、改、查。应将对于一张表的所有操作统一封装在一个数据访问对象中。重用
  • 日期类型
  • java.util.Date:Java语言常规应用层面的日期类型。可以通过字符串创建对应的时间对象
  • java.sql.Date:不可以通过字符串创建对应的时间对象。只能通过毫秒值创建对象(1970年1月1日至今的毫秒值)
  • SimpleDateFormat 日期格式化
  • 连接池
  • 自定义连接池:Java中提供了一个接口DataSource,通过实现该接口,可以创建连接池
  • Druid(德鲁伊)
  • 创建database.properties 配置文件
  • 引入druid-1.1.5.jar
  • Service
  • 概念:用户要完成的一个业务功能,是由一个或多个的DAO调用组成。
  • 软件、程序提供的一个功能都叫业务
  • DAO数据访问操作复用
  • ThreadLocal
  • 线程工具类:在整个线程中,一直到释放资源,用的是同一个Connection连接对象。
  • 在整个线程(单条执行路径中)所持有的Map中,存储一个键(threadlocal)值(connection)对
  • 线程(Thread)对象中持有一个ThreadLocalMap类型的对象(ThreadLocals),threadLocals中保存了以ThreadLocal对象为Key,set进去的值为Value
  • 每个线程均可绑定多个ThreadLocal,一个线程中可存储多个ThreadLocal
  • 将业务层的多步事务控制操作,封装在DBUtils工具类里。实现复用
  • 封装DML方法
public int commonsUpdate(String sql, Object... args) {
        Connection connection = null;
        PreparedStatement preparedStatement = null;

        try {
            connection = DBUtils.getConnection();
            preparedStatement = connection.prepareStatement(sql);

            for (int i = 0; i < args.length; i++) {
                preparedStatement.setObject(i + 1, args[i]);
            }

            return preparedStatement.executeUpdate();
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            DBUtils.closeAll(null, preparedStatement, null);
        }
        return 0;
    }
  • 封装DQL方法
 public List<T> commonsSelect(String sql, RowMapper<T> rowMapper, Object... args) {

        List<T> elements = new ArrayList<T>();

        Connection connection = null;
        PreparedStatement preparedStatement = null;
        ResultSet resultSet = null;

        try {
            connection = DBUtils.getConnection();
            preparedStatement = connection.prepareStatement(sql);

            if(args !=null){
                for (int i = 0; i < args.length; i++) {
                    preparedStatement.setObject(i + 1, args[i]);
                }
            }


            resultSet = preparedStatement.executeQuery();

            while (resultSet.next()) {
                //根据查询到的结果完成ORM,如何进行对象的创建及赋值?
                T t = rowMapper.getRow(resultSet);//回调---->调用者提供的一个封装方法ORM
                elements.add(t);
            }
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            DBUtils.closeAll(null, preparedStatement, resultSet);
        }
        return elements;
    }
  • Apache
  • Commons DbUtils 是Apache组织提供的一个对JDBC进行简单封装的开源工具类库,使用它能勾简化JDBC应用程序的开发!同时,不会影响程序的性能
  • DbUtils是Java编程中数据库操作实用小工具,小巧、简单、实用
  • 对于数据表的查询操作,可以把结果转换为List、Array、Set等集合。便于操作
  • 对于数据表的DML操作,也变得很简单(只需要写SQL语句);
  • DbUtils主要包含:ResultSetHandler接口:转换类型接口、QueryRunner:执行sql语句的类

HTML

  • HTML是一门用户创建网页文档的标记语言,网页本身是一种文本文件,在文本文件中添加标记符。
  • HTML基本结构
<!-- 文档声明:告诉浏览器使用HTML5版本解析 -->
<!DOCTYPE html>
<html>
    <!--网页的头部 -->
    <head>
        <!--页面的字符集编码 -->
        <meta charset="utf-8" />
        <!-- 页面的标题 -->
        <title>我的页面</title>
    </head>
    <!-- 网页的主题,显示的部分-->
    <body>
        展示的内容
    </body>
</html>
  • HTML基本标签
  • 结构标签
<html></html>:根标签
<head></head>:头标签
<title></title>页面的标题
<body></body>:主体标签:显示网页内容
  • 排版标签
1、注释标签:<!-- 注释 -->
2、换行标签:<br/>
3、段落标签:<p>文本文字</p>
​		特点:段落与段落之间有行高(行间距)自带换行
​		属性:文本对齐方式 align (left、center 、right)
4、水平线标签:<hr/>
​		属性:
​				width:水平线的长度(两种:像素表示。第二种:百分比显示)
​				size:水平线的粗细(避免过粗、太丑、一般给个位数  比如 6px)
​				color:水平线的颜色
​				align:水平线的对齐方式(left、center、right)
  • 标题标签
<h1>-<h6>数字越小,标题文字越大!默认加粗、默认字号、默认占据一行
  • 容器标签
<div></div> : 块级标签,独占一行,自带换行
<span></span> : 行级标签,所有内容都在同一行
	作用:<div>主要是结合css做页面分块 布局
		<span>:进行友好提示信息的显示
  • 列表标签:无序列表(ul)有序列表(ol)定义列表(dl、dt、dd)
  • 图片标签
<img /> 独立标签
属性:
	src 图片地址
	width 图片的宽度
	height 图片的高度
	border 边框
	alt 图片的文字说明 当图片未能正确加载时,才显示
	title 鼠标悬停时,显示的文字
  • 链接标签:超链接可以是文本,也可以是图片,可以点击链接标签,进入新的文档,或者是当前文档中的某个部分
<a>文本或图片</a>
属性:
		href="跳转的地址"跳转外网需要添加协议
		target:_self(当前文档)
				_blank(新页面,会一直打开新的)
				_search 之前打开的页面存在,则不打开新的页面,直接复用
		name 充当锚点(顶部、底部)
		需要为标签提供name属性,进行赋值
		需要点击跳转的标签href属性给 #name
  • 表格标签:table、tr、td
  • 表格的合并:colspan(列合并)、rowspan(行合并)
  • 文本格式化标签
<!--粗体文本-->
		<b>今天天气好</b><br />
		<!--大号字-->
		<big>今天天气好</big><br />
		<!--着重文字-->
		<em>今天天气好</em><br />
		<!--斜体字 物理上把字体倾斜-->
		<i>今天天气好</i><br />
		<!--小号字-->
		<small>今天天气好</small><br />
		<!--定义加重语气-->
		<strong>今天天气好</strong><br />
		<!--下标字-->
		CO<sub>2</sub><br />
		<!--上标字-->
		孙悟空三打白骨精<sup></sup><br />
		<!--插入字-->
		<ins>今天天气好</ins><br />
		<!--删除字-->
		<del>今天天气好</del>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值