1、接口
package com.spring.jdbcDAO;
import java.util.List;
import org.springframework.jdbc.support.KeyHolder;
import com.spring.jdbcModel.User;
public interface UserDAO {
/**
* 创建表
*/
public void create(String tableName);
/**
* 保存用户
* @param user
*/
public void save(User user);
/**
* 创建序列和引擎,实现主键自增
* @param seq
*/
public void incrementdKey(String seq);
/**
* 插入记录并返回自动生成的主键Id
* @param user
* @return
*/
KeyHolder insertUser(User user);
/**
* 插入/更新/删除数据
* @param sql 有参数语句
* @param obj 参数值数组
* @return
*/
public int operatorUser(String sql,Object[] obj);
/**
* 根据SQL查询记录总数
* @param sql
* @return
*/
public int findRowBySQL(String sql);
/**
* 使用JdbcTemplate,根据id查找指定对象
* @param id
* @return
*/
public User findUserById(int id);
/**
* 返回所有的用户
* @return
*/
public List findAllUsers();
/**
* 使用JdbcTemplate进行批量更新
* @param users
* @return
*/
public int[]updateBatchUser(final List users);
/**
* 根据id查找,使用SimpleJdbcTemplate
* @param id
* @return
*/
public User findUserByIdSimple(int id);
/**
* 批量更新,这里使用SimpleJdbcTemplate 支持泛型
* @param users
* @return
*/
public int[] updateBatchUsersSimple(final List<User> users);
/**
* 删除用户
* @param user
*/
public void delete(User user) ;
/**
* 通过RowCallbackHandler对Select语句得到的每行记录进行解析,并为其创建一个User数据对象。实现了手动的OR映射。
* @param id
* @return
*/
public User findUserByIdRowCallbackHandler(int id);
}
2、接口实现类
package com.spring.jdbcDAOImpl;
public class UserDAOImpl implements UserDAO {
private JdbcTemplate jdbcTemplate;
// SimpleJdbcTemplate对JdbcTemplate封装,某些特性要在java5以上才工作
private SimpleJdbcTemplate simpleJdbcTemplate;
// NamedParameterJdbcTemplate对JdbcTemplate封装,增加了命名参数特性
private NamedParameterJdbcTemplate namedParameterJdbc;
// 注意如果这样写的话,配置文件中应该怎样写
/*
* public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
* this.jdbcTemplate = jdbcTemplate; }
*/
public void setDataSource(DataSource dataSource) {
this.jdbcTemplate = new JdbcTemplate(dataSource);
this.namedParameterJdbc = new NamedParameterJdbcTemplate(dataSource);
this.simpleJdbcTemplate = new SimpleJdbcTemplate(dataSource);
}
/**
* 创建表、序列、引擎、实现主键自动增长
*/
@Override
public void create(String tableName) {
jdbcTemplate
.execute("create table "
+ tableName
+ "(id integer,user_name varchar2(40),password varchar2(40),primary key (id))");
}
// 创建序列
public void incrementdKey(String seq) {
String sql = "create sequence " + seq + " start with 8"