JDBC简单封装

/**

* JDBC简单封装

* 需要借助FastJsonUtil可以参考上一篇

* @author huangxincheng

*

*/

public class BaseDao {

private static String URL;

private static String USERNAME;

private static String PASSWORD;

private static String DRIVER;

private  Connection connection;

private  PreparedStatement pstmt;

private  ResultSet result;

static {

try {

InputStream inputStream = BaseDao.class.getClassLoader().getResourceAsStream("jdbc.properties");

Properties prop = new Properties();

prop.load(inputStream);

USERNAME = prop.getProperty("jdbc.username");

PASSWORD = prop.getProperty("jdbc.password");

DRIVER= prop.getProperty("jdbc.driver");

URL = prop.getProperty("jdbc.url");

} catch (IOException e) {

throw new RuntimeException("load db properties faild");

}

}

//获取连接

private  Connection getConnection() {

try {

Class.forName(DRIVER);// 注册驱动

connection = DriverManager.getConnection(URL, USERNAME, PASSWORD); // 获取连接

return connection;

} catch (Exception e) {

throw new RuntimeException("register db driver faild");

}

}

private PreparedStatement getStatement(String sql, Object ... objs) {

try {

pstmt = connection.prepareStatement(sql);

if (objs != null) {

for (int i = 0; i < objs.length; i++) {

pstmt.setObject(i+1, objs[i]);

}

}

return pstmt;

} catch (SQLException e) {

throw new RuntimeException("pstmt faild");

}

}

private <T> List<T> findResult(Class<T> clazz, String sql, Object ... objs) {

try {

getConnection();

getStatement(sql, objs);

result = pstmt.executeQuery();

ResultSetMetaData metaData = result.getMetaData();

int cols_len = metaData.getColumnCount();

List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();

Map<String, Object> map = null;

while (result.next()) {

map = new HashMap<String, Object>();

for (int i = 0; i < cols_len; i++) {

String cols_name = metaData.getColumnLabel(i + 1);

Object cols_value = result.getObject(cols_name);

if (cols_value == null) {

cols_value = "";

}

map.put(cols_name, cols_value);

}

list.add(map);

}

if (list.size() > 0) {

List<T> result = FactJsonUtil.parseList(FactJsonUtil.toJson(list), clazz);

return result;

}

return null;

} catch (SQLException e) {

throw new RuntimeException("result faild");

}  finally {

releaseConn();

}

}

/**

* 释放资源

*/

private  void releaseConn() {

if (result != null) {

try {

result.close();

} catch (SQLException e) {

e.printStackTrace();

}

}

if (pstmt  != null) {

try {

pstmt.close();

} catch (SQLException e) {

e.printStackTrace();

}

}

if (connection != null) {

try {

connection.close();

} catch (SQLException e) {

e.printStackTrace();

}

}

}

@SuppressWarnings("main")

public static void main(String[] args) {

// List<TbTest> list = new BaseDao().findResult(TbTest.class, "select * from tb_test", null);

// for (TbTest tbTest : list) {

// System.out.println(tbTest.getId() + ":" + tbTest.getName() + ":" + tbTest.getSex());

// }

String sql = "SELECT"+

" t1.id as item_id,t1.title as item_title,"+

" t1.sell_point as item_sell_point,"+

" t1.price as item_price,"+

" t1.num as item_num,t1.image as item_image,"+

" t2.name as item_cname,"+

" t3.item_desc"+

" FROM"+

" tb_item t1"+

" LEFT JOIN tb_item_cat t2 ON t1.cid = t2.id"+

" LEFT JOIN tb_item_desc t3 ON t1.id = t3.item_id"+

" where t1.id = ?";

List<SolrItem> list = new BaseDao().findResult(SolrItem.class, sql, 844022);

if (list != null && list.size() > 0) {

for (SolrItem solrItem : list) {

System.err.println(solrItem);

}

}

}

}

时间: 2024-10-05 02:26:37

JDBC简单封装的相关文章

java的jdbc简单封装

在学了jdbc一段时间后感觉自己写一个简单的封装来试试,于是参考的一些资料就写了一下不是多好,毕竟刚学也不太久 首先写配置文件:直接在src下建立一个db.properties文件然后写上内容 <span style="font-size:18px;">MysqlDriver=com.mysql.jdbc.Driver MysqlURL=jdbc\:mysql\://localhost\:3306/one User=root Pwd=123456 </span>

DBUtils开源JDBC类库,对JDBC简单封装(作用是:简化编码工作量,同时不会影响程序的性能)

DBUtils:提高了程序的性能,编程更加简便 三个架包 mysql-connector-java-jar commons-dbcp-1.4jar commons-pool-1.5.5jar 导进去 ------------------------------------------------------------------------------- //数据库连接池:三个开源的架包导进去 数据库连接池连接代码(其方法在TestJDBC()类中): public Connection te

JDBC的简单封装

JDBC的简单封装 使用JDBC来处理数据库的接口主要有三个,即Connection,PreparedStatement和ResultSet这三个,而对于这三个接口,还可以获取不同类型的元数据,通过这些元数据类获得一些数据库的信息. 元数据(MetaData),即定义数据的数据.打个比方,就好像我们要想搜索一首歌(歌本身是数据),而我们可以通过歌名,作者,专辑等信息来搜索,那么这些歌名,作者,专辑等等就是这首歌的元数据.因此数据库的元数据就是一些注明数据库信息的数据. ① 由Connection

对系统网络请求进行简单封装

AGConnectionNet对系统网络请求进行简单封装,可便利的进行网络请求,并将数据解析与网络请求封装在同一方法下,使用更加便利(JSON 解析采用自身解析方法, XML 解析采用第三方 ReadXML 进行解析). 方法具体参数说明 初始化方法:/*** 类方法,实例化当前数据请求对象 (单例)** @return 当前请求对象*/+ (instancetype)shareRequestData; 仅进行请求数据方法/*** 请求数据 (session 请求)** @param URLSt

iOS sqlite 增删改查 简单封装(基于 FMDB)

/** *  对 sqlite 的使用进行简单封装,仅涉及简单的单表 增删改查 * *  基于 FMDB * *  操作基于 model ,数据库表字段与 model 属性一一对应,对 model 整体进行操作 * *  根据 model 对象自动建表,字段类型只支持 NSString , NSIteger , float * *  用到 runtime 运行时获取 model 属性 * */ 1 // 2 // AGDatabaseManager.h 3 // 4 // Created by

简单封装sqlite3 实现实体对象与关系型数据库的相关操作【IOS】

源码如下,只有一个类文件 // //  DBHelper.h // //  Created by Jason_Msbaby on 15/10/15. //  Copyright ? 2015年 张杰. All rights reserved. // /**  *  简单封装了对于sqlite的使用 没有加入对事务及其他复杂的特性     基于传入sql语句的方式进行执行     使用单例模式     根据model对象自动创建表 只支持 NSInter NSString float 数据类型的支

httpclient4.3简单封装

对httpclient4.3版本的一个简单封装,下面是代码 /**  * httputil工具类  *   * @author rex  */ public class HttpUtil {     private static CloseableHttpClient client;     private static BasicCookieStore cookieStore;     private static HttpGet get;     private static HttpPos

MySQL的C++简单封装

/* *介绍:MySQL的简单封装,支持流操作输入输出MySQL语句,然而并没有什么软用,大二学生自娱自乐,有不足求指点 *作者:MrEO *日期:2016.3.26 */ 头文件 my_sql.h 1 #ifndef MY_SQL_H 2 #define MY_SQL_H 3 4 #include <mysql.h> 5 #include <iostream> 6 #include <string> 7 #include <iomanip> 8 9 cla

Android ToolBar 的简单封装

使用过 ToolBar 的朋友肯定对其使用方法不陌生,因为其用法很简单,如果对 ActionBar 使用比较熟练的人来说,ToolBar 就更容易了!不过,相信大家在使用的过程中都遇到过这样一个问题,需要在每一个我们要使用的 xml 中添加 ToolBar 这个控件,比如我需要在 MainActivity中使用 ToolBar,则他的 xml 文件需要这样写, <RelativeLayout xmlns:android="http://schemas.android.com/apk/res