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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© EscapedPupil 初级黑马   /  2019-5-31 18:42  /  674 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

谨记1:Statement的execute方法和executeQuery方法返回值是不同的,execute返回的是bool值,executeQuery返回的是结果集。

谨记2:Statement的execute方法和executeUpdate方法返回值是不同的,executeUpdate返回的是int类型的值,代表的是数据库中有改动的行数;但是execute同样执行了该sql语句。

谨记3:Statement 的execute方法只有在执行SELECT语句的时候返回的值为true,执行增删改都返回false,可以理解为:execute方法执行DML语句返回false,执行DQL语句返回true。

C3P0数据库连接池需要将C3P4的properties或者XML文件放置在项目路径src下(这是硬性规则);(源码底层实现了调用类加载器加载src下该文件)
        C3P0连接池的依赖jar包(Mysql的jar包)DataSource ds = new ComboPooledDataSource();

Druid数据库连接池不需要将properties文件放入src目录下,但是为了使用方便,我们也将该properties文件放置在src目录下;

        Druid连接池的依赖jar包(Mysql的jar包)
                DataSource ds = DruidDataSourceFactory.createDataSource(Properties p)

        Druid连接池的依赖jar包(Mysql的jar包)
                DataSource ds = DruidDataSourceFactory.createDataSource(Map properties)map中的数据需要都为String,仿照Properties

        Properties p = new Properties ; p.load(JdbcDemo.class.getClassLoader.getResourceAsStream("xxx.properties"));

        DataSource ds = DruidDataSourceFactory.createDataSource(p);

DBCP数据库连接池,(可以说成是一种数据库连接池框架)将DBCP.Properties文件放置在src目录下
        DBCP连接池的依赖jar包(mysql的jar包)
                DataSource ds = BasicDataSourceFactory.createDataSource(Properties p)
                QueryRunner qr = new QueryRunner(ds);
                qr.query(String sql,new BeanHandler<>(Bank.class),...args)        生成一条记录得到的bean对象。
                                                                                用法基本等同于JDBCTemplate的queryforObject方法。但是没有期望值。

                qr.query(String sql,new BeanLsitHander<>(Bank.class),...args)        生成一个存储 多个BEAN对象的List。
                                                                                用法基本等同于JDBCTemplate的query方法。

                qr.update(String sql)                                                用法等同于JDBCTemplate的update方法
       

C3P0数据库连接池获得的Connection对象并不是DriverManager.getConnection()获得的JDBC4Connection对象,而是封装了JDBC4Connection对象的NewProxyConnection对象
        自建MyConnection和MyDataSource可以以类似的方式封装JDBC4Connection对象为MyConnection对象---------------》装饰设计模式(改写Close方法为返还Connection对象)

Druid数据库连接池获得的Connection对象是JDBC4Connection对象,可能是采用了动态设计模式。改写了Close方法;

SPRING JDBCTemplate框架 依赖(Mysql的jar包,数据库连接池的jar包)
        主要方法使用:JdbcTemplate template = new JdbcTemplate(DataSource dataSource)
        template.update(String sql,<?>...args)                        执行DML语句        返回值为影响的行数

        template.query(String sql,RowMapper<T> row,<?>...args)        执行DQL语句        返回值为一个List,
                                                                                通常使用RowMapper的实现类BeanPropertyRowMapper<>(User.class)

        template.queryForList(String sql,<?>...args)                执行DQL语句        返回值为一个List,存储的是Map,
                                                                                Map存储是一条数据中所有字段的字段名和字段值。

        template.queryFroMap(String sql,<?>...args)                执行DQL语句        返回值是一个Map,存储的一条数据的字段名和字段值,
                                                                                只允许查询到一条数据,否则报错。

        template.queryForObject(String sql,《Class》,<?>...args)执行DQL语句        返回值是一个《T》类型的对象,依赖于传递的第二个参数《xxx.class》
                                                                                常用于查询聚合函数的值

        template.queryForObject(String sql,RowMapper,<?>...args)执行DQL语句        等同于query方法,但是期望的查询数据条数为1;否则报错

0 个回复

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