A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 邱峰 中级黑马   /  2018-9-18 13:37  /  1012 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

时间过的很快一晃眼两个月已经过去了,在此期间学习了很多新的知识.比如IO流,反射机制,注解,jdbc,多线程,集合,WEB,数据库等.
在此整理了有关jdbc的笔记
JDBC的核心API
DriverManager类  管理和注册驱动得到连接对象
Connection接口   一个连接对象 可用于创建Statement和PreparedStatement
Statement接口  一个SQL语句对象 用于将sql语句发送给数据库服务器
PreparedStatement接口 sql语句
ResultSet 接口 用于封装数据库查询的结果集,返回给客户端 Java 程序
快速入门
步骤:1导入驱动jar包  mysql-connector-java-5.1.37-bin.jar
复制这个jar包到libs目录下
右键:ADD AS Library
2 注册驱动   Class.forName("com.mysql.jdbc.Driver");
3获取数据库连接对象 DriverManager.getConnection("jdbc:mysql://localhost:3306/db3", "root", "root");
4. 定义sql
5. 获取执行sql语句的对象 Statement
Statement:执行sql的对象
                        1. 执行sql
                                1. boolean execute(String sql) :可以执行任意的sql 了解
                                2. int executeUpdate(String sql) :执行DML(insert、update、delete)语句、DDL(create,alter、drop)语句
                                        * 返回值:影响的行数,可以通过这个影响的行数判断DML语句是否执行成功 返回值>0的则执行成功,反之,则失败。
                                3. ResultSet executeQuery(String sql)  :执行DQL(select)语句
6. 执行sql,接受返回结果
7. 处理结果
8. 释放资源

4. ResultSet:结果集对象,封装查询结果
                        * boolean next(): 游标向下移动一行,判断当前行是否是最后一行末尾(是否有数据),如果是,则返回false,如果不是则返回true
                        * getXxx(参数):获取数据
                                * Xxx:代表数据库数据类型   如: int getInt() ,        String getString()
                                * 参数:
                                        1. int:代表列的编号,从1开始   如: getInt(1)
                                        2. String:代表列名称。 如: getDouble("balance")
        * 注意:
                                * 使用步骤:
                                        1. 游标向下移动一行
                                        2. 判断是否有数据
                                        3. 获取数据

                                   //循环判断游标是否是最后一行末尾。
                            while(rs.next()){
                                //获取数据
                                //6.2 获取数据
                                int id = rs.getInt(1);
                                String name = rs.getString("name");
                                double balance = rs.getDouble(3);
               
                                System.out.println(id + "---" + name + "---" + balance);
                            }


C3P0
1.导入两个jar包c3p0-0.9.5.2.jar mchange-commons-java-0.2.12.jar 和数据库的驱动
2.定义配置文件* 名称: c3p0.properties 或者 c3p0-config.xml
3.把文件放在src下
4.创建连接池对象   ComboPooledDataSource
5.获取连接



Druid:数据库连接池实现技术,由阿里巴巴提供的
1.导入jar包 druid-1.0.9.jar
2.定义配置文件
是properties形式的
* 可以叫任意名称,可以放在任意目录下
driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://127.0.0.1:3306/test
username=root
password=root
initialSize=5
maxActive=10
maxWait=3000
3 加载配置文件 properties
4获取连接池对象 DruidDataSourceFactory
5获取连接
2. 定义工具类
                        1. 定义一个类 JDBCUtils
                        2. 提供静态代码块加载配置文件,初始化连接池对象
                        3. 提供方法
                                1. 获取连接方法:通过数据库连接池获取连接
                                2. 释放资源
                                3. 获取连接池的方法


                * 代码:
                        public class JDBCUtils {

                            //1.定义成员变量 DataSource
                            private static DataSource ds ;
                       
                            static{
                                try {
                                    //1.加载配置文件
                                    Properties pro = new Properties();
                                    pro.load(JDBCUtils.class.getClassLoader().getResourceAsStream("druid.properties"));
                                    //2.获取DataSource
                                    ds = DruidDataSourceFactory.createDataSource(pro);
                                } catch (IOException e) {
                                    e.printStackTrace();
                                } catch (Exception e) {
                                    e.printStackTrace();
                                }
                            }
                       
                            /**
                             * 获取连接
                             */
                            public static Connection getConnection() throws SQLException {
                                return ds.getConnection();
                            }
                            /**
                             * 释放资源
                             */
                            public static void close(Statement stmt,Connection conn){
                               /* if(stmt != null){
                                    try {
                                        stmt.close();
                                    } catch (SQLException e) {
                                        e.printStackTrace();
                                    }
                                }
                                if(conn != null){
                                    try {
                                        conn.close();//归还连接
                                    } catch (SQLException e) {
                                        e.printStackTrace();
                                    }
                                }*/
                               close(null,stmt,conn);
                            }
                            public static void close(ResultSet rs , Statement stmt, Connection conn){
                       
                                if(rs != null){
                                    try {
                                        rs.close();
                                    } catch (SQLException e) {
                                        e.printStackTrace();
                                    }
                                }
                                if(stmt != null){
                                    try {
                                        stmt.close();
                                    } catch (SQLException e) {
                                        e.printStackTrace();
                                    }
                                }
                                if(conn != null){
                                    try {
                                        conn.close();//归还连接
                                    } catch (SQLException e) {
                                        e.printStackTrace();
                                    }
                                }
                            }
       
                            /**
                             * 获取连接池方法
                             */
                            public static DataSource getDataSource(){
                                return  ds;
                            }
                        }
## Spring JDBC
步骤
1导入jar包
2创建JdbcTemplate对象  依赖于数据源DataSource
* JdbcTemplate template = new JdbcTemplate(工具类.getsource);
3调用 JdbcTemplate 里面的方法

Update();执行DML语句 增删改
public void Test01() {
    //定义sql把sorce改成100
    String sql = "update stu set score=? where id=?";
    int i = jdbcTemplate.update(sql, "100", 1);
    System.out.println(i);
}
query():查询结果,将结果封装为JavaBean对象
                                * query的参数:RowMapper
                                        * 一般我们使用BeanPropertyRowMapper实现类。可以完成数据到
public void Text06(){
    String sql = "select*from stu ";
    List<Stu> list = jdbcTemplate.query(sql, new BeanPropertyRowMapper<Stu>(Stu.class));
    for (Stu stu : list) {
        System.out.println(stu);
    }
}
JavaBean的自动封装
* new BeanPropertyRowMapper<类型>(类型.class)
* 7. **返回单个bean对象:
*/
@Test
public void Text07(){
    String sql = "select*from stu where id=? ";
    Stu integer = jdbcTemplate.queryForObject(sql, new BeanPropertyRowMapper<Stu>(Stu.class),1);
    System.out.println(integer);
}
因为不是科班出身,之前对java也没有什么了解,在进入就业班的两个月里,愈发觉得学习的方法很重要,所以要掌握自己学习的方法,善于总结,勤于思考,将思想融入到代码中,不要一味的死敲代码.看着往期的同学一个个拿到高薪和offer,就是我们现在学习的动力.希望通过自己的努力在几个月之后也能找到自己理想的工作,月入过万.

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马