普通方法的查询:

@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;
}

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

  1. 【mybatis】mybatis执行一个update方法,返回值为1,但是数据库中数据并未更新,粘贴sql语句直接在数据库执行,等待好久报错:Lock wait timeout exceeded; try restarting transaction

    今天使用mybatis和jpa的过程中,发现这样一个问题: mybatis执行一个update方法,返回值为1,但是数据库中数据并未更新,粘贴sql语句直接在数据库执行,等待好久报错:Lock wai ...

  2. Odoo(OpenERP) 多个子类重载同一个父类方法的执行顺序及如何调用父类的父类方法

    首先说下起因,在修改英国会计模块(没错,就是那个安格鲁撒克逊记账模式!)中不符合中国国情的部分供能时,碰到了一个棘手的问题,简单的说就是B类继承它的父类A并重载了A的方法M,同时C类也继承了A类也重载 ...

  3. thinkphp5.0 空模块、空控制器、空方法

    空模块 'exception_handle' => function(Exception $e){ // 参数验证错误 if ($e instanceof \think\exception\Va ...

  4. Oracle SQL语句之常见优化方法总结--不定更新

    1.SQL语句尽量用大写的: 因为oracle总是先解析SQL语句,把小写的字母转换成大写的再执行. 2.WHERE子句中的连接顺序: ORACLE采用自下而上的顺序解析WHERE子句,根据这个原理, ...

  5. [疯狂Java]JDBC:PreparedStatement预编译执行SQL语句

    1. SQL语句的执行过程——Statement直接执行的弊病: 1) SQL语句和编程语言一样,仅仅就会普通的文本字符串,首先数据库引擎无法识别这种文本字符串,而底层的CPU更不理解这些文本字符串( ...

  6. ASP.NET MVC5+EF6+EasyUI 后台管理系统(89)-EF执行SQL语句与存储过程

    这一节,我们来看看EF如何执行SQL语句与读取存储过程的数据,可能有一部分人,还不知道EF如何执行存储过程与原生SQL语句! 我们什么时候要直接使用原生的SQL语句? 返回值过于复杂 过于复杂的联合查 ...

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

    在前两波中,已完成了Excel与Sqlserver的查询和上传功能,但难免许多临时的或更深入地操作数据库需要用Sql语句来操作,对一般用户电脑里,不可能有条件轻易安装一个数据库客户端软件,就算安装了对 ...

  8. sql语句执行步骤详解

    目录 一.准备工作 二.SQL逻辑查询语句执行顺序 三.SQL书写习惯 一.准备工作 先来一段伪代码,首先你能看懂么? SELECT DISTINCT <select_list> FROM ...

  9. java执行多条SQL语句

    一次执行多条SQL的技术要点如下: DatabaseMetaData接口是描述有关数据库的整体综合信息,由于DatabaseMetaData是接口,所以没有构造方法,故不能使用new来创建Databa ...

随机推荐

  1. #id+变量

    "#id"在解析的时候看成是一个整体字符串或者是一个具体的selector了,只有写成"#"+id,这是才会在解析时把id变量的值进行替换成被赋予的变量的值.链 ...

  2. 使用C#把发表的时间改为几年前,几个月,几天前,几小时前,几分钟前,或几秒前

    我们在评论中往往会看到多少天前,多少小时前. 实现原理:现在时间-过去时间 得到的时间差来做比较 下面我定义了一个Helper类,大家直接引用即可,参数就是时间差,注意时间差类型是TimeSpan类型 ...

  3. 【USACO 3.2】Sweet Butter(最短路)

    题意 一个联通图里给定若干个点,求他们到某点距离之和的最小值. 题解 枚举到的某点,然后优先队列优化的dijkstra求最短路,把给定的点到其的最短路加起来,更新最小值.复杂度是\(O(NElogE) ...

  4. 页内多个input全选不干扰且只用一段代码。

    //html内容 <body> <div id="d1"> <input type="checkbox" class=" ...

  5. C#面向对象设计模式纵横谈——3.Abstract Factory 抽象工厂(创建型模式)

    动机(Motivation) 在软件系统中经常面临着“一系列相互依赖的对象”的创建工作,同时,由于需求变化,往往存在更多系列对象的创建工作.如何应对这种变化?如何绕过常规对象的创建,提供一种“封装机制 ...

  6. 【BZOJ-4726】Sabota? 树形DP

    4726: [POI2017]Sabota? Time Limit: 20 Sec  Memory Limit: 128 MBSec  Special JudgeSubmit: 128  Solved ...

  7. javascript 容易忽略的小知识点 new到底做了什么?

    问题:平时我们经常写 var ss = new Person():ss就是一个由'Person类'生成的对象了,可是我们的Person方法里却没有写 return: (var ss= Person() ...

  8. zookeeper原理解析-客户端与服务器端交互

    Zookeeper集群中server数量总是确定的,所以集群中的server交互采用比较可靠的bio长连接模型:不同于集群中sever间交互zookeeper客户端其实数量是未知的,为了提高zooke ...

  9. Bitmap转换成BitmapImage

    public BitmapImage BitmapToBitmapImage(System.Drawing.Bitmap bitmap) { MemoryStream ms = new MemoryS ...

  10. javascript事件操作

    这里使用一个图片切换的方法来举例说明,如何通过代码操作事件. 1 通过html属性处理事件 <img id='avatar1' src="http://7u2gej.com1.z0.g ...