谨记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;否则报错
|
|