日期:2014-05-16  浏览次数:20521 次

Spring3笔记之 JDBC

使用Spring 的JDBC

先创建表:

DROP TABLE IF EXISTS `springjdbc`.`t_people`;
CREATE TABLE  `springjdbc`.`t_people` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(45) NOT NULL,
  `birthDay` datetime DEFAULT NULL,
  `sex` tinyint(1) DEFAULT NULL,
  `weight` double DEFAULT NULL,
  `height` float DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;

?

再创建实体对象:

com.spring305.jdbc.po.People.java

public class People implements Serializable {

	private static final long serialVersionUID = -8692237020492316757L;
	private int id;
	private String name;
	private Date birthDay;
	private Boolean sex;
	private Double weight;
	private float height;
	
	public People() {
		super();
	}
	public People(int id, String name, Date birthDay, Boolean sex,
			Double weight, float height) {
		super();
		this.id = id;
		this.name = name;
		this.birthDay = birthDay;
		this.sex = sex;
		this.weight = weight;
		this.height = height;
	}
...
}

?DAO接口:

com.spring305.jdbc.dao.PeopleDao.java

import java.io.Serializable;
import java.sql.SQLException;
import java.util.Date;
import java.util.List;
import java.util.Map;

import com.spring305.jdbc.page.CurrentPage;
import com.spring305.jdbc.po.People;

/**
 * DAO接口
 * @author ZhengChao
 *
 */
public interface PeopleDao {
	
	/**
	 * 创建数据库表结构
	 * @param sql
	 * @return
	 */
	void doCreateTable(String sql);
	
	/**
	 * 保存对象
	 * @param p
	 */
	void doSaveObj(People p);
	
	/**
	 * 通过主键删除对象
	 * @param id
	 */
	void doDeleteObj(int id);
	
	/**
	 * 更新对象
	 * @param p
	 */
	void doUpdateObj(People p);
	
	/**
	 * 通过主键得到对象
	 * @param id
	 * @return
	 */
	Serializable getObjByID(int id);
	
	/**
	 * 通过主键得到日期类属性
	 * @param id
	 * @return
	 */
	Date getBirthDay(int id);
	
	/**
	 * 通过主键得到名字属性
	 * @param id
	 * @return
	 */
	String getNameAttri(int id);
	
	/**
	 * 通过主键拿到对象集合
	 * @param id
	 * @return
	 */
	List<People> getObjsByID(int id);
	
	/**
	 * 取总和
	 * @return
	 */
	int getCountEntites();
	
	/**
	 * 得到对象的集合
	 * @return
	 */
	List<Map<String, Object>>	getList();
	
	/**
	 * 分页查找 
	 * @param pageNo
	 * @param pageSize
	 * @param id
	 * @return
	 * @throws SQLException
	 */
	CurrentPage<People> getPeoplePage(final int pageNo, final int pageSize,int id) throws SQLException; 
	
	/**
	 * 使用NamedParameterJdbcTemplate命名参数
	 * @param id
	 * @return
	 */
	int getNamedParameterJdbcCounts(int id);
	
	/**
	 * 得到自动生成的主键
	 * @return
	 */
	int getAutoIncrementKey();
	
	/**
	 * 批处理
	 * @param actors
	 * @return
	 */
	int[] batchUpdate(final List<People> actors);
	
	
	
}

?

实现类:

com.spring305.jdbc.dao.impl.PeopleDaoImpl.java

import java.io.Serializable;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;

import javax.sql.DataSource;

import org.springframework.jdbc.core.BatchPreparedStatementSetter;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.PreparedStatementCreator;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.jdbc.core.namedparam.BeanPropertySqlParameterSource;
import org.springframework.jdbc.core.namedparam.MapSqlParameterSource;
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
import org.springframework.jdbc.core.namedparam.SqlParameterSource;
import org.springframework.jdbc.core.simple.ParameterizedRowMapper;
import org.springframework.jdbc.core.simple.SimpleJdbcTemplate;
import org.springframework.jdbc.datasource.DriverManagerDataSource;
import org.springframework.jdbc.support.GeneratedKeyHolder;
import org.springframework.jdbc.support.KeyHolder;

import com.spring305.jdbc.dao.P