目录
概念
JdbcTemplate
: 是 Spring
中对持久层(JDBC 技术
)一个封装 ;
使用起来和 Dbutuis
很相似 ;(其实 JdbcTemplate
还不如 Dbutils
,看着 Spring
的面子,学一下 ;)
配置数据库
// 配置数据库,配置数据源
DriverManagerDataSource dataSource = new DriverManagerDataSource() ;
// 配置数据库驱动
dataSource.setDriverClassName("com.mysql.jdbc.Driver");
// 设置数据库URI
dataSource.setUrl("jdbc:mysql:///springDay03");
// 配置管理员账号密码
dataSource.setUsername("root");
dataSource.setPassword("root");
创建 JdbcTemplate
对象
// 创建 jdbcTemplate 模板
JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource) ;
增删改查代码
跟 Dbutils 操作差不多
增删改
,都是调用 update
方法,操作方法跟 Dbutils
基本一致 ;
// 增
String sql = "insert into user value(?,?,?)" ;
jdbcTemplate.update(sql,new Object[]{"001","蜡笔小新","123456"}) ;
// 改
sql = "update user set password = ? where id = ?" ;
jdbcTemplate.update(sql,new Object[]{"0000","001"}) ;
// 删
sql = "DELETE from user where id = ?" ;
jdbcTemplate.update(sql,"001") ;
在查询
的时候, JdbcTemplate
跟 Dbutils
都一样,都提供一个接口,让我们实现我们自己的处理逻辑 ;JdbcTemplate
给出的接口是:RowMapper
;
说 JdbcTemplate
还不如 Dbutils
的原因,就在于:JdbcTemplate
竟然,没有提供基本的实现类给我们。。
查询返回当个结果(
queryForObject(sql,泛型)
)sql = "select COUNT(*) FROM USER " ; int num = jdbcTemplate.queryForObject(sql,Long.class).intValue() ;
查询返回当个对象(
queryForObject(sql, new RowMapper<泛型>,可变参数
)sql = "select * from user where id = ?" ; User user = jdbcTemplate.queryForObject(sql, new RowMapper<User>() { @Override public User mapRow(ResultSet resultSet, int i) throws SQLException { String name = resultSet.getString("name") ; String password = resultSet.getString("password") ; User user = new User() ; user.setName(name); user.setPassword(password); return user; } },"1");
查询返回
list
集合(query
)sql = "select * from user " ; List<User> users = jdbcTemplate.query(sql, new RowMapper<User>() { // 这里的第二个参数是,代表本当前装进list是第几个对象,从0开始计数 ; @Override public User mapRow(ResultSet resultSet, int i) throws SQLException { String name = resultSet.getString("name") ; String password = resultSet.getString("password") ; User user = new User() ; user.setName(name); user.setPassword(password); return user; } });