java数据库查询类建议收藏

通用查询数据库辅助类,可实现任意查询语句的查询,还可以进行多结果集查询。类的代码:1packagecom.hongyuan.db;23importjava.math.BigDecimal

大家好,又见面了,我是全栈君,今天给大家准备了Idea注册码。

java数据库查询类建议收藏此处内容已经被作者隐藏,请输入验证码查看内容
验证码:
请关注本站微信公众号,回复“”,获取验证码。在微信里搜索“”或者“”或者微信扫描右侧二维码都可以关注本站微信公众号。

通用查询数据库辅助类,可实现任意查询语句的查询,还可以进行多结果集查询。

类的代码:

 1 package com.hongyuan.db;  2  3 import java.math.BigDecimal;  4 import java.net.URL;  5 import java.sql.Array;  6 import java.sql.Blob;  7 import java.sql.Clob;  8 import java.sql.Connection;  9 import java.sql.Date;  10 import java.sql.PreparedStatement;  11 import java.sql.ResultSet;  12 import java.sql.SQLException;  13 import java.sql.SQLXML;  14 import java.sql.Statement;  15 import java.sql.Time;  16 import java.sql.Timestamp;  17 import java.util.ArrayList;  18 import java.util.List;  19  20 import javax.sql.DataSource;  21 import javax.sql.rowset.CachedRowSet;  22  23 import com.sun.rowset.CachedRowSetImpl;  24  25 public class DBUtil {  26 private DataSource ds = null;  27  28 public DataSource getDs() {  29 return ds;  30  }  31  32 public void setDs(DataSource ds) {  33 this.ds = ds;  34  }  35  36 public DBUtil() {  37  }  38  39 public DBUtil(DataSource ds) {  40 this.ds = ds;  41  }  42  43 public Connection getConnection() throws SQLException {  44 return ds.getConnection();  45  }  46  47 public static void close(Connection conn, Statement s, ResultSet rs)  48 throws SQLException {  49 if (rs != null)  50  rs.close();  51 if (s != null)  52  s.close();  53 if (conn != null)  54  conn.close();  55  }  56  57 public Object query(String sql) throws SQLException {  58 return this.query(sql, null);  59  }  60  61 public Object query(String sql, List params) throws SQLException {  62 Connection conn = null;  63 PreparedStatement ps = null;  64 ResultSet rs = null;  65 try {  66 conn = this.getConnection();  67 ps = conn.prepareStatement(sql);  68  69 if (null != params) {  70 //初始化查询参数  71 this.initParam(ps, params);  72  }  73 //处理结果集 http://www.cnblogs.com/roucheng/  74 boolean isResultSet = ps.execute();  75 List result = new ArrayList();  76 do {  77 if (isResultSet) {  78 CachedRowSet crs = new CachedRowSetImpl();  79  crs.populate(ps.getResultSet());  80  result.add(crs);  81 } else {  82 result.add(new Integer(ps.getUpdateCount()));  83  }  84 } while ((isResultSet = ps.getMoreResults()) == true  85 || ps.getUpdateCount() != -1);  86  87 if (result.size() == 0) {  88 return null;  89 } else if (result.size() == 1) {  90 return result.get(0);  91 } else {  92 return result;  93  }  94 } catch (SQLException e) {  95 throw new SQLException("无法执行的sql语句!");  96 } finally {  97  DBUtil.close(conn, ps, rs);  98  }  99  } 100 //初始化查询参数 101 private void initParam(PreparedStatement ps, List params) 102 throws SQLException { 103 for (int i = 0; i < params.size(); i++) { 104 Object param = params.get(i); 105 if (param instanceof Byte) { 106 ps.setByte(i + 1, (Byte) param); 107 } else if (param instanceof Short) { 108 ps.setShort(i + 1, (Short) param); 109 } else if (param instanceof Integer) { 110 ps.setInt(i + 1, (Integer) param); 111 } else if (param instanceof Long) { 112 ps.setLong(i + 1, (Long) param); 113 } else if (param instanceof Float) { 114 ps.setFloat(i + 1, (Float) param); 115 } else if (param instanceof Double) { 116 ps.setDouble(i + 1, (double) param); 117 } else if (param instanceof BigDecimal) { 118 ps.setBigDecimal(i + 1, (BigDecimal) param); 119 } else if (param instanceof Boolean) { 120 ps.setBoolean(i + 1, (Boolean) param); 121 } else if (param instanceof String) { 122 ps.setString(i + 1, (String) param); 123 } else if (param instanceof Time) { 124 ps.setTime(i + 1, (Time) param); 125 } else if (param instanceof Date) { 126 ps.setDate(i + 1, (Date) param); 127 } else if (param instanceof Timestamp) { 128 ps.setTimestamp(i + 1, (Timestamp) param); 129 } else if (param instanceof Array) { 130 ps.setArray(i + 1, (Array) param); 131 } else if (param instanceof Blob) { 132 ps.setBlob(i + 1, (Blob) param); 133 } else if (param instanceof Clob) { 134 ps.setClob(i + 1, (Clob) param); 135 } else if (param instanceof SQLXML) { 136 ps.setSQLXML(i + 1, (SQLXML) param); 137 } else if (param instanceof URL) { 138  ps.setURL(i, (URL) param); 139 } else { 140 ps.setObject(i + 1, param); 141  } 142  } 143  } 144 }

上面类的使用 DBUtilTest.java:

 1 package com.hongyuan.db;  2  3 import java.sql.ResultSet;  4 import java.sql.SQLException;  5 import java.util.ArrayList;  6 import java.util.List;  7  8 import javax.sql.DataSource;  9 10 import org.junit.BeforeClass; 11 import org.junit.Test; 12 13 import com.mysql.jdbc.jdbc2.optional.MysqlDataSource; 14 15 public class DBUtilTest { 16 17 private static DataSource ds=null; 18 19  @BeforeClass 20 public static void setUpBeforeClass() throws Exception { 21 MysqlDataSource mds=new MysqlDataSource(); 22 mds.setURL("jdbc:mysql://127.0.0.1:3306/test"); 23 mds.setUser("root"); 24 mds.setPassword("123456"); 25 ds=mds; 26  } 27 28  @Test 29 public void testQuery() throws SQLException { 30 DBUtil util=new DBUtil(ds); 31 List params=new ArrayList(); 32 params.add(2); 33 Object obj=util.query("select * from emp where id=?",params); 34 if(obj instanceof ResultSet){ 35 ResultSet rs=(ResultSet)obj; 36 while(rs.next()){ 37 for(int i=0;i<rs.getMetaData().getColumnCount();i++){ 38 System.out.print(rs.getObject(i+1)+"\t"); 39  } 40  System.out.println(); 41  } 42 }else{ 43  System.out.println(obj); 44  } 45  } 46 47 }

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/120762.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • IDEA 2018.2.5最新版破解到2100年图解教程

    先看下我破解后的效果图把下载的破解补丁放在你的idea的安装目录下的bin的目录下面(如下图所示),本文示例为F:\ProgramFiles\JetBrains\IntelliJIDEA2018.2\bin\JetbrainsCrack-3.1-release-enc.jar(破解补丁文末有百度网盘链接)打开IDEA软件,点击免费试用,然后确定在这里添加-javaagent:F:\Pr…

  • 关于QMap的几点总结思考

    关于QMap的几点总结思考关于QMap的几点总结思考题记:前段时间集中精力写了数据的分拣算法,用到了容器QMap和QMultiMap。回头再来回去该算法的时候,又觉得当时好像不是自己写的一样,于是有必要将QMap类来总结一下。首先来了解下C++中STL中的map:map是STL的一个关联容器,它提供一对一的hash。特点:第一个可以称为关键字(key),每个关键字只能在map中出现一次;第二个可能称为该关键字的值(value);map以模板(泛型)方式实现,可以存储任意类型的数据,包括使用者自定义的数据类型。M

  • Laravel 中 offset,limit 或 skip , take 的使用

    Laravel 中 offset,limit 或 skip , take 的使用

    2021年10月29日
  • 扩大传播面,让网络安全宣传更有力

    扩大传播面,让网络安全宣传更有力

  • python 朋友圈接口_微信开发Python微信– 分享接口(分享到朋友圈、朋友、空间)…

    python 朋友圈接口_微信开发Python微信– 分享接口(分享到朋友圈、朋友、空间)…本文将带你了解微信开发Python微信–分享接口(分享到朋友圈、朋友、空间),希望本文对大家学微信有所帮助。生成JS-SDK权限验证的签名获取signature(签名)首先要获得1、#获得jsapi_ticket2、#获取当前页面的url#获取当前页面的url  url=””{}://{}{}””.format(self.request.protocol,self.request.host,s…

  • 通俗理解逻辑删除和物理删除的区别「建议收藏」

    通俗理解逻辑删除和物理删除的区别「建议收藏」一:逻辑删除逻辑删除的本质是修改操作,所谓的逻辑删除其实并不是真正的删除,而是在表中将对应的是否删除标识(is_delete)或者说是状态字段(status)做修改操作。比如0是未删除,1是删除。在逻辑上数据是被删除的,但数据本身依然存在库中。对应的SQL语句:update表名setis_delete=1whereid=1;语句表示,在该表中将id为1的信息进行逻…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号