浏览 4941 次
锁定老帖子 主题:使用dbutils封装的一个数据库操作类
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2011-04-28
使用commons-dbutils-1.3.jar,请自行下载.
关于Connection对象和事务在业务层作了处理.
主要代码如下:
package keel.util; import java.sql.Connection; import java.util.List; import java.util.Map; import org.apache.commons.dbutils.QueryRunner; import org.apache.commons.dbutils.handlers.BeanListHandler; import org.apache.commons.dbutils.handlers.MapHandler; import org.apache.commons.dbutils.handlers.MapListHandler; import org.apache.log4j.Logger; /** * 操作数据库方法 * @author 蔡治平 * */ public class SqlUtil { private static Logger logger = Logger.getLogger(SqlUtil.class); private static QueryRunner qr = new QueryRunner(); /** * 查询 * @param conn * @param sql * @param params * @return List<Map<String, Object>> */ @SuppressWarnings("deprecation") public static List<Map<String, Object>> search(Connection conn, String sql, Object[] params){ List<Map<String, Object>> mapList = null; try { if(params==null){ mapList = qr.query(conn, sql, new MapListHandler()); }else{ mapList = qr.query(conn, sql, params, new MapListHandler()); } } catch (Exception e) { logger.error("查询出现异常!原因:"+e); } return mapList; } /** * 查询,将结果返回到bean中,多个bean通过List包装返回 * @param <T> * @param conn * @param entityClass * @param sql * @param params * @return List<T> */ @SuppressWarnings("unchecked") public static <T>List<T> search(Connection conn, Class<T> entityClass, String sql, Object[] params){ List<T> list = null; try{ if (params == null) { list = (List<T>) qr.query(conn, sql, new BeanListHandler(entityClass)); } else { list = (List<T>) qr.query(conn, sql, new BeanListHandler(entityClass), params); } }catch(Exception e){ logger.error("查询出现异常!原因:"+e); } return list; } /** * 通过主键查找记录 * @param conn * @param sql * @param params * @return Map<String, Object> */ public static Map<String, Object> getById(Connection conn, String sql, Object[] params){ Map<String, Object> map = null; try{ if (params == null) { map = qr.query(conn, sql, new MapHandler()); } else { map = qr.query(conn, sql, new MapHandler(), params); } }catch (Exception e) { logger.error("查询出现异常!原因:"+e); } return map; } /** * 查询表的记录总数 * @param conn * @param table * @return int */ public static int getTotal(Connection conn, String table){ int total = 0; String field = "TOTAL"; if(conn!=null){ String sql = "SELECT COUNT(*) AS "+field+" FROM "+table; try { Map<String, Object> map = (Map<String, Object>) qr.query(conn, sql, new MapHandler()); String n = map.get(field).toString(); total = Integer.parseInt(n); } catch (Exception e) { logger.error("查询["+table+"]表记录总数出现异常!原因:"+e); } }else{ logger.error("查询["+table+"]表记录总数出现异常!原因:连接为空!"); } return total; } /** * 更新,返回更新记录条数 * @param conn * @param sql * @param params * @return int */ public static int update(Connection conn, String sql, Object[] params){ int n = 0; try{ if(params==null){ n = qr.update(conn, sql); }else{ n = qr.update(conn, sql, params); } }catch(Exception e){ logger.error("更新出现异常!原因:"+e); } return n; } }
测试代码片段:
List<Map<String, Object>> list = SqlUtil.search(conn, sql, new Object[]{"1001","admin"}); for(int i=0;i<list.size();i++){ System.out.println(list.get(i).get("id")); System.out.println(list.get(i).get("userName")); } List<User> userList = SqlUtil.search(conn, User.class, sql, new Object[]{"1001","admin"}); for(int i=0;i<userList.size();i++){ System.out.println(userList.get(i).getId()); System.out.println(userList.get(i).getUserName()); } String sql1 = "update rg_user set flag = 1 where id=?"; int n = SqlUtil.update(conn, sql1, new Object[]{"1001"}); System.out.println(n); String sql2 = "select * from rg_user where id ='1001'"; Map<String,Object> map = SqlUtil.getById(conn, sql2, null); System.out.println(map.get("id")); 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2011-07-27
最后修改:2011-07-27
BeanHandler\BeanListHandler如何将db中字段和pojo对象属性绑定?
是否按一定规范?还是怎么的,求解? |
|
返回顶楼 | |
发表时间:2011-07-27
xiaomaha 写道 BeanHandler\BeanListHandler如何将db中字段和pojo对象属性绑定?
是否按一定规范?还是怎么的,求解? 如果要深入了解可以看dbutils的源码,原理就是把ResultSet转换成相应的bean. 如果想知道用法就看该贴. |
|
返回顶楼 | |