javaEE JDBC

eclipse常用快捷键

  • 常用的eclipse快捷鍵:
    • 利用ctrl+shift+o快速导入包;
    • ctrl+shift+f進行整理;
      • 也可以右鍵source然后format,ctrl+shift+f和输入法简繁体切换冲突;
      • 如何解决与win10输入发冲突问题,还有搜狗输入发的冲突问题;
    • 使用alt+shift+A進行塊編輯,在這個編輯過程中不能使用中文;
    • 利用ctrl+shift+X進行調整大寫;
    • ctrl+alt+↓進行向下複製;
    • 向下添加空行shift+enter
    • ctrl+D刪去一行
    • 單行注釋或者去掉注釋:ctrl+/
    • 向下移動一行:alt+↓
    • ctrl+o调出方法清单,当然也可以在菜单中寻找
    • new一个类后直接用ctrl+1得到设置新的对象,快速写代码;

Java EE JDBC

  • eclipse对java的只能执行静态结果,EE才能针对动态结果的执行;
  • IDE打开后修改字符集utf-8–>新建java项目
  • 使用自己的jdk修改自动联想功能和修改字体text font;
  • 使用junit测试单元
    • 要求:
      • 方法是public void
      • 方法上添加@Test
      • 按下ctrl+1(快速锁定错误,导入jar包)
    • 在想要测试的方法上进行run as junit
  • 抽取工具类——将代码的一段成为静态方法的工具类
  • Class类的反射进行
    • 使用jdbc时过程为:注册驱动——获取连接——执行sql;
    • class.forname是将一个类加载到内存中,而该com.mysql.jdbc.Driver是一个类,其中它包含了注册的静态代码块,因此,我们只需要加载一次这个类即可;
  • JDBC中常用的类的解析:
    • DriverManager:管理一组JDBC的操作类;
      • java.sql.DriverManager.registerDriver(new Driver());重复注册了一次;
      • 我们使用Class.forName主要是在静态代码块中,我们只需要将上述代码执行一次,因此我们forName一次driver,静态代码块就已经执行了,那么就注册成功了;
      • 获取链接:方法 getConnection(三个参数)
        • 参数1:路径——协议:数据库类型:子协议(不一定有):参数
        • mysql: jdbc:mysql://localhost:3306/数据库名称
        • oracle: jdbc:oracle:thin@localhost:1521@实例
        • 参数2.3:账号、密码;
    • Connection:连接 接口
      • createStatement(sql):不推荐使用,会导致出现sql注入;
      • preparStatement(sql):获取预编译的语句执行者;
      • setAutoCommit:手动开启事物;commit:提交事物;rollback:回滚事物
    • Statement:语句执行者
    • PrepareStatement:预编译的语句执行者;
      • 设置参数:setXxx(int 第几个问号,Object 实际参数);
        • xxx:int,string,object;
      • 执行sql:ResultSet executeQuery() :执行 r 语句 返回值:结果集
      • int executeUpdate() :执行cud 语句 返回值:影响的行数
    • ResultSet:结果集 接口。执行查询语句之后返回的结果
      • boolean next():判断是否有下一条记录,光标会下移;没有下一行返回false;
      • 获取具体内容:getXxx(int|string)
        • 若参数为int :第几列
        • 若参数为string:列名(字段名)
  • 事物:事物的操作可以回滚;
  • 深刻理解一句话:当对象为null时,垃圾回收机制会快速的回收该资源;
  • 以后在网上只有class文件,没有java文件,因此是不能修改的?即我们使用的是class进行运行,能否反编译?
  • 常用的配置文件格式——propertis
    • 其中内含的文件都是key=value的格式;
    • 其中含有的任意东西都是字符串的形式;
    • 在输入时不要加入空格,空格也是能被识别的,不要添加无谓的操作,这是一门强语言,不是弱语言;
  • 常用的配置文件格式——XML
    • 这种文件下次学
  • 若配置文件为propertis,并且放在src中,可以通过ResourceBundle工具快速获取里面的信息。
    • 使用步骤
      • 1.获取ResourceBundle对象;static ResourceBundle getBundle(”文件不含后缀名”);
      • 2.通过ResourceBundle对象获取value:
  • 学会如何找bug,拆解代码块,分块测试;
  • 不能初始化类时,应该就是静态代码块的内容出了问题;

连接池的使用

  • 通过连接池优化操作:连接操作一次都会被操作,我们将连接放入一个连接池内,进行调用;
    • 常用连接池:
      • DBCP(理解):apache组织
        • 导入jar包(DBCP包和pool包)
        • 使用api:
          • 1硬编码:new BasicDataSource 对象,然后配置信息设置驱动,路径等;
          • 2配置文件:properties和xml:利用properties load一个文件;
            • BasicDataSourceFactory().createDataSource(prop)
      • C3P0(★):具有自动瘦身的效果;Hibernate和Spring中必须使用
        • 导入jar包(导入)
        • 使用api
          • 硬编码:
            • new comboDataSource()剩下的痛DBCP差不多;
          • 配置文件:
            • 配置文件名称:c3p0.properties或者c3p0-config.xml
            • 在src目录下;
            • 编码只需要一句话:new comboDataSource()
            • 名字找不到时默认使用默认的设置;
        • 注意:其在使用中会出现信息,不是错误信息,仅是配置信息而已;
  • 连接池:管理数据库的连接,作用:提高项目的性能;
    • 在连接池初始化时存入一定数量的连接,用时通过方法获取,不用时归还连接;
  • 连接池方法:
    • 获取连接:Connection getConnection()
    • 归还方法就是释放资源的方法:close()方法;
  • 连接池的原理:在类中创建一个属于该类的集合,该集合存储连接对象,然后设置两个方法进行取连接和归还连接;
  • 增强方法:这是连接池写出的原理;利用静态代理重写了close方法;
    • 继承(重写):必须要拿到父类的源码,有局限;
    • 装饰者模式(静态代理):
      • 装饰者和被装饰者实现同一个接口,或继承同一个类
      • 装饰者中要有被装饰者的引用
      • 对需要增强的方法进行加强
      • 对不需要加强的方法调用原来的方法
      • 其实就是实现一个新的类,这个类与原来的类相似,但是修改了原本类的一些方法,不需要修改的就直接引用;
      • 静态代理,我们是将 链接进行包装,然后操作的都是包装过的链接;
    • 动态代理:
  • MySQL在高版本需要指明是否进行SSL连接,否则会出现警告;
    • 解决方法:在原url中添加一句:?useUnicode=true&characterEncoding=utf-8&useSSL=false

使用DBUtils进行操作

  • dbutils:是apache组织的一个工具类,jdbc的框架,更方便我们使用
    • 导入jar包(commons-dbutils-1.4.jar)
    • 创建一个queryrunner类
      • queryrunner作用:操作sql语句
      • 构造方法:new QueryRunner(Datasource ds);
    • 编写sql
    • 执行sql
      • query(..):执行r操作
      • update(…):执行cud操作
  • 核心类与接口
    • queryrunner类:操作sql语句;这个类-底层帮我们创建连接,创建语句执行者 ,释放资源.
    • DbUtils:释放资源,控制事务(暂时不用)
      • closeQuietly(conn):内部处理异常
      • commitAndClose(conn):提交事务并释放链接
    • ResultSetHandler:封装结果集 接口
      • BeanHandler★★:将查询结果的第一条记录封装成指定的bean对象,返回
      • BeanListHandler★★:将查询结果的每一条记录封装成指定的bean对象,将其放入list中返回;
      • MapListHandler★:将查询结果的每一条记录封装成map集合,将其放入map中返回;
      • ScalarHandler★:针对聚合函数 例如count();在sql语句中的聚合函数,返回的是一个long值;
  • 数组打印的是一边的中括号,集合打印的是全部的中括号;
  • bean对象:现实中存在的一种对象,包含各种对象的属性;

错误内容

1.类的名字打错。
2.文件的后缀名字打错。
3.Connection必须是java.sql.Connection,不能是com.jdbc的,但是为什么com.jdbc也有呢?
com.mysql.jdbc.Connection 是mysql自己的接口针对于对mysql的出来,。
java.sql.Connection这是一个公共的接口包括对mysql的支持oracle,sqlserver对很多数据库一个公共的API!一般而言我们选择的是java.sql的
以上

猜你喜欢

转载自blog.csdn.net/weixin_38868003/article/details/78215041