Java基础——编写自己的JDBC框架

到现在我们先想想,我们学习了数据库操作哪些内容?????

  1. 先是JDBC入门学习,学习Java连接数据库

  2. 然后将连接数据库getConnection和释放连接release提取出来, 封装成jdbcutils

  3. 然后就是事务,主要是学习下面几个函数使用

    Connection.setAutoCommit(false);//开启事务(start transaction)
    
    Connection.rollback();//回滚事务(rollback)
    
    Connection.commit();//提交事务(commit)
    
    
    
    Savepoint sp = conn.setSavepoint();
    
    Conn.rollback(sp);
    
    Conn.commit();//回滚后必须通知数据库提交事务

     

  4. 然后就是学习数据库连接池,主要学习两个 DBCP和C3P0,主要是改进jdbcutils

  5. 然后就是编写自己的JDBC框架,说白了就是将CRUD整合成update函数和query函数


我们先来说说 update 万能更新

看看下面的几个sql语句

INSERT INTO Persons VALUES ('Gates', 'Bill', 'Xuanwumen 10', 'Beijing')

UPDATE Person SET FirstName = 'Fred' WHERE LastName = 'Wilson'

DELETE FROM Person WHERE LastName = 'Wilson'

认真观察, 实体的CUD操作代码基本相同,仅仅发送给数据库的SQL语句不同而已,我们就把sql语句拆分成一个框架sql语句和实体sql对象 String sql, Object params[]

这个好理解,所以写成万能update也简单

/**
    * @Method: update
    * @Description: 万能更新
    * @param sql 要执行的SQL
    * @param params 执行SQL时使用的参数
    * @throws SQLException
    */ 
    public static void update(String sql,Object params[]) throws SQLException{
        Connection conn = null;
        PreparedStatement st = null;
        ResultSet rs = null;
        try{
            conn = getConnection();
            st = conn.prepareStatement(sql);
            for(int i=0;i<params.length;i++){
                st.setObject(i+1, params[i]);
            }
            st.executeUpdate();
            
        }finally{
            release(conn, st, rs);
        }
    }

 


但是!!!!!!

query不好理解,因为select * from table 这个* 不同select 就有不同的对象,所以写万能query就有点麻烦。

万幸有Object对象来指向它的万物子孙

Object obj = new Person() ; Object obj1 = new Cat() ; Object obj2 = new Shop() ; .......

因此, 我们需要将具体的类传入到参数中,来保存select查询的结果

我们来一步步看看用户的操作思路

首先,我们要从数据库中把我们想要查询的字段给查询出来嘛,

每个使用select 的用户知道数据库的table , 知道table包含哪些字段嘛, 所以就会设置相应的类来存储这些字段

不仅获取到table内容,

我们还要知道字段名,这个很重要 ,你想想,我们光光从数据库取出数据是不够的, 还要把数据装填给对象啊,

比如:select * from student ,执行了条sql后, 内容保存在哪里呢?

好吧,我们在java的domain 写个Student类, 然后new一个Student对象嘛,

但是咋个一一赋值呢? 所以我们要知道字段名,下面这几行代码就可以获取到,

    Connection conn = JdbcUtils.getConnection();
    String sql = "
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值