黑马程序员技术交流社区
标题: [石家庄校区]JDBC&XML课堂笔记 [打印本页]
作者: 学习让我快乐啊 时间: 2018-5-21 17:52
标题: [石家庄校区]JDBC&XML课堂笔记
本帖最后由 学习让我快乐啊 于 2018-5-21 18:01 编辑
JDBC
一个应用:
高性能,高可用
高可用:
代码的复用性
对扩展是开放的,对修改源码是关闭的
模糊查询时,最好将占位符放到变量中
preparedstatement批处理只预编译一次
相关APIDiverManager
注册驱动
获得连接
static Connection getConnection(String url, String user, String password)
url格式:数据库协议://IP地址:端口号/数据库(数据库可以不写);
例子:jdbc:mysql://localhost:3306/web_test3
Connection
创建执行SQL语句的对象
Statement createStatement():创建Statement对象,执行SQL语句(存在SQL注入漏洞)
CallaleStatement prepareCall(String sql):创建CallableStatement对象调用数据库存储过程
PreparedStatement prepareStatement(String sql):创建PreparedStatement对象将参数化的SQL语句发送到数据库(解决了SQL注入漏洞)
管理事务
void setAutoCommit(boolean autoCommit):将此链接的自动提交模式设置为给定状态
void commit:提交,并释放此Connection对象当前持有的所有数据库锁
void rollback():回滚,并释放此Connection对象当前持有的所有数据库锁
Statement
ResultSet
JDBC开发步骤
step1:注册驱动:Class.forName()
step2:获得连接:Connection conn = DriverManger.getConnection(url,username,password)
step3:编写SQL语句,String sql ="",值的地方用占位符?代替
step4:预编译sql并且获得可执行sql语句的对象PreparedStatement ps = conn.prepareStatemet(String sql)
step5:为sql语句设置值,用值代替sql语句中的? ps.setXXX(int n,值) n:代表第几个问号的意思,从1开始
step6:执行sql语句
如果是查询:ResutSet rs = ps.executeQuery();//获得结果集
如果是增删改:int num = ps.executeUpdate() ;// num 代表影响的行数
step7:释放资源CRUD操作属性Properties
Properties prop = new Properties();
prop.load(new FileInputeStream(String path或File对象));
prop.getProperty(String key);批处理
String sql = "insert into user values (null,?)";
// 预编译SQL:
pstmt = conn.prepareStatement(sql);
for(int i=1;i<=10000;i++){
pstmt.setString(1, "name"+i);
// 添加到批处理
pstmt.addBatch();//注意内存溢出
if(i % 1000 == 0){
// 执行批处理:
pstmt.executeBatch();
// 清空批处理:
pstmt.clearBatch();
}
}事务连接池增强类中方法的方式java的23种设计模式
Druid的概述Druid阿里旗下开源连接池产品,使用非常简单,可以与Spring框架进行快速整合。
C3P0的连接池的概述c3p0是一个开源的,JDBC来连接池,它实现了数据源和JND绑定,支持JDBC3规范和JDBC2的标准扩展。
DBUtilsDButils为web阶段用到的,封装JDBC,抽取成工具类,简化代码.
QueryRunner
构造方法:
方法:
int update(String sql. Object...parsms)
int update(Connection conn, String sql, Object... params)
query(String sql, ResultSetHandler<T> rsh, Object... params)
query(Connection conn, String sql, ResultSetHandler<T> rsh, Object... params)
工具类编写原则:把相同或相似的代码抽取出来
ResultHandler
ResultHandler实现类
DBUtils的查询操作步骤:query
1.查询表中的多条记录,把每条记录封装成一个对象,放进一个List集合. 2.查询一条记录,直接使用这个封装记录的对象.
XML作为配置文件完成模拟Tomcat
XML的语法
XML的文档声明
XML的注释
<!-- 注释 -->
XML的元素
XML的属性
XML的特殊字符和CDATA区
特殊字符
< ; 是 <
> ; 是 >
& ; 是 &
&apos 是 '(单引号)
分号要挨着特殊字符结尾,中间不能有空格.
CDATA区
character Data的缩写
写在这个区域的都会被当做字符串,不会当做特殊字符
<![CDATA[ 内容 ]]>
XML的解析
使用DOM4J来解析
导入jar包
创建解析器
解析文档获得代表整个文档的对象:document,包含element ,attribute,text这三个同城为node(节点).NOde就相当于java中的Object.
先要获得根节点
从根节点开始查找其他节点:element(),elements();
XPath
dom4j 支持XPath的jar包
dom4j的XPath支持的API:
常用的命令
XML的约束
用来约束XML的文档中可以出现哪些标签,不能出现哪些标签,标签中是否有顺序,出现的次数
用来规范XML的写法
XML的约束有哪些区别是什么?
* DTD和Schame:
* DTD的语法是自成一体,Schema使用的XML的语法.
* Schema有比DTD更强大的语义和语法的约束.
* Schema支持名称空间.
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |