java dao层设计_dao层结构的设计方案

1 public classBaseDAOUtil {2 privatePreparedStatement pst;3 privateResultSet rst;4

5 public int save(Connection conn,String sql,Class clz,T vo) throwsException {6 pst =conn.prepareStatement(sql);7 //为 sql 设置占位符 (insert into 表(字段1,字段2,字段3,) VALUES(?,?,?))

8 String[] columns = sql.split("\\(")[1].split("\\)")[0].split(",");9 for (int i = 0; i < columns.length; i++) {10 Field f =vo.getClass().getDeclaredField(columns[i]);11 //打开访问权限

12 f.setAccessible(true);13 //取得字段对应的属性值

14 Object fvalue =f.get(vo);15 pst.setObject(i+1, fvalue);16 }17 returnpst.executeUpdate();18 }19 public int edit(Connection conn,String sql,T vo) throwsException {20 pst =conn.prepareStatement(sql);21 //UPDATE emp SET sal=?,job=?,comm=? WHERE empno=? AND ;

22 String[] strs = sql.split("SET")[1].split("WHERE")[0].split(",");23 int i = 0;24 for (i = 0; i < strs.length; i++) {25 //获取要修改的字段名称

26 String column = strs[i].split("=")[0];27 //通过反射获取 column 对应在 vo 中的属性对象

28 Field f =vo.getClass().getDeclaredField(column.trim());29 f.setAccessible(true);30 //取得该字段在vo 对象中的值

31 Object fvalue =f.get(vo);32 //为占位符设置具体的内容

33 pst.setObject(i+1, fvalue);34 }35 String conditions = sql.split("WHERE")[1].split("=")[0];36 Field f =vo.getClass().getDeclaredField(conditions.trim());37 f.setAccessible(true);38 //取得该字段在vo 对象中的值

39 Object fvalue =f.get(vo);40 pst.setObject(i+1, fvalue);41 returnpst.executeUpdate();42 }43

44

45 public int removeBuId(Connection conn,String sql,Object id) throwsException {46 pst =conn.prepareStatement(sql);47 pst.setObject(1, id);48 returnpst.executeUpdate();49 }50

51

52 public int removeBatch(Connection conn,StringBuffer sql,List ids) throwsException {53 Iterator iter =ids.iterator();54

55 while(iter.hasNext()) {56 sql.append(iter.next() + ",") ;57 }58 sql.delete(sql.length()-1, sql.length());59 sql.append(")");60

61 pst =conn.prepareStatement(sql.toString());62

63 returnpst.executeUpdate();64 }65

66 /*

67 * 根据编号查询数据68 */

69 public T selectOne(Connection conn,String sql,Class clz,Object id) throwsException {70 pst =conn.prepareStatement(sql);71 pst.setObject(1, id);72 //执行 sql 语句

73 rst =pst.executeQuery();74

75 T t = null;76 if(rst.next()) {77 t=clz.newInstance();78 //取得所有属性

79 Field[] fs =clz.getDeclaredFields();80 for(Field f : fs) {81 //打开访问权限

82 f.setAccessible(true);83 //取得属性名

84 String fname =f.getName();85 //使用该属性名称从结果集中取得数据

86 Object fvalue =rst.getObject(fname);87 //将取得的值保存给 t 对象的属性

88 f.set(t, fvalue);89 }90 returnt;91 }92 return null;93 }94

95

96 public List selectList(Connection conn,String sql,Class clz,Object...params) throwsException {97 List list = new ArrayList();98 pst =conn.prepareStatement(sql);99

100 for (int i = 0; i < params.length; i++) {101 pst.setObject(i+1, params[i]);102 }103 //执行 sql 语句

104 rst =pst.executeQuery();105 T t = null;106 while(rst.next()) {107 t =clz.newInstance();108 //取得所有属性

109 Field[] fs =clz.getDeclaredFields();110 for(Field f : fs) {111 //打开访问权限

112 f.setAccessible(true);113 //取得属性名

114 String fname =f.getName();115 //使用该属性名称从结果集中取得数据

116 Object fvalue =rst.getObject(fname);117 //将取得的值保存给 t 对象的属性

118 f.set(t, fvalue);119 }120 list.add(t);121 }122 returnlist;123 }124

125 public int selectCount(Connection conn,String sql,Object...params) throwsException {126 pst =conn.prepareStatement(sql);127 for (int i = 0; i < params.length; i++) {128 pst.setObject(i+1, params[i]);129 }130 //执行 sql 语句

131 rst =pst.executeQuery();132 rst.next();133 return rst.getInt(1);134 }135 }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值