Mysql JDBC驱动的jar包和源代码包下载:http://www.mysql.com/downloads/connector/j/
1、 数据源和连接池
lDataSource用来取代DriverManager来获取Connection;
l通过DataSource获得Connection速度很快;
l通过DataSource获得的Connection都是已经被包裹过的(不是驱动原来的连接),他的close方法已经被修改。
l一般DataSource内部会用一个连接池来缓存Connection,这样可以大幅度提高数据库的访问速度;
l连接池可以理解成一个能够存放Connection的Collection;
l我们的程序只和DataSource打交道,不会直接访问连接池;
2、 一个简单的数据源实现
l 使用代理模式的Connection(核心代码)
l DataSource(核心代码)
3、 常用的开源实现DBCP
l 使用DBCP必须用的三个包:
l 配置参数。
l Java API: BasicDataSourceFactory.createDataSource(
4、 使用继承优化JDBC代码(模板模式)
l 优化查询操作,区分开变化和不变的部分:
l 提取超类,将不变部分放入超类,变化部分留给子类实现。
l 超类的主要代码:
5、 使用组合优化JDBC代码(策略模式)
l 优化查询操作,区分开变化和不变的部分:
l 提取接口封装变化部分。
l JDBC操作主要代码:
l 回调接口:
6、 Spring的JdbcTemplate
l 查询带有参数,和行映射方法:
l 一个RowMapper的常用实现BeanPropertyRowMapper,该实现可将结果集转换成一个Java Bean(字段名与Java Bean属性名不符合规范,可用别名处理)。
l public List query(String sql, Object[] args, RowMapper rowMapper)返回多个结果。
l public int queryForInt(String sql)(如:select count(*) from user),其他结果比如String可用queryForObject方法向下转型。
l public Map queryForMap(String sql, Object[] args)返回若类型的Map(key:字段名或别名,value:列值)。
l public List queryForList(String sql, Object[] args)返回多Map。
l 更新public int update(String sql, Object[] args)。
l 插入数据并获得结果:
l 其他方法简介
7、 Spring的NamedParameterJdbcTemplate
l NamedParameterJdbcTemplate内部包含了一个JdbcTemplate,所以JdbcTemplate能做的事情NamedParameterJdbcTemplate都能干; NamedParameterJdbcTemplate相对于JdbcTemplate主要增加了参数可以命名的功能。
l public Object queryForObject(String sql, Map paramMap, RowMapper rowMapper)
l public Object queryForObject(String sql, SqlParameterSource paramSource, RowMapper rowMapper)
l public int update(String sql, SqlParameterSource paramSource, KeyHolder generatedKeyHolder)保存数据获得主键。
8、 Spring的SimpleJdbcTemplate
l SimpleJdbcTemplate内部包含了一个NamedParameterJdbcTemplate;所以NamedParameterJdbcTemplate能做的事情SimpleJdbcTemplate都能干,SimpleJdbcTemplate相对于NamedParameterJdbcTemplate主要增加了JDK5.0的泛型和可变长度参数支持。
l public <T> List<T> query(String sql, ParameterizedRowMapper<T> rm, Object... args)
l public <T> T queryForObject(String sql, ParameterizedRowMapper<T> rm, SqlParameterSource args)
l public <T> List<T> query(String sql, ParameterizedRowMapper<T> rm, SqlParameterSource args)
l getJdbcOperations返回的是JdbcOperations(实现JdbcTemplate)
l getNamedParameterJdbcOperations返回的是NamedParameterJdbcOperations(实现是NamedParameterJdbcTemplate)
9、 实现UserDao接口
l 实现UserDao接口
l 修改daoconfig.properties文件,切换UserDao的实现。
l 测试UserDao的新的实现类。