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

JDBC

时间:2017-10-20 00:59:34      阅读:209      评论:0      收藏:0      [点我收藏+]

标签:jdbc基础

 (一)JDBC之事务相关概念

1)概念:事务使指一组最小逻辑操作单元,里面有多个操作组成。组成事务的每一部分必须要同时提交成功,如果有一个操作失败,整个操作就回滚。

2)事务ACID特性:

1.原子性(Atomicity)
原子性是指事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生。原子性是一个最小逻辑操作单元 。 

2.一致性(Consistency)
事务必须使数据库从一个一致性状态变换到另外一个一致性状态。

3.隔离性(Isolation)
事务的隔离性是多个用户并发访问数据库时,数据库为每一个用户开启的事务,不能被其他事务的操作数据所干扰,多个并发事务之间要相互隔离。

4.持久性(Durability)
持久性是指一个事务一旦被提交,它对数据库中数据的改变就是永久性的,接下来即使数据库发生故障也不应该对其有任何影响。事务与事务之间是隔离的。 

(二)JDBC之批处理

批处理:一次性处理大量数据.

批处理相关方法:

void addBatch(String sql) 添加批处理

void clearBatch()  清空批处理

int[]executeBatch() 执行批处理

代码:

        ArrayList<User> list = new ArrayList<User>();
        for(int i=0;i<100;i++){
            User user = new User(i,"张三"+i);
            list.add(user);
        }
        //把这100个用户添加到数据库里面去
        Connection conn = JDBCUtil.getConnection();
        String sql="insert into student values(?,?)";
        PreparedStatement statement = conn.prepareStatement(sql);
        //用批处理来执行
        for(User u:list){
            statement.setInt(1,u.getId());
            statement.setString(2, u.getUsername());
            //调用批处理
            statement.addBatch();
        }
        //执行批处理
        statement.executeBatch();
        //清空批处理
        statement.clearBatch();
        //释放资源
        JDBCUtil.close(conn, statement);

(三)连接池

     连接池:是创建和管理一个连接的缓冲池的技术,这些连接准备好被任何需要它们的线程使用。当一个线程需要用JDBC对数据库进行操作时,它从池中请求一个连接。当这个线程使用完了这个连接,将它返回到连接池中,这样它就可以被想要使用它的线程使用。连接池可以极大的改善用户的JAVA应用程序的性能。

1)C3P0:是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。目前使用它的开源项目有Hibernate,Spring等。要求必须掌握并熟练运用

使用步骤:

1.导入jar包(c3p0-0.9.1.2.jar)

2.BasicDataSource ds = new BasicDataSource();
        设置参数
            ds.setDriverClassName("com.mysql.jdbc.Driver");
            ds.setUrl("jdbc:mysql:///mydb_01");
            ds.setUsername("root");
            ds.setPassword("root");
        获取预编译对象
            Connection conn = ds.getConnection();
            String sql="insert into student values(?,?)";
       
        PreparedStatement statement = conn.prepareStatement(sql);
        statement.setNull(1,Types.INTEGER);
        statement.setString(2,"王五");//括号内的参数:(问号的序号,值)
        statement.executeUpdate();
      
         ds.close();

2)dbutils:是apache组织的一个工具类,jdbc的框架,更方便我们使用,需要配合c3p0去使用
使用步骤:
1.导入jar包(commons-dbutils-1.4.jar)
2.创建一个QueryRunner类
    QueryRunner:操作sql语句
      构造器:new QueryRunner(Datasource ds);
      底层帮助创建连接,创建语句执行者 ,释放资源.
      常用方法:query(..):update(..):
3.编写sql
4.执行sql:query(..);  update(...);
  
执行查询后返回的结果集
    ResultSetHandler:封装结果集 接口
    BeanListHandler, 将查询结果的每一条记录封装成指定的bean对象,将每一个bean对象放入list中 返回.

    

    ComboPooledDataSource ds = new ComboPooledDataSource();
        QueryRunner runner = new QueryRunner(ds);
        String sql = "insert into student values(4,‘张三‘)";
        sql = "select * from student";
        // 查询出所有数据 封装为对象 再把对象装到集合里面去
        List<User> list = runner.query(sql, new BeanListHandler<>(User.class));
        System.out.println(list);

JDBC

标签:jdbc基础

原文地址:http://12983104.blog.51cto.com/12973104/1974382

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