JDBC方式执行SQL,支持CRUD返回LIST
背景:
用惯了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的更多相关文章
- Java JDBC下执行SQL的不同方式、参数化预编译防御
相关学习资料 http://zh.wikipedia.org/wiki/Java数据库连接 http://lavasoft.blog.51cto.com/62575/20588 http://blog ...
- JDBC——PreparedStatement执行SQL的对象
Statement的子接口,预编译SQL,动态SQL 功能比爹强大 用来解决SQL注入的 预编译SQL:参数使用?作为占位符,执行SQL的时候给?赋上值就可以了 使用步骤: 1.导入驱动jar包 复制 ...
- JDBC中执行SQL语句的方式
一.执行DDL.DML语句 DDL.DML分别表示数据库定义语言.数据库操纵语言,操控这两种语言应该使用Statement对象的executeUpdate方法. 代码如下: public static ...
- JDBC——Statement执行SQL语句的对象
Statement该对象用于执行静态SQL语句并返回它产生的结果.表示所有的参数在生成SQL的时候都是拼接好的,容易产生SQL注入的问题 PreparedStatement对象是一个预编译的SQL语句 ...
- jdbc批量执行SQL insert 操作
package com.file; import java.io.BufferedReader; import java.io.FileReader; import java.util.ArrayLi ...
- python MySQL执行SQL查询结果返回字典
写自动化测试的时候我希望执行数据库前置任务,把数据库查询的结果作为请求的参数,但是正常返回结果为列表嵌套里面,这样就会影响到关键字准确的获取,特别的受限于SQL的查询字段的的顺序,所以希望返回的单条数 ...
- sp_executesql得到执行sql语句的返回值
执行 sql语句,得到 变量的值 ' declare @Partition int; ); ); SET @SQLString = N'SELECT @RangeKeyOUT = $PARTITION ...
- Jmeter的JDBC Request,sql参数化及返回值取值
1.JDBC Request面板 Variable Name:数据库连接池的名字,需要与JDBC Connection Configuration的Variable Name Bound Pool名字 ...
- JDBC中执行sql语句的 增 , 删 , 改 , 查 的方法
executeQuery() : 执行 SELECT 语句,它几乎是使用最多的 SQL 语句 executeUpdate() : 执行 INSERT.UPDATE 或 DELETE 语句以及 S ...
随机推荐
- maven环境搭建Myeclipse配置
一.Maven的下载安装 准备工作: 1.安装环境:windows 2.需安装JDK,并配置环境变量(略) 3.Maven版本3.0.5 4.下载地址:链接:https://pan.baidu.com ...
- awk统计文件中某关键词出现次数
1.统计文件test.txt中第2列不同值出现的次数 awk '{sum[$2]+=1}END{for(i in sum)print i"\t"sum[i]}' test.txt ...
- Winform开发全套31个UI组件开源共享
一.前言 这套UI库是上一个公司(好几年前了)完成的.当时主要为开发公司内部ERP系统,重新设计实现了所有用到的Winform组建,包括Form窗体组建6个(支持换肤),基础控件25个.其中有很多参考 ...
- 使用T4Scaffolding 创建自己的代码生成
nuget查找引入T4Scaffolding.Core 这个是最低层的,没有其他依赖,当然也没有现成的模板 这个有对EF的依赖,自带了生成DBContext的模板 这个自带了一些mvc的contr ...
- mui 百度语音识别转换文字
前言 用mui混合开发的APP,现有一个功能需求就是语音转换成文字,并把语音进行保存.对此考虑两种选择讯飞和百度.最终选择了百度语音. 百度语音 通过官方文档我们大致可以确定如果想要实现语音识别,要做 ...
- unity 判断平台(安卓,iOS还是编辑器)
两种方式 --------------- C预处理器编译判断 --------------- #if UNITY_IOS // ... iOS项目才会编译 #elif UNITY_ANDROID // ...
- Jsp&Servlet入门级项目全程实录第6讲
惯例广告一发,对于初学真,真的很有用www.java1234.com,去试试吧! 1.建立数据表及数据(略) 2.创建student model package com.java1234.model; ...
- include,forward和param指令
- oracle 合并列的函数wm_concat
oracle wm_concat(column)函数使我们经常会使用到的,下面就教您如何使用oracle wm_concat(column)函数实现字段合并,如果您对oracle wm_concat( ...
- js程序中美元符号$是什么(转)
$符号在php中是表示变量的特征字符, 在js中它也有很多作用, 一般我们用来命名一个函数名称,获取id的1.首先可以用来表示变量, 比如变量 var s='asdsd'或var $s='asdasd ...