package cn.zhd.DAO;
import cn.zhd.Model.User;
import java.util.List;
public interface UserDAO {
public void selectWithTemp();
public List select(String where);
public void update(String how);
public void insert(User u);
public User selectById(String id);
public void insertBatchData(final List<User> user);
} |
package cn.zhd.DAO.Imp;
import cn.zhd.DAO.UserDAO;
import cn.zhd.Model.User;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;
import org.springframework.jdbc.core.BatchPreparedStatementSetter;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowCallbackHandler;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.jdbc.core.RowMapperResultReader;
public class UserDAOImp implements UserDAO{
private JdbcTemplate jt;
public JdbcTemplate getJt() {
return jt;
}
public void setJt(JdbcTemplate jt) {
this.jt = jt;
}
//Inner Class提供一个RresultSet中的row的映射对象
class UserRowMapper implements RowMapper{
public Object mapRow(ResultSet rs,int index) throws SQLException{
User u=new User();
u.setId(rs.getString("Id"));
u.setName(rs.getString("Name"));
u.setPassword(rs.getString("Password"));
return u;
}
}
public void selectWithTemp(){
String sql="select * from admin";
System.out.println("Id"+"\t"+"Name"+"\t"+"Password");
jt.query(sql,new RowCallbackHandler(){//一个实现了回调接口的类
//此方法为回调方法,每读取一行ResultSet被调用一次,它采用的是Statement, not a PreparedStatement
public void processRow(ResultSet rs) throws SQLException{
System.out.println(rs.getString("Id")+"\t"+rs.getString("Name")+"\t"+rs.getString("Password"));
}
});
}
//多行查询
public List select(String where){
List list=null;
String sql="select * from admin"+”\t”+where;//这里不能少”\t”,教训
list=jt.query(sql,new RowMapperResultReader(new UserRowMapper()));
return list;
}
public User selectById(String id){
String sql="select * from admin where id=?";
final User u=new User();
final Object[] params=new Object[]{id};
jt.query(sql,params,new RowCallbackHandler(){
public void processRow(ResultSet rs)throws SQLException{
u.setId(rs.getString("ID"));
u.setName(rs.getString("Name"));
u.setPassword(rs.getString("Password"));
System.out.println(rs.getString("Name")+"\t"+rs.getString("Password"));
}
});
return u;
}
public void update(String how){
String sql=how;
jt.update(sql);
}
//将插入数据封装为一个对象作为参数传递给JdbcTemplate
public void insert(User u){
String sql="insert into admin(id,name,password) values(null,?,?)";
Object[] params=new Object[]{u.getName(),u.getPassword()};
jt.update(sql,params);
}
//批量插入数据
public void insertBatchData(final List<User> user){
String sql="insert into admin(id,name,password) values(null,?,?)";
BatchPreparedStatementSetter setter=new BatchPreparedStatementSetter(){
public int getBatchSize(){
return user.size();
}
// 给PreparedStatement 设置value
public void setValues(PreparedStatement ps,int index){
User u= user.get(index);
try{
ps.setString(1,u.getName());
ps.setString(2,u.getPassword());
}catch(SQLException e){
e.printStackTrace();
}
}
};
jt.batchUpdate(sql, setter);
}
} |
package cn.zhd.Model;
import java.util.List;
import cn.zhd.DAO.UserDAO;
public class User {
private String name;
private String id;
private String password;
private UserDAO dao;
public User(){
}
public User(String name, String password){
this.name = name;
this.password = password;
}
public void setDao(UserDAO dao){
this.dao=dao;
}
public String getId(){
return id;
}
public void setId(String id){
this.id=id;
}
public String getName(){
return name;
}
public void setName(String name){
this.name=name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public void getInfo(String id){
List list=dao.select("where id="+id);
User u=(User)list.get(0);
this.id=id;
this.name=u.getName();
this.password=u.getPassword();
}
public void insert(){
dao.insert(this);
}
public void update(String how){
dao.update(how);
}
public void update(){
dao.update("update admin set name='"+name+"',password='"+password+"'where id="+id);
}
public List selectWithTemp(String where) {
return dao.select(where);
}
//得到查询结果
public void selectWithTemp(){
dao.selectWithTemp();
}
//按id查询
public User selectById(String id){
return dao.selectById(id);
}
//批量插入数据
public void insertBatchData(final List<User> user){
dao.insertBatchData(user);
} } |