带参方法的执行:普通方法的查询,可为空方法的查询。批量处理SQL语句。

普通方法的查询:

@Override
    public List<Map<String, Object>> selectSpentAmount(Integer MAT_TYPE_, String DEPT_CODE_, Integer YEAR_, Map<String, Object> operator) {
        String sql = "select MAT_NO_, sum(AMOUNT_) as SPENT_AMOUNT_ from DM_MAT_MONTH_PLAN where MAT_TYPE_ = ? and DEPT_CODE_ = ? and YEAR_ = ? and PROCESS_STATUS_ in (1, 2) group by MAT_NO_";
        return dmJdbcTemplate.queryForList(sql, MAT_TYPE_, DEPT_CODE_, YEAR_);
    }

可为空方法的查询:

@Override
    public List<Map<String, Object>> selectSpentBudget(Integer MAT_TYPE_, String DEPT_CODE_, Integer YEAR_, Integer MONTH_, String MAT_BUDGET_CAT_ID_, List<Integer> PROCESS_STATUS_LIST, Map<String, Object> operator) {
        String sql = "select MAT_NO_, sum(PLANNED_PRICE_ * AMOUNT_) as SPENT_BUDGET_ from DM_MAT_MONTH_PLAN where 1 = 1";
        Map<String, Object> paramMap = new HashMap<String, Object>();

        if (MAT_TYPE_ != null) {
            sql += " and MAT_TYPE_ = :MAT_TYPE_";
            paramMap.put("MAT_TYPE_", MAT_TYPE_);
        }

        if (StringUtils.isNotEmpty(DEPT_CODE_)) {
            sql += " and DEPT_CODE_ = :DEPT_CODE_";
            paramMap.put("DEPT_CODE_", DEPT_CODE_);
        }

        if (YEAR_ != null) {
            sql += " and YEAR_ = :YEAR_";
            paramMap.put("YEAR_", YEAR_);
        }

        if (MONTH_ != null) {
            sql += " and MONTH_ = :MONTH_";
            paramMap.put("MONTH_", MONTH_);
        }

        if (StringUtils.isNotEmpty(MAT_BUDGET_CAT_ID_)) {
            sql += " and MAT_BUDGET_CAT_ID_ = :MAT_BUDGET_CAT_ID_";
            paramMap.put("MAT_BUDGET_CAT_ID_", MAT_BUDGET_CAT_ID_);
        }

        if (PROCESS_STATUS_LIST != null && PROCESS_STATUS_LIST.size() > 0) {
            sql += " and PROCESS_STATUS_ in (:PROCESS_STATUS_LIST)";
            paramMap.put("PROCESS_STATUS_LIST", PROCESS_STATUS_LIST);
        }
        sql += " group by MAT_NO_";
        NamedParameterJdbcTemplate namedParameterJdbcTemplate = new NamedParameterJdbcTemplate(dmJdbcTemplate);
        return namedParameterJdbcTemplate.queryForList(sql, paramMap);
    }

批量处理SQL语句:

@Override
    public int updateStatus(final List<String> MAT_AUX_PLAN_REC_ID_LIST, final Map<String, Object> operator) {
        if (MAT_AUX_PLAN_REC_ID_LIST == null || MAT_AUX_PLAN_REC_ID_LIST.size() == 0) {
            return 0;
        }

        String sql = "update DM_MAT_AUX_PLAN_REC set STATUS_ = 1 where MAT_AUX_PLAN_REC_ID_ = ? and STATUS_ = 0";

        BatchPreparedStatementSetter batch = new BatchPreparedStatementSetter() {
            public void setValues(PreparedStatement ps, int i) throws SQLException {
                ps.setString(1, MAT_AUX_PLAN_REC_ID_LIST.get(i));
            }

            public int getBatchSize() {
                return MAT_AUX_PLAN_REC_ID_LIST.size();
            }
        };
        return dmJdbcTemplate.batchUpdate(sql, batch).length;
    }
时间: 2024-11-03 22:19:43

带参方法的执行:普通方法的查询,可为空方法的查询。批量处理SQL语句。的相关文章

C#后台sql语句注释,根据isnull()方法进行条件选择

select isnull(b.guid,k.guid) as project_id,isnull(b.projectno,k.projectno) as projectno, isnull(b.projectname,k.projectname) as projectname,c.COMPANYNAME as customer, isnull(b.project_date,k.project_date) as project_date,d.typecn,a.guid as apply_id,a

个人永久性免费-Excel催化剂功能第21波-Excel与Sqlserver零门槛交互-执行SQL语句篇

在前两波中,已完成了Excel与Sqlserver的查询和上传功能,但难免许多临时的或更深入地操作数据库需要用Sql语句来操作,对一般用户电脑里,不可能有条件轻易安装一个数据库客户端软件,就算安装了对其中烦多的功能操作也不胜任. 开发一个简单的接受SQL语句对数据库进行访问操作就有点必要,当然这个落脚点放到Excel上是很不错的选择,毕竟所有用户电脑都有安装Excel. 并且在Excel上批量构造SQL语句也是容易的事,若有数据需要从数据库中导出,Excel作为装载小量数据并进行后续分析的容器是

mysql(1)—— 详解一条sql语句的执行过程

SQL是一套标准,全称结构化查询语言,是用来完成和数据库之间的通信的编程语言,SQL语言是脚本语言,直接运行在数据库上.同时,SQL语句与数据在数据库上的存储方式无关,只是不同的数据库对于同一条SQL语句的底层实现不同罢了,但结果相同.这有点类似于java中接口的作用,一个接口可以有不同的实现类,不同的实现类对于接口中方法的实现方式可以不同,结果可以相同.这里SQL语言的作用就类似于java中的接口,数据库就类似于java中接口的实现类,SQL语句就类似于java接口中的方法.不同的是java中

详解一条sql语句的执行过程

SQL是一套标准,全称结构化查询语言,是用来完成和数据库之间的通信的编程语言,SQL语言是脚本语言,直接运行在数据库上.同时,SQL语句与数据在数据库上的存储方式无关,只是不同的数据库对于同一条SQL语句的底层实现不同罢了,但结果相同.这有点类似于java中接口的作用,一个接口可以有不同的实现类,不同的实现类对于接口中方法的实现方式可以不同,结果可以相同.这里SQL语言的作用就类似于java中的接口,数据库就类似于java中接口的实现类,SQL语句就类似于java接口中的方法.不同的是java中

java执行多条SQL语句

一次执行多条SQL的技术要点如下: DatabaseMetaData接口是描述有关数据库的整体综合信息,由于DatabaseMetaData是接口,所以没有构造方法,故不能使用new来创建DatabaseMetaData对象,但是可以通过Connection的getMetaData()方法创建.例如:DatabaseMetaData md=con.getMetaData(). DatabaseMetaData类的supportsBatchUpdates方法用于判断此数据库是否支持批量更新.其返回

MySQL sql语句执行顺序

sql语句select语句查询顺序 (7)     SELECT (8)     DISTINCT <select_list> (1)     FROM <left_table> (3)     <join_type> JOIN <right_table> (2)     ON <join_condition> (4)     WHERE <where_condition> (5)     GROUP BY <group_by_

Oracle SQL语句执行完整过程:

SQL语句执行完整过程: 1. 用户进程提交一个sql 语句: update temp set a=a*2,给服务器进程. 2.服务器进程从用户进程把信息接收到后, 在PGA 中就要此进程分配所需内存,存储相关的信息,如在会话内存存储相关的登录信息等. 3.服务 器进程把这个sql  语句的字符转化为ASCII 等效数字码, 接着这个ASCII   码被传递给一个HASH 函数, 并返回一个hash 值,然后服务器进程将到shared pool  中的library cache 中去查找是否存在

sql语句的执行原理

SQL语句执行过程详解 2014-07-17 01:15:43 分类: Oracle SQL语句执行过程详解一条sql,plsql的执行到底是怎样执行的呢?一.SQL语句执行原理:第一步:客户端把语句发给服务器端执行当我们在客户端执行 select 语句时,客户端会把这条 SQL 语句发送给服务器端,让服务器端的进程来处理这语句.也就是说,Oracle 客户端是不会做任何的操作,他的主要任务就是把客户端产生的一些 SQL 语句发送给服务器端.虽然在客户端也有一个数据库进程,但是,这个进程的作用跟

SQLPLUS执行PL/SQL语句块

1.首先登录Oracle HR schema: 2.对于PL/SQL程序,分号表示语句的结束:而使用 "."  号表示整个语句块的结束,也可以省略.按回车键后,该语句块不会执行,即不会发送到数据库服务器,而是必须使用 "/" 符号执行PL/SQL 语句块 使用 "/" 执行PL/SQL 语句块 3. 在上例中,虽然执行了PL/SQL 程序,但是没有输出结果的显示.数据库服务器肯定将数据传输给了SQLPLUS,并且变量var_first_name