笔记之_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;
时间: 2024-07-29 22:42:28

笔记之_Java的JDBC整理的相关文章

笔记之_Java的html整理

border: 1px solid #000000 表格要边框不要内部的线 A标签禁止跳转,执行javascript的方法 href="javascript:void(0)" onclick="javascript:$('#dd').dialog('close')" 输入框不可编辑: 方法1: onfocus=this.blur() 当鼠标放不上就离开焦点 <input type="text" name="input1"

笔记之_java的angularjs整理

Angularjs隐藏域不能取值 Responseentity两种传递json的方式,在MVC中 Use strict严格模式是javascript检查重复键.为申明变量.重复参数 Js不在服务器编译,el表达式要在服务器编译 :后为方法 1.AngularJS 通过 ng-directives(ng-指令) 扩展了 HTML. ng-app 指令定义一个 AngularJS 应用程序. ng-model 指令把元素值(比如输入域的值)绑定到应用程序. ng-bind 指令把应用程序数据绑定到

笔记之_java窗体程序整理

javaswing的动态增加控件: class dynmaicBtnListener implements java.awt.event.ActionListener{ @Override public void actionPerformed(ActionEvent e) { System.out.println("new button clicked."); } } private void jButton2ActionPerformed(java.awt.event.Action

MySQL数据库学习笔记(十)----JDBC事务处理、封装JDBC工具类

首先需要回顾一下上一篇文章中的内容:MySQL数据库学习笔记(九)----JDBC的PreparedStatement接口重构增删改查 一.JDBC事务处理: 我们已经知道,事务的概念即:所有的操作要么同时成功,要么同时失败.在MySQL中提供了Commit.Rollback命令进行事务的提交与回滚.实际上在JDBC中也存在事务处理,如果要想进行事务处理的话,则必须按照以下的步骤完成. JDBC中事务处理的步骤: 1.要取消掉JDBC的自动提交:void setAutoCommit(boolea

python数据分析笔记——数据加载与整理]

[ python数据分析笔记--数据加载与整理] https://mp.weixin.qq.com/s?__biz=MjM5MDM3Nzg0NA==&mid=2651588899&idx=4&sn=bf74cbf3cd26f434b73a581b6b96d9ac&chksm=bdbd1b388aca922ee87842d4444e8b6364de4f5e173cb805195a54f9ee073c6f5cb17724c363&mpshare=1&scene=

笔记之_java整理框架

This依赖于对象,static依赖于类 字符串的模糊查询: instr(empName,?)>0 empName like '%白%' Create view 表名 as 多表连接 视图是临时表 多表连接语句生成,查询工具点开 <T,K>泛型可以用多个 ResultSetMetaData取得列名集合,rst.getMetaData Reflect反射,Field[] 实例化对象方法: New student(); Student.class.newInstance(); Class.f

笔记之_java整理hibernate

页面调试数据: <%@taglib uri="/struts-tags" prefix="s" %> <s:debug></s:debug> Js清除缓存 使用hibernate延迟加载时,并且数据库有关联关系,转换成json对象时不能直接转换,要用new JSONObject(),然后put()方法存值 国外框架项目地址:http://websystique.com/springmvc/spring-mvc-4-angularj

笔记之_Java整理Spring MVC

springMVC原理讲解地址:http://www.cnblogs.com/dragonfei/p/6148625.html Ionic2和angularjs2和angularjs和nosql菜鸟教程一起是做手机的 https://www.bilibili.com/video/av8614724/index_10.html是ionic2公开课地址 FreeCMS DeDeCMS风信网,数据库表结构 DEDECMS简单建站 Filter和Interceptor的区别 Filter是基于函数回调的

笔记之_Java整理MyBaties单用

mybatis中#和$绑定参数: #{}将传入的数据都当成一个字符串,会对自动传入的数据加一个双引号.如:order by #{id},如果传入的值是111,那么解析成sql时的值为order by "111", 如果传入的值是id,则解析成的sql为order by "id". ${}将传入的数据直接显示生成在sql中.如:order by ${id},如果传入的值是111,那么解析成sql时的值为order by 111, 如果传入的值是id,则解析成的sql为