本帖最后由 学习让我快乐啊 于 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支持名称空间.
|