Spring JDBCTemplate
Spring 支持三种数据访问技术
JDBC操作 -------- JdbcTemplate
Hibernate框架操作 -------- HibernateTemplate
IBatis 框架操作 -------- SqlMapClientTemplate
JdbcTemplate 使用和 Apache DBUtils 非常类似
导入jar包 : 6个Spring最基本jar包 、spring-jdbc 、spring-tx 、数据库驱动
1、 手动JdbcTemplate 编程
DriverManagerDataSource driverManagerDataSource = new DriverManagerDataSource(); // 连接池 // 设置四个基本连接参数 driverManagerDataSource.setDriverClassName("com.mysql.jdbc.Driver"); driverManagerDataSource.setUrl("jdbc:mysql:///spring3day2"); driverManagerDataSource.setUsername("root"); driverManagerDataSource.setPassword("abc");2、使用配置文件 开发JdbcTemplate (将连接池配置到文件中 )
在applicationContext 中配置三种数据源
Spring 数据源实现类 DriverManagerDataSource
DBCP 数据源 BasicDataSource
C3P0 数据源 ComboPooledDataSource
配置DBCP 导入
com.springsource.org.apache.commons.dbcp-1.2.2.osgi.jar com.springsource.org.apache.commons.pool-1.5.3.jar配置c3p0 导入
com.springsource.com.mchange.v2.c3p0-0.9.1.2.jar3、 使用applicationContext.xml 配置数据库连接基本参数,XML格式文件维护起来不是很方便
* 在实际开发中,将JDBC的四个基本连接参数 抽取properties 属性文件 ,进行维护
在applicationContext.xml <context:property-placeholder> 引入一个外部properties 文件
<!-- 引入一个外部 properties文件 --> <context:property-placeholder location="classpath:jdbc.properties"/> <!-- 第三种 c3p0数据源 --> <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"> <property name="driverClass" value="${jdbc.driverClass}"></property> <property name="jdbcUrl" value="${jdbc.url}"></property> <property name="user" value="${jdbc.user}"></property> <property name="password" value="${jdbc.password}"></property> </bean>
4、JdbcTemplate 模板增删改查
update(sql, args... ) 增加、删除、修改
<T> T query(String sql, ResultSetExtractor<T> rse, Object... args) 查询 ----------------- 完整封装过程 List<User> users = jdbcTemplate.query("select * from user", new ResultSetExtractor<List<User>>(){ @Override public List<User> extractData(ResultSet rs) throws SQLException, DataAccessException { List<User> users = new ArrayList<User>(); while(rs.next()){ User user = new User(); user.setId(rs.getInt("id")); user.setName(rs.getString("name")); users.add(user); } return users; } });
<T> List<T> query(String sql, RowMapper<T> rowMapper, Object... args) 查询 ------------ 只负责对象本身封装过程 List<User> users = jdbcTemplate.query("select * from user", new RowMapper<User>(){ @Override public User mapRow(ResultSet rs, int rowNum) throws SQLException { User user = new User(); user.setId(rs.getInt("id")); user.setName(rs.getString("name")); return user; } });
查询结果是一个List , 使用query方法
查询结果是一个Object, 使用queryForObject 方法
5、 Spring为了DAO 可以方便注入各种持久化技术 模板操作类, 提供一组DaoSupport 类
* 只需要让自己DAO 继承 DaoSuppert 获得各种模板
例如: DAO中使用JdbcTemplate
class UserDAO extends JdbcDaoSupport { }
开发web应用,在工程导入 spring-web.jar
配置web.xml
<!-- Spring核心监听器 --> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <!-- Spring 配置文件位置 --> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:applicationContext.xml</param-value> </context-param>
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。