万能一键查询数据用法
public static void main(String[] args) {
//测试
try {
//万能一键查询方法
//不带防止注入
List<Map<String,Object>> s=Sjdbc.getMysql("select ID,`name` from student where ID=22040801 and name='星辰'");
//带防止sql注入写法
List<Map<String,Object>> ss=Sjdbc.getMysql("select ID,`name` from student where ID=? and name=?",22040801,"星辰")
//效果一样
System.out.println(s);
//输出:[{ID=22040801,name=星辰}]
System.out.println("查询结果ID="+s.get(0).get("ID")+" "+"name="+s.get(0).get("name");
//输出:查询结果ID=22040801 name=星辰
//万能一键增删改方法
Sjdbc.setMysql("【增删改语句, 返回一个布尔类型】")
} catch (Exception e) {
throw new RuntimeException(e);
}
}
完整代码
//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by FernFlower decompiler)
//
package org.hwd;
import java.sql.Connection;
import java.sql.DriverManager;
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;
public class Sjdbc {
private static String Rive = "【连接信息】"; //示例:com.mysql.cj.jdbc.Driver
private static String userName = "root";
private static String passWord = "1234";
private static String url="【地址】"; //示例:jdbc:mysql:///ikun
public Sjdbc(String userName, String passWord, String url) {
Sjdbc.userName = userName;
Sjdbc.passWord = passWord;
Sjdbc.url = url;
}
public Sjdbc(String Lian_jie, String userName, String passWord, String url) {
Rive = Lian_jie;
Sjdbc.userName = userName;
Sjdbc.passWord = passWord;
Sjdbc.url = url;
}
public static String getRive() {
return Rive;
}
public static void setRive(String rive) {
Rive = rive;
}
public static String getUserName() {
return userName;
}
public static void setUserName(String userName) {
Sjdbc.userName = userName;
}
public static String getPassWord() {
return passWord;
}
public static void setPassWord(String passWord) {
Sjdbc.passWord = passWord;
}
public static String getUrl() {
return url;
}
public static void setUrl(String url) {
Sjdbc.url = url;
}
static {
try {
Class.forName(Rive);
} catch (ClassNotFoundException var1) {
throw new RuntimeException(var1);
}
}
//连接
public static Connection getConn() throws Exception {
try {
return DriverManager.getConnection(url, userName, passWord);
} catch (SQLException var1) {
var1.printStackTrace();
throw new Exception();
}
}
//关闭连接
public static void colse(ResultSet rs, PreparedStatement stat, Connection conn) {
try {
if (rs != null) {
rs.close();
}
if (stat != null) {
stat.close();
}
if (conn != null) {
conn.close();
}
} catch (SQLException var4) {
var4.printStackTrace();
throw new RuntimeException(var4);
}
}
//增删改方法
public static Boolean setMySql(String sql) throws Exception {
Connection con = getConn();
PreparedStatement stat = con.prepareStatement(sql);
int rs = stat.executeUpdate();
if (rs >= 0) {
colse((ResultSet)null, stat, con);
return true;
} else {
colse((ResultSet)null, stat, con);
return false;
}
}
//带注入查询方法
public static List<Map<String, Object>> getMysql(String sql,Object... objects) throws Exception {
if (sql.indexOf("?")!=-1&&objects==null){
return null;
}
List<Map<String, Object>> maps = new ArrayList();
Connection conn = getConn();
PreparedStatement stat = conn.prepareStatement(sql);
for(int a = 0; a < objects.length; a++) {
if(objects[a] instanceof String){
stat.setString(a + 1, (String) objects[a]);
}else if(objects[a] instanceof Integer){
stat.setInt(a+1, (Integer) objects[a]);
}
}
ResultSet rs = stat.executeQuery();
ResultSetMetaData md = rs.getMetaData();
int i = md.getColumnCount();
String[] TypeName = new String[i];
for(int s = 0; s < i; ++s) {
TypeName[s] = md.getColumnTypeName(s + 1);
}
while(rs.next()) {
Map<String, Object> s = new HashMap();
for(int j = 1; j <= i; ++j) {
if (TypeName[j - 1].equals("INT")) {
s.put(md.getColumnName(j), rs.getInt(j));
} else if (!TypeName[j - 1].equals("VARCHAR") && !TypeName[j - 1].equals("TIMESTAMP")) {
if (TypeName[j - 1].equals("DOUBLE")) {
s.put(md.getColumnName(j), rs.getDouble(j));
} else if (TypeName[j - 1].equals("FLOAT")) {
s.put(md.getColumnName(j), rs.getFloat(j));
} else {
s.put(md.getColumnName(j), rs.getObject(j));
}
} else {
s.put(md.getColumnName(j), rs.getString(j));
}
}
maps.add(s);
}
colse(rs, stat, conn);
return maps;
}
//不带注入查询方法
public static List<Map<String, Object>> getMysql(String sql) throws Exception {
List<Map<String, Object>> maps = new ArrayList();
Connection conn = getConn();
PreparedStatement stat = conn.prepareStatement(sql);
ResultSet rs = stat.executeQuery();
ResultSetMetaData md = rs.getMetaData();
int i = md.getColumnCount();
String[] TypeName = new String[i];
for(int s = 0; s < i; ++s) {
TypeName[s] = md.getColumnTypeName(s + 1);
}
while(rs.next()) {
Map<String, Object> s = new HashMap();
for(int j = 1; j <= i; ++j) {
if (TypeName[j - 1].equals("INT")) {
s.put(md.getColumnName(j), rs.getInt(j));
} else if (!TypeName[j - 1].equals("VARCHAR") && !TypeName[j - 1].equals("TIMESTAMP")) {
if (TypeName[j - 1].equals("DOUBLE")) {
s.put(md.getColumnName(j), rs.getDouble(j));
} else if (TypeName[j - 1].equals("FLOAT")) {
s.put(md.getColumnName(j), rs.getFloat(j));
} else {
s.put(md.getColumnName(j), rs.getObject(j));
}
} else {
s.put(md.getColumnName(j), rs.getString(j));
}
}
maps.add(s);
}
colse(rs, stat, conn);
return maps;
}
public static void main(String[] args) {
//测试
try {
//不带防止注入
List<Map<String,Object>> s=Sjdbc.getMysql("select ID,`name` from student where ID=22040801 and name='星辰'");
//带防止sql注入写法
List<Map<String,Object>> ss=Sjdbc.getMysql("select ID,`name` from student where ID=? and name=?",22040801,"星辰")
//效果一样
System.out.println(s);
//输出:[{ID=22040801,name=星辰}]
System.out.println("查询结果ID="+s.get(0).get("ID")+" "+"name="+s.get(0).get("name");
//输出:查询结果ID=22040801 name=星辰
Sjdbc.setMysql("【增删改语句, 返回一个布尔类型】")
} catch (Exception e) {
throw new RuntimeException(e);
}
}
}