1.通过xml配置查询条件
加一点命名规则例如我数据库了里面的字段是 leave_msg
bean的字段就是leaveMsg
复杂的类型还没弄,只搞了个字符串
2.通过反射就可以统统执行了update、delete、insert了
/** * 普通的sql执行 判断sql的标准是是数字 默认最大参数个是小于10 * * @param sqlMsg * @param obj */ public boolean execSql(MapsqlMsg, Object obj) { if (null != sqlMsg) { String sql = ""; // 获取sql 重新填充值 for (String s : sqlMsg.keySet()) { if (!s.matches("\\d{1}")) { sql = s; sqlMsg.remove(s);// 移除这个key值 //break; }else{ if(null==obj)continue; String key=s; String value=sqlMsg.get(s); try { Field field=obj.getClass().getDeclaredField(s);//属性权威私有 value=field.get(obj).toString(); sqlMsg.put(key, value); } catch (Exception e) { logger.info("执行sql:"+sql+"参数装配的时候,异常了。"+e); } } } if(null==sql||"".equals(sql)){ logger.info("执行sql为空!"); return false; } int count=-1; PreparedStatement psState=null; try { psState = this.con.prepareStatement(sql); logger.info("执行的SQL为:"+sql); int countParam=sqlMsg.size(); for(int i=1;i<=countParam;i++){ psState.setString(i, sqlMsg.get(String.valueOf(i))); } count=psState.executeUpdate(); con.commit();//事务提交 psState.close(); } catch (SQLException e) { try { con.rollback(); //回滚 if(null!=psState) psState.close();//执行关闭 } catch (SQLException e1) { logger.info("事务回滚失败了" + e); } logger.info("在执行sql的时候异常了\n" + e); } return count==-1?false:true; } return false; }
3.通过发射装配下select
if(rs.next()){ //有数据 ResultSetMetaData msd=rs.getMetaData(); for(int i=0;i
可以获取查询列的属性,名称,类型-》去装配这个obj
单条查询;
多条根据查询的结果可以反复组装
简单的数据类型应该还是好组装的,复杂类型有点困难了这里也不考虑哈哈
4.做一个简单的池子
1.池子在一个list里面;放着数据库链接的对象,对象有上面的工具类
private String username; private String password; private String url; private String num;//编号 private Connection con; private int status; // 0:free 其他 被使用
2.初始化的时候实例这个list;
3.获取 数据库链接对象 更具状态来
4.不够用就会涉及到添加进这个池子,并且操作完要摧毁的操作了(新添加是是从新实例化还是,克隆一个类的?)
5.够用直接通过状态获取(用完了该状态);
判断直接通过编号来