背景:

用惯了Mybatis,接收一个老项目使用Hibernate,特别不习惯。新的功能需要系统后台定时执行任务,顾使用JDBC封装工具类执行

源代码

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map; import com.ytforever.listener.ResourceManager; /**
* 使用JDBC连接数据库,处理系统自动执行任务等 特点: 直接执行sql,返回List<Map<字段名,值>>
*
* @author ZhangLi
* @date 2018年3月2日 下午2:57:58
*/
public class JDBCUtil {
private static String sql; public static List<Map<String, Object>> selectRS(String sql) {
JDBCUtil.sql = sql;
return selectRS();
} public static List<Map<String, Object>> selectRS() {
ArrayList<Map<String, Object>> rsList = new ArrayList<Map<String, Object>>();
Map<String, Object> rsMap = null;
Connection conn = null;
PreparedStatement stmt = null;
ResultSet rs = null;
try {
conn = JDBCUtil.getConnection("detection1", "detection1");
conn.setAutoCommit(false);
stmt = conn.prepareStatement(sql);
rs = stmt.executeQuery();
ResultSetMetaData rsmd = rs.getMetaData();// 取得数据库的列名
int numberOfColumns = rsmd.getColumnCount();
while (rs.next()) {
rsMap = new HashMap<String, Object>(numberOfColumns);
for (int i = 1; i < numberOfColumns + 1; i++) {
rsMap.put(rsmd.getColumnName(i), rs.getObject(i));
}
rsList.add(rsMap);
}
conn.commit();
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if (rs != null)
rs.close();
if (stmt != null)
stmt.close();
if (conn != null)
conn.close();
} catch (SQLException e) {
e.printStackTrace();
} }
return rsList;
}
/**
* 连接Oracle数据库
*/
public static Connection getConnection(String user, String password) {
Connection con = null;
try {
Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
con = DriverManager.getConnection(
"jdbc:oracle:thin:@localhost:1521/orcl", user, password);
return con;
} catch (SQLException e) {
e.printStackTrace();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
return null;
} public static void main(String[] args) {
String sql = String.format("select * from V_ITEM t where t.product_code='%s' and t.procedure_code='%s' and form_id is not null","YQ","2");
List<Map<String, Object>> selectRS = JDBCUtil.selectRS(sql);
for (Map<String, Object> map : selectRS) {
map.get("FORM_ID");
}
} }

特点:

1、特别方便

2、习惯写Sql的程序员看着特别亲切

3、转换为List之后,返回前台Json,前台人员也很舒服

于2018-03-02 16:05完成于西安逸翠园二期2号楼2单元

沫沫金

QQ:976465996

欢迎同仁联系,拍砖。

JDBC方式执行SQL,支持CRUD返回LIST的更多相关文章

  1. Java JDBC下执行SQL的不同方式、参数化预编译防御

    相关学习资料 http://zh.wikipedia.org/wiki/Java数据库连接 http://lavasoft.blog.51cto.com/62575/20588 http://blog ...

  2. JDBC——PreparedStatement执行SQL的对象

    Statement的子接口,预编译SQL,动态SQL 功能比爹强大 用来解决SQL注入的 预编译SQL:参数使用?作为占位符,执行SQL的时候给?赋上值就可以了 使用步骤: 1.导入驱动jar包 复制 ...

  3. JDBC中执行SQL语句的方式

    一.执行DDL.DML语句 DDL.DML分别表示数据库定义语言.数据库操纵语言,操控这两种语言应该使用Statement对象的executeUpdate方法. 代码如下: public static ...

  4. JDBC——Statement执行SQL语句的对象

    Statement该对象用于执行静态SQL语句并返回它产生的结果.表示所有的参数在生成SQL的时候都是拼接好的,容易产生SQL注入的问题 PreparedStatement对象是一个预编译的SQL语句 ...

  5. jdbc批量执行SQL insert 操作

    package com.file; import java.io.BufferedReader; import java.io.FileReader; import java.util.ArrayLi ...

  6. python MySQL执行SQL查询结果返回字典

    写自动化测试的时候我希望执行数据库前置任务,把数据库查询的结果作为请求的参数,但是正常返回结果为列表嵌套里面,这样就会影响到关键字准确的获取,特别的受限于SQL的查询字段的的顺序,所以希望返回的单条数 ...

  7. sp_executesql得到执行sql语句的返回值

    执行 sql语句,得到 变量的值 ' declare @Partition int; ); ); SET @SQLString = N'SELECT @RangeKeyOUT = $PARTITION ...

  8. Jmeter的JDBC Request,sql参数化及返回值取值

    1.JDBC Request面板 Variable Name:数据库连接池的名字,需要与JDBC Connection Configuration的Variable Name Bound Pool名字 ...

  9. JDBC中执行sql语句的 增 , 删 , 改 , 查 的方法

    executeQuery()  : 执行 SELECT 语句,它几乎是使用最多的 SQL 语句 executeUpdate() :   执行 INSERT.UPDATE 或 DELETE 语句以及 S ...

随机推荐

  1. maven环境搭建Myeclipse配置

    一.Maven的下载安装 准备工作: 1.安装环境:windows 2.需安装JDK,并配置环境变量(略) 3.Maven版本3.0.5 4.下载地址:链接:https://pan.baidu.com ...

  2. awk统计文件中某关键词出现次数

    1.统计文件test.txt中第2列不同值出现的次数 awk '{sum[$2]+=1}END{for(i in sum)print i"\t"sum[i]}'  test.txt ...

  3. Winform开发全套31个UI组件开源共享

    一.前言 这套UI库是上一个公司(好几年前了)完成的.当时主要为开发公司内部ERP系统,重新设计实现了所有用到的Winform组建,包括Form窗体组建6个(支持换肤),基础控件25个.其中有很多参考 ...

  4. 使用T4Scaffolding 创建自己的代码生成

    nuget查找引入T4Scaffolding.Core 这个是最低层的,没有其他依赖,当然也没有现成的模板 这个有对EF的依赖,自带了生成DBContext的模板   这个自带了一些mvc的contr ...

  5. mui 百度语音识别转换文字

    前言 用mui混合开发的APP,现有一个功能需求就是语音转换成文字,并把语音进行保存.对此考虑两种选择讯飞和百度.最终选择了百度语音. 百度语音 通过官方文档我们大致可以确定如果想要实现语音识别,要做 ...

  6. unity 判断平台(安卓,iOS还是编辑器)

    两种方式 --------------- C预处理器编译判断 --------------- #if UNITY_IOS // ... iOS项目才会编译 #elif UNITY_ANDROID // ...

  7. Jsp&Servlet入门级项目全程实录第6讲

    惯例广告一发,对于初学真,真的很有用www.java1234.com,去试试吧! 1.建立数据表及数据(略) 2.创建student model package com.java1234.model; ...

  8. include,forward和param指令

  9. oracle 合并列的函数wm_concat

    oracle wm_concat(column)函数使我们经常会使用到的,下面就教您如何使用oracle wm_concat(column)函数实现字段合并,如果您对oracle wm_concat( ...

  10. js程序中美元符号$是什么(转)

    $符号在php中是表示变量的特征字符, 在js中它也有很多作用, 一般我们用来命名一个函数名称,获取id的1.首先可以用来表示变量, 比如变量 var s='asdsd'或var $s='asdasd ...