使用元数据简化jdbc代码
来源:互联网 发布:淘宝上的图片怎么做的 编辑:程序博客网 时间:2024/06/06 18:39
使用元数据简化jdbc代码
一 简化的原因
在daoImp层中,在写增删改查的时候,每次都要重写一次封装数据库对象,创建连接对象,定义sql语句,释放资源,在这些方法中,我们可以提取共同点,并把不同的定义sql语句并处理sql语句,当成参数传给一个方法,并用循环的方式输出也是个很好的操作
二 简化的实现
1.建框架---提取共同的部分并形成一个方法
// 建框架----更新的操作是增、删 、改
public static void udpate(String sql, Object[] params) {
Connection con = null;
PreparedStatement st = null;
ResultSet rs = null;
try {
con = DBManager_c3p0.getConnection();
st = con.prepareStatement(sql);
for(int i =1;i<params.length;i++){
st.setObject(i+1, params[i]);
}
st.executeUpdate();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
DBManager.release(con, st, rs);
}
}
//查询
public static Object find(String sql,Object[] params,ResultSetHandler rsh)throws Exception{
Connection con=null;
PreparedStatement st=null;
ResultSet rs=null;
try {
con=DBManager.getConnection();
st=con.prepareStatement(sql);
for(int i=0;i<params.length;i++){
st.setObject(i+1,params[i]);
}
st.executeQuery();
//对结果集的处理(框架的开发者不知道如何处理)
//调用程序员传过来的对结果集进行处理的方法即可
return rsh.handler(rs);
}finally{
DBManager.release(con, st, rs);
}
注:
实例化:
public class User {
private Integer id;
private String name;
private String email;
private Date birthday;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
}
接口类:
//结果集处理器的接口
public interface ResultSetHandler {
public Object handler(ResultSet rs);
}
接口实现类:
public class MyResultHandler implements ResultSetHandler {
@Override
public Object handler(ResultSet rs) {
// TODO Auto-generated method stub
User user = new User();
try {
if(rs.next()){
user.setId(rs.getInt(1));
user.setName(rs.getString(2));
user.setEmail(rs.getString(3));
user.setBirthday(rs.getDate(4));
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
}
2.daoImpl层中使用框架特别简单,就几句话
(1)insert方法的实现
public void insert() {
String sql = "insert into users(name,password,email) values(?,?,?)";
Object[] params = { "xxx", "111", "lkfjl@.com" };
DBManager.udpate(sql, params);
}
(2)delete方法的实现
public void delete() {
String sql = "delete from users where id=?";
Object[] params = { 4 };
DBManager.udpate(sql, params);
}
(3)update方法的实现
public void update() {
String sql = "update users set name=?,password=? where id=?";
Object[] params = { "sdgdd", "111", 5 };
DBManager.udpate(sql, params);
}
(4)查询方法的实现
//查询
public void find() throws Exception{
String sql="select * from users where id=?";
Object[] params={5};
//MyResultHandler rsh=new MyResultHandler();
BeanResultHandler rsh=new BeanResultHandler(User.class );
User user=(User) DBManager.find(sql, params, rsh);
System.out.println(user.getId()+" "+user.getName());
}
//查询所有
public List findAll() throws Exception{
List list=null;
String sql="select * from users";
Object[] params={};
BeanListHandler rsh=new BeanListHandler(User.class);
list=(List) DBManager.find(sql, params, rsh);
return list;
}
3.建立一个类去测试
UserDaoImpl obj = new UserDaoImpl();
obj.insert();
- 使用 元数据简化JDBC代码
- 使用元数据简化jdbc代码
- 使用元数据简化jdbc代码
- 使用元数据简化jdbc代码
- 使用元数据简化jdbc代码---更新操作
- 使用元数据简化jdbc代码---查询操作(用到反射)
- 使用元数据简化jdbc代码---查询操作(用到反射)
- 深入体验JavaWeb开发内幕——使用元数据简化JDBC代码
- JDBC之使用继承简化代码量
- 使用spring jdbc template简化jdbc数据库操作实例代码
- 如何简化JDBC代码
- 如何简化JDBC代码
- 如何简化JDBC代码
- JDBC之使用SimpleJdbcTemplate和泛型技术简化代码
- [SQL]:如何简化JDBC代码
- JDBC ---- 元数据
- 【JDBC】day02_PreparedStatement_元数据
- JDBC之元数据
- HTML简介
- Jndi技术----与数据库的连接(tomcat)
- UVa Problem 105 - Skyline Problem
- 【iphone游戏开发】iphone-Cocos2d游戏开发之四:精灵实现缩放,旋转,跳动,移动等动画
- Uboot 之Makefile 分析
- 使用元数据简化jdbc代码
- 111111111
- 如何能在服务器架设好Maven之后,项目组的其他人直接上服务器上同步本地Maven仓库而不是再去maven远程仓库
- 记录一下
- 二分法求方程的根
- 无题
- 在action封装数组,将其传到jsp页面,以checkbox形式显示
- Mysql备份数据库
- CSS分割背景图片的技巧