笔记之_Java的JDBC整理
Posted 莫轩ASL
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了笔记之_Java的JDBC整理相关的知识,希望对你有一定的参考价值。
Java中利用Object方式为日期赋值 将字符串类型转为java的日期类型,然后转换为sql的日期类型 new java.sql.Date(DateFormat.getDateInstance().parse(joinDate).getTime())) JDBC:Java程序连接数据库的技术 DriverManager:驱动管理类 Connection:桥梁接口 Preparedstatement:接口可以使用参数,较statement更好更安全 Resultset:接口,结果集 服务器: 应用服务器 数据服务器 JDBC API:与数据库建立连接、执行SQL语句、处理结果 递归调用一定有一个结束的条件 常见数据库端口号: mysql:3306 Oracle:1521 Tomcat:8080 执行操作: Pst.execute():返回布尔值 Pst.executeQuery():查询使用 Pst.executeUpdate():增删改使用 Try{}中创建的语句不能关掉,在外面创建,在外面关 使用resultSet变量保存executeQuery()返回的结果集 ResultSet.next()返回布尔值 判断有没有下一行数据 如果有暂时将下一行数据交给resultSet变量保存 Rs.getInt(1):参数为数据库表的列号 JDBC步骤: 加载驱动 建立连接 创建指挥官 返回结果 final在static前 UI表示层:展示数据,接收输入和业务逻辑层交互数据 BIZ业务逻辑层:处理操作流程,决定调用功能,和数据访问层进行交互 DAO数据访问层:负责数据库的连接访问 DB数据库: 代码测试层: 依赖注入层: 实体类:数据传递的载体 com.项目名称.entity:实体类包名,第一个创建 com.项目名称.dao:数据访问接口层包名 com.项目名称.daoImpl:数据访问实现层包名 com.项目名称.biz:业务逻辑层包名 ui:UI包名,放Test文件 Java日期用Date需要导包Java.util.Date 子表与主表在类中的关系: 子表的实体类中保存主表对应的实体类对象 Private Department dept; 数据库操作必须包括的五个操作:主键查询,全查,增,删,改 util.Dtae是sql.Date的父类 util.Dtae转为sql.Date: new Date(da.getTime()); 将字符串转为Java的Date类型: DateFormat.getDateInstance().parse(String) new SimpleDateFormat("yyyy-MM-dd").parse(time); 将日期转换为字符串 new SimpleDateFormat("yyyy-MM-dd").format(date); exetends:继承,一个类继承一个抽象类,一个接口继承另一个接口 implements:实现接口,一个类实现一个接口 利用泛型对数据访问层接口约束 业务逻辑层没有接口的嵌入,因为业务逻辑层是对数据访问层的基本方法的组合,组合的方法没有相同的,所以接口嵌入的意义不大 使用JDBC连接数据库: package com.wulin.dao; import java.sql.Connection; import java.sql.DriverManager; //所有数据访问类的父类 import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; public class BaseDao { //4个字符串+3个核心对象+2个方法+1个静态代码块 public final static String DRIVER="oracle.jdbc.driver.OracleDriver"; public final static String URL="jdbc:oracle:thin:@localhost:1521:orcl"; public final static String UID="zhangxin"; public final static String PWD="zhangxin"; protected Connection conn=null; protected PreparedStatement pst=null; protected ResultSet rs=null; static{ try { Class.forName(DRIVER); } catch (ClassNotFoundException e) { e.printStackTrace(); } } public void open_db(){ try { conn=DriverManager.getConnection(URL,UID,PWD); } catch (SQLException e) { e.printStackTrace(); } } public void close_db(){ try { if (rs!=null) { rs.close(); } if (pst!=null) { pst.close(); } if (conn!=null) { conn.close(); } } catch (SQLException e) { // TODO: handle exception e.printStackTrace(); } } } 通用查询: public List<Employee> query(Map<String, Object> pars) { //1.sql命令的拼接 //2.将参数的值有序化 List<Department> depts=ddao.findAll(); Map<Integer, Department> ds=new HashMap<Integer, Department>(); for (Department department : depts) { ds.put(department.getDeptId(), department); } List<Employee> emps=new ArrayList<Employee>(); List<Object> temp=new ArrayList<Object>(); StringBuffer sb=new StringBuffer("select * from employee where 1=1 "); for (String k : pars.keySet()) { sb.append(" and ").append(k).append(" =?"); temp.add(pars.get(k)); } try { super.open_db(); super.pst=super.conn.prepareStatement(sb.toString()); for (int i = 0; i < temp.size(); i++) { pst.setObject(i+1, temp.get(i)); } super.rs=super.pst.executeQuery(); Employee emp=null; while (super.rs.next()) { emp=new Employee(); emp.setEmpId(super.rs.getInt(1)); emp.setEmpName(super.rs.getString(2)); emp.setEmpPosition(super.rs.getString(3)); emp.setEmpHrId(super.rs.getInt(4)); emp.setEmpInDate(super.rs.getDate(5)); emp.setEmpSalary(super.rs.getDouble(6)); emp.setEmpBonus(super.rs.getDouble(7)); emp.setDeptId(super.rs.getInt(8)); emp.setDept(ds.get(emp.getDeptId())); emps.add(emp); } } catch (SQLException e) { e.printStackTrace(); }finally{ super.close_db(); } return emps;
以上是关于笔记之_Java的JDBC整理的主要内容,如果未能解决你的问题,请参考以下文章