码迷,mamicode.com
首页 > 数据库 > 详细

笔记之_Java的JDBC整理

时间:2017-11-19 17:22:46      阅读:327      评论:0      收藏:0      [点我收藏+]

标签:主键   日期   nts   driver   tomcat   resultset   第一个   array   query   

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整理

标签:主键   日期   nts   driver   tomcat   resultset   第一个   array   query   

原文地址:http://www.cnblogs.com/by-1642146903/p/7860153.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!