package cn.szhl.foreign.utils;
import org.sql2o.Connection;
import org.sql2o.Query;
import org.sql2o.Sql2o;
import java.util.List;
import java.util.Map;
public class Sql2oUtil {
/*
* 执行单条增,删,改操作
* sql: sql语句
* parameterM:sql参数
*/
public static void execute(final String sql, Map<String, Object> parameterM) {
Sql2o sql2o = new Sql2o(ConnPoolUtil.getDataSource());
try (Connection con = sql2o.open()) {
Query query = con.createQuery(sql);
if (parameterM != null && parameterM.size() > 0) {
for (Map.Entry<String, Object> entry : parameterM.entrySet()) {
query.addParameter(entry.getKey(), entry.getValue());
}
}
query.executeUpdate();
}
}
/*
* 查询列表
* sql: sql语句
* zClass:映射的实体类
* return: List<T>
*/
public static <T> List<T> queryList(final String sql, Class zClass) {
Sql2o sql2o = new Sql2o(ConnPoolUtil.getDataSource());
try (Connection con = sql2o.open()) {
Query query = con.createQuery(sql);
return query.executeAndFetch(zClass);
}
}
/*
* 查询列表
* sql: sql语句
* parameterM:sql参数
* zClass:映射的实体类
* return: List<T>
*/
public static <T> List<T> queryList(final String sql, Map<String, Object> parameterM, Class<T> zClass) {
Sql2o sql2o = new Sql2o(ConnPoolUtil.getDataSource());
try (Connection con = sql2o.open()) {
Query query = con.createQuery(sql);
if (parameterM != null && parameterM.size() > 0) {
for (Map.Entry<String, Object> entry : parameterM.entrySet()) {
query.addParameter(entry.getKey(), entry.getValue());
}
}
return query.executeAndFetch(zClass);
}
}
/*
* 查询单条
* sql: sql语句
* parameterM:sql参数
* zClass:映射的实体类
* return: T
*/
public static <T> T query(final String sql, Map<String, Object> parameterM, Class<T> zClass) {
Sql2o sql2o = new Sql2o(ConnPoolUtil.getDataSource());
try (Connection con = sql2o.open()) {
Query query = con.createQuery(sql);
if (parameterM != null && parameterM.size() > 0) {
for (Map.Entry<String, Object> entry : parameterM.entrySet()) {
query.addParameter(entry.getKey(), entry.getValue());
}
}
return query.executeAndFetchFirst(zClass);
}
}
/*
* 查询第一行第一列
* sql: sql语句
* parameterM:sql参数
* return: 第一行第一列
*/
public static Object executeScalar(final String sql, Map<String, Object> parameterM) {
Sql2o sql2o = new Sql2o(ConnPoolUtil.getDataSource());
try (Connection con = sql2o.open()) {
Query query = con.createQuery(sql);
if (parameterM != null && parameterM.size() > 0) {
for (Map.Entry<String, Object> entry : parameterM.entrySet()) {
query.addParameter(entry.getKey(), entry.getValue());
}
}
return query.executeScalar();
}
}
/*
* 查询第一行第一列
* sql: sql语句
* return: 第一行第一列
*/
public static Object executeScalar(final String sql) {
Sql2o sql2o = new Sql2o(ConnPoolUtil.getDataSource());
try (Connection con = sql2o.open()) {
Query query = con.createQuery(sql);
return query.executeScalar();
}
}
}
不过感觉坑太多了, 比如查询单条对象, 如果查不到值给直接返回空指针异常.....醉了
网友评论