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 语句 返回值:影响的行数
- 设置参数:setXxx(int 第几个问号,Object 实际参数);
- ResultSet:结果集 接口。执行查询语句之后返回的结果
- boolean next():判断是否有下一条记录,光标会下移;没有下一行返回false;
- 获取具体内容:getXxx(int|string)
- 若参数为int :第几列
- 若参数为string:列名(字段名)
- DriverManager:管理一组JDBC的操作类;
- 事物:事物的操作可以回滚;
- 深刻理解一句话:当对象为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()
- 名字找不到时默认使用默认的设置;
- 硬编码:
- 注意:其在使用中会出现信息,不是错误信息,仅是配置信息而已;
- DBCP(理解):apache组织
- 常用连接池:
- 连接池:管理数据库的连接,作用:提高项目的性能;
- 在连接池初始化时存入一定数量的连接,用时通过方法获取,不用时归还连接;
- 连接池方法:
- 获取连接: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的
以上