Spring的jdbcTemplate查询执行原生sql
在spring与hibernate整合时进行数据库检索,执行原生sql:
public AppointmentEvaluateVo searchMyfeedbackDetail(String accountId, String fbId) {
String sql = "select ae.id as fbId ,ae.app_id as appId, a.app_no as appNo,"
+ " si.service_item AS serItem,a.app_service_time as feedTime,ae.remark as"
+ " feedCon, cou.attitudeScore AS attitudeScore,cou.qualityScore AS qualityScore,"
+ "cou.prescriptionScore AS prescriptionScore from appointment_evaluate ae LEFT JOIN"
+ " appointment a ON ae.app_id=a.id LEFT JOIN organization_service_item osi "
+ "ON a.item_id=osi.id LEFT JOIN service_item si ON osi.service_item_id=si.id "
+ "LEFT JOIN ( SELECT _a.item_id, count(_a.id) AS orderNum, _ae.attitude as "
+ "attitudeScore, _ae.quality as qualityScore, _ae.prescription as prescriptionScore "
+ " FROM appointment _a RIGHT JOIN appointment_evaluate _ae ON `_a`.id = `_ae`.app_id "
+ " GROUP BY _a.item_id) cou ON osi.id = cou.item_id where 1=1 and ae.creator='" + accountId
+ "' and ae.id='" + fbId + "';";
List rows = jdbcTemplate.queryForList(sql);
AppointmentEvaluateVo av = new AppointmentEvaluateVo();
Iterator ite = rows.iterator();
while (ite.hasNext()) {
Map avMap = (Map) ite.next();
av.setFbId(avMap.get("fbId").toString());
av.setAppId(avMap.get("appId").toString());
av.setAppNo(avMap.get("appNo").toString());
av.setSerItem(avMap.get("serItem").toString());
av.setFeedTime(avMap.get("feedTime").toString());
av.setFeedCon(avMap.get("feedCon").toString());
av.setTotScore(avMap.get("prescriptionScore").toString());
av.setTquaScore(avMap.get("qulityScore").toString());
av.setSerScore(avMap.get("attitudeScore").toString());
}
return av;
}
第二种:
public Student findStudentById(int id){
String sql = "select * from tb_student where id=?";
final Student student = new Student();
jdbcTemplate.query(sql,new Object[]{id},new RowCallbackHandler(){
public void processRow(ReultSet resultSet) throws SQLException{
student.setId(resultSet.getInt("id"));
student.setName(resultSet.getString("name"));
}
});
return student;
}
增删改查简单示例:
package com.demo.manager; import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;
import java.util.UUID; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.stereotype.Repository;
import org.springframework.util.StringUtils; import com.demo.pojo.Account; @Repository
public class AccountManager {
@Autowired
private JdbcTemplate jdbcTemplate; /**
* 添加
*
* @param ac
*/
public void addAccount(Account account) { jdbcTemplate.update("insert into tb_account(id,name,address,age) values (?,?,?,?)",
new Object[] { StringUtils.hasText(account.getId()) ? account.getId() : UUID.randomUUID(),
StringUtils.hasText(account.getName()) ? account.getName() : "",
StringUtils.hasText(account.getAddress()) ? account.getAddress() : "", account.getAge() });
} /**
* 根据id获取账户信息
* @param a
* @return
*/
public Account getAccount(Account a) {
Account account = jdbcTemplate.queryForObject("select * from tb_account where id=?", new Object[] { a.getId() },
new BeanPropertyRowMapper<>(Account.class));
return account;
} public List<Account> getAll() {
List<Account> accounts = jdbcTemplate.query("select * from tb_account",new RowMapper<Account>() { @Override
public Account mapRow(ResultSet rs, int num) throws SQLException { Account account = new Account();
account.setId(rs.getString(1));
account.setName(rs.getString(2));
account.setAddress(rs.getString(3));
account.setAge(rs.getInt(4));
return account;
}
});
return accounts;
} /**
* 删除
*
* @param ac
*/
public void deleteAccount(Account account) { jdbcTemplate.update("delete from tb_account where id=?",
new Object[] { account.getId() });
} /**
* 更新
*
* @param ac
*/
public void updateAccount(Account account) { jdbcTemplate.update("update tb_account set name=?,address=? where id=?",
new Object[] { account.getName(),account.getAddress(),account.getId() });
}
}
Spring的jdbcTemplate查询执行原生sql的更多相关文章
- orm分组,聚合查询,执行原生sql语句
from django.db.models import Avg from app01 import models annotate:(聚合查询) ret=models.Article.objects ...
- 10、Entity Framework Core 3.1入门教程-执行原生SQL
本文章是根据 微软MVP solenovex(杨旭)老师的视频教程编写而来,再加上自己的一些理解. 视频教程地址:https://www.bilibili.com/video/BV1xa4y1v7rR ...
- Spring 中jdbcTemplate 实现执行多条sql语句
说一下Spring框架中使用jdbcTemplate实现多条sql语句的执行: 很多情况下我们需要处理一件事情的时候需要对多个表执行多个sql语句,比如淘宝下单时,我们确认付款时要对自己银行账户的表里 ...
- Django中的ORM相关操作:F查询,Q查询,事物,ORM执行原生SQL
一 F查询与Q查询: 1 . F查询: 在上面所有的例子中,我们构造的过滤器都只是将字段值与某个常量做比较.如果我们要对两个字段的值做比较,那该怎么做呢? Django 提供 F() 来做这样的 ...
- python 之 Django框架(orm单表查询、orm多表查询、聚合查询、分组查询、F查询、 Q查询、事务、Django ORM执行原生SQL)
12.329 orm单表查询 import os if __name__ == '__main__': # 指定当前py脚本需要加载的Django项目配置信息 os.environ.setdefaul ...
- java:Hibernate框架3(使用Myeclipse逆向工程生成实体和配置信息,hql语句各种查询(使用hibernate执行原生SQL语句,占位符和命名参数,封装Vo查询多个属性,聚合函数,链接查询,命名查询),Criteria)
1.使用Myeclipse逆向工程生成实体和配置信息: 步骤1:配置MyEclipse Database Explorer: 步骤2:为项目添加hibernate的依赖: 此处打开后,点击next进入 ...
- Django的F查询和Q查询,事务,ORM执行原生SQL
F查询和Q查询,事务及其他 F查询和Q查询 F查询 在上面所有的例子中,我们构造的过滤器都只是将字段值与某个我们自己设定的常量做比较.如果我们要对两个字段的值做比较,那该怎么做呢? Django ...
- Hibernate执行原生SQL返回List<Map>类型结果集
我是学java出身的,web是我主要一块: 在做项目的时候最让人别扭的就是hibernate查询大都是查询出List<T>(T指代对应实体类)类型 如果这时候我用的联合查询,那么返回都就是 ...
- django系列5.4--ORM中执行原生SQL语句, Python脚本中调用django环境
ORM执行原生sql语句 在模型查询API不够用的情况下,我们还可以使用原始的SQL语句进行查询. Django 提供两种方法使用原始SQL进行查询:一种是使用raw()方法,进行原始SQL查询并返回 ...
随机推荐
- 我是服务的执政官-服务发现和注册工具consul简介
服务发现和注册 我们有了两个服务.服务A的IP地址是192.168.0.1,端口9001,服务B的IP地址192.168.0.2,端口9002.我们的客户端需要调用服务A和服务B,我们只需要在配置文件 ...
- 使用js实现显示系统当前时间并实现倒计时功能并触发模态框(遮罩)功能
常常在我们的网页中需要倒计时来触发一些函数,例如遮罩等,在本项目中,通过使用jquery,bootstrap,实现了显示系统当前时间,并且实现了倒计时的功能,倒计时实现后将会弹出模态框(遮罩层).模态 ...
- github-提交仓库
git提交仓库主要分3快 1.用命令git add告诉Git,把文件添加到本地仓库(可以用.代替提交所有) $ git add readme.txt 2.用命令git commit告诉Git,把文件提 ...
- 使用VS Code 从零开始开发并调试.NET Core 应用程序
最新文章:http://www.cnblogs.com/linezero/p/VSCodeNETCore.html 使用VS Code 从零开始开发并调试.NET Core 应用程序,C#调试. 上一 ...
- 架构师养成记--4.volatile关键字
volatile修饰的变量可在多个线程间可见. 如下代码,在子线程运行期间主线程修改属性值并不对子线程产生影响,原因是子线程有自己独立的内存空间,其中有主内存中的变量副本. public class ...
- eclipse发布web项目到生产环境的方式汇总(tomcat)
参考: http://www.cnblogs.com/xiohao/p/3689832.html http://www.111cn.net/jsp/J2EE-EJB/90337.htm 我收集了几点: ...
- python学习笔记-(十五)RabbitMQ队列
rabbitMQ是消息队列:想想之前的我们学过队列queue:threading queue(线程queue,多个线程之间进行数据交互).进程queue(父进程与子进程进行交互或者同属于同一父进程下的 ...
- Base64原理
一.Base64编码由来 为什么会有Base64编码呢?因为有些网络传送渠道并不支持所有的字节,例如传统的邮件只支持可见字符的传送,像ASCII码的控制字符就 不能通过邮件传送.这样用途就受到了很大的 ...
- 关于学习angularJS 的 心里路程(二)
这一次主要的学习内容是 ng-route(本次的项目由于种种原因吧,我们采用了ui-router,而不是原生的ng-route) * 配置路由. * 注意这里采用的是ui-router这个路由,而不是 ...
- ORACLE 触发器
•1.1 触发器类型 • DML触发器 • 替代触发器 • 系统触发器 •1.2 创建触发器 • 触发器触发次序 • 创建DML触发器 • 创建替代(INSTEAD OF)触发器 • 创建系统事件触发 ...