JdbcTemplate查询(Spring框架中的工具类)
来源:互联网 发布:wampserver mac版 编辑:程序博客网 时间:2024/05/17 07:17
JdbcTemplate是由Spring框架提供的一个工具类,他对Jdbc API提供了很好的封装,可以用来完全替代JDBC API
1、导入包 spring.jar
commons-logging.jar
修改JdbcUtils.java增加getDataSource()
package cn.itcast.jdbc;import java.io.InputStream;import java.sql.Connection;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;import java.util.Properties;import javax.sql.DataSource;import org.apache.commons.dbcp.BasicDataSourceFactory;public final class JdbcUtils { private static DataSource myDataSource = null; private JdbcUtils() { } static { try { Properties prop = new Properties(); InputStream is = JdbcUtils.class.getClassLoader() .getResourceAsStream("dbcpconfig.properties"); prop.load(is); myDataSource = BasicDataSourceFactory.createDataSource(prop); // 屏蔽了创建数据源的过程 } catch (Exception e) { throw new ExceptionInInitializerError(e); } } public static Connection getConnection() throws SQLException { // return DriverManager.getConnection(url, user, password); return myDataSource.getConnection(); // 取连接 } public static DataSource getDataSource(){ return myDataSource; } public static void free(ResultSet rs, Statement st, Connection conn) { try { if (rs != null) rs.close(); } catch (SQLException e) { e.printStackTrace(); } finally { try { if (st != null) st.close(); } catch (SQLException e) { e.printStackTrace(); } finally { try { if (conn != null) conn.close(); } catch (Exception e) { e.printStackTrace(); } } } }}
2、使用JdbcTemplate 查询
static User findUser1(String name) { JdbcTemplate jdbc = new JdbcTemplate(JdbcUtils.getDataSource()); String sql = "select id,name,money,birthday from user where name=?"; Object[] args = new Object[] { name }; Object user = jdbc.queryForObject(sql, args, new RowMapper() { //匿名内部类的方式 public Object mapRow(ResultSet rs, int rowNum) throws SQLException { User user = new User(); user.setId(rs.getInt("id")); user.setName(rs.getString("name")); user.setMoney(rs.getFloat("money")); user.setBirthday(rs.getDate("birthday")); return user; } }); return (User) user; }
3、改进上一步
spring提供了自带的映射器,
static User findUser(String name) { JdbcTemplate jdbc = new JdbcTemplate(JdbcUtils.getDataSource()); String sql = "select id,name,money,birthday from user where name=?"; Object[] args = new Object[] { name }; Object user = jdbc.queryForObject(sql, args,new BeanPropertyRowMapper(User.class));//需要一个class的参数,queryForObject方法返回一个结果 return (User) user; }
在这个例子要注意变量的命名:
- sql语句中的命名与User.class中的命名相同,或
- 严格遵守数据库(单词之间以下划线分割)与java(驼峰法)的命名规范,spring会自动转换,或
- 可以使用别名
4、使用JdbcTemplate 查询多个记录
static List<User> findUsers(int id) { JdbcTemplate jdbc = new JdbcTemplate(JdbcUtils.getDataSource()); String sql = "select id,name,money,birthday from user where id<?"; Object[] args = new Object[] { id}; List<User> users = jdbc.query(sql, args,new BeanPropertyRowMapper<User>(User.class)); //query方法返回的就是一个list return users; }
5、其他查询
JdbcTemplate有很多其他的查询方法,如 queryForInt
queryForObejct
queryForList
等等
没有queryForString
,如果需要返回String类型,可以用queryForObejct
然后转型
0 0
- JdbcTemplate查询(Spring框架中的工具类)
- Spring框架中的JdbcTemplate类的使用方法
- Spring框架JdbcTemplate类中查询方法介绍
- Spring JdbcTemplate 模板工具类
- Spring框架 JdbcTemplate(五)
- Spring 使用JdbcTemplate类实现批量查询(RowMapper)
- Spring JdbcTemplate 查询方法
- Spring JdbcTemplate 查询分页
- Spring JdbcTemplate 查询分页
- Spring JdbcTemplate查询示例
- Spring JdbcTemplate 查询方法中的RowMapper实现汇总
- Spring JdbcTemplate 查询方法中的RowMapper实现汇总
- spring中的jdbc访问类JdbcTemplate使用
- Spring中的jdbcTemplate.queryForObject()使用
- 学习Spring中的JdbcTemplate
- spring中的JdbcTemplate (1)
- Spring中的JdbcTemplate (2)
- Spring 中的JdbcTemplate使用
- iOS_NSAttributeString
- django搭建blog
- MSCOMCTL.OCX文件缺失问题
- ssoj2427: 学数数(RMQ)
- SSH框架总结(框架分析+环境搭建+实例源码下载)
- JdbcTemplate查询(Spring框架中的工具类)
- BIOS入门之我见-布局
- SSH三大框架的工作原理及流程
- Swift学习笔记11——方法(Method)
- Ubuntu五笔输入法
- 【Redis常见问题】
- Android四大基本组件——BroadcastReceive
- java集合框架之堆栈
- Codeforces 583C GCD Table 模拟 map