package org.lei.model;
import java.util.Date;
/**
* @author renlei
* @E-mail:renlei0109@yeah.net
* @version 创建时间:2014-6-17 下午8:13:55 简单说明
*/
public class User {
private int id;
private String name;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
定义一个RowMapper的接口
package org.lei.dao.impl;
import java.sql.ResultSet;
import java.util.List;
public interface RowMapper {
//映射器接口
public List<Object> rowMap(ResultSet rs);
}
MyDaoTemplate
package org.lei.dao.impl;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import org.lei.util.JDBCUtil;
public class MyDaoTemplate {
/**
* 可用来执行改,删,插入操作
* @param sql
* @param args 一个数组
* @return
*/
public int update(String sql ,Object[]args){
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
try{
conn = JDBCUtil.getDataSource().getConnection();
ps = conn.prepareStatement(sql);
for(int i = 0;i<args.length;i++){
ps.setObject(i+1, args[i]);
}
return ps.executeUpdate();
}catch(SQLException e){
e.printStackTrace();
}finally{
JDBCUtil.free(rs, ps, conn);
}
return -1;
}
/**
* 用来执行查询操作
* @param sql
* @param args
* @return
*/
public List<Object> find(String sql,Object[]args,RowMapper rowMapper){
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
try{
conn = JDBCUtil.getDataSource().getConnection();
ps = conn.prepareStatement(sql);
for(int i = 0;i<args.length;i++){
ps.setObject(i+1, args[i]);
}
rs = ps.executeQuery();
Object object = null;
List<Object> list = new ArrayList<Object>();
try {
list = rowMapper.rowMap(rs);
return list;
} catch (Exception e) {
e.printStackTrace();
}
}catch(SQLException e){
e.printStackTrace();
}
return null;
}
}
通过类组合来实现策略者模式
package org.lei.dao.impl;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import org.lei.dao.UserDao;
import org.lei.model.User;
import org.lei.util.JDBCUtil;
/**
* @author renlei
* @E-mail:renlei0109@yeah.net
* @version 创建时间:2014-6-22 下午7:11:30 简单说明
*/
public class UserDaoImpl implements UserDao {
MyDaoTemplate myDaoTemplate = new MyDaoTemplate();
@Override
public User findUser(int id) {
String sql = "select * from userinfo where id = ?";
Object []args = new Object[]{id};
//通过类组合实现,策略者模式
List<Object>users = myDaoTemplate.find(sql, args,new UserMap());
if(users!=null)
return (User)users.get(0);
return null;
}
@Override
public String findUserName(int id) {
String sql = "select name from userinfo where id = ?";
Object []args = new Object[]{id};
//通过类组合实现,策略者模式,是通过匿名类来实现RowMapper接口
List<Object>names = myDaoTemplate.find(sql, args,new RowMapper() {
@Override
public List<Object> rowMap(ResultSet rs) {
List<Object>names = new ArrayList<Object>();
try {
while(rs.next()){
String name = rs.getString("name");
names.add(name);
}
return names;
} catch (SQLException e) {
e.printStackTrace();
}
return null;
}
});
if(names!=null)
return names.get(0).toString();
return null;
}
class UserMap implements RowMapper{
@Override
public List<Object> rowMap(ResultSet rs) {
List<Object>users = new ArrayList<Object>();
try {
while(rs.next()){
User user = new User();
user.setId(rs.getInt("id"));
user.setName(rs.getString("name"));
users.add(user);
}
return users;
} catch (SQLException e) {
// TODO Auto-generated catch block
return null;
}
}
}
@Override
public int updateUser(int id, String name) {
return 0;
}
}