package cn.itcast.datasource.jdbctemplate;

import cn.itcast.domain.User;
import cn.itcast.utils.JDBCUtils;

import org.junit.Test;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;
import java.util.Map;

/**
* @author newcityman
* @date 2019/8/17 - 21:05
*/
public class JdbcTemplateDemo02 {
/*
* 根据id号,修改user对象
* */
// 获取JdbcTemplate对象
private JdbcTemplate temp = new JdbcTemplate(JDBCUtils.getDataSource());

@Test
public void test01() {
// 定义sql
String sql = "update user set name=?,email=?,tel=? where id=?";
// 执行sql语句
int i = temp.update(sql, "light", "23235@qq.com", "13770578331", 3);
// 判断执行结果
if (i > 0) {
System.out.println("数据修改成功");
} else {
System.out.println("数据修改失败");
}
}

/*
* 添加一条记录
* */
@Test
public void test02() {
// 定义sql
String sql = "insert into user(id,name,email,tel) values(null,?,?,?)";
// 执行sql语句
int i = temp.update(sql, "小猪", "3254@qq.com", "177025874");
// 判断执行结果
if (i > 0) {
System.out.println("数据添加成功");
} else {
System.out.println("数据添加失败");
}
}

/*
* 删除id=7的记录
* */

@Test
public void test03() {
// 定义sql语句
String sql = "delete from user where id=?";
// 执行sql语句
int i = temp.update(sql, 7);
// 判断执行结果
if (i > 0) {
System.out.println("数据删除成功");
} else {
System.out.println("数据删除失败");
}
}

/*
* 查询指定id的记录,并将其封装为Map集合
* */
@Test
public void test04(){
// 定义sql
String sql="select id,name,email,tel from user where id=?";
Map<String, Object> map = temp.queryForMap(sql, 3);
System.out.println(map);
}

/*
* 查询所有记录,并将其封装为list集合
* */
@Test
public void test05(){
String sql="select * from user";
List<Map<String, Object>> list = temp.queryForList(sql);
for (Map<String, Object> obj : list) {
System.out.println(obj);
}
}

/*
* 查询所有记录,并将其封装为emp对象的集合
* */
@Test
public void test06(){
String sql ="select id ,name ,email ,tel from user ";

List<User> list = temp.query(sql, new RowMapper<User>() {
@Override
public User mapRow(ResultSet rs, int i) throws SQLException {
User user = new User();
int id = rs.getInt("id");
String name = rs.getString("name");
String email = rs.getString("email");
String tel = rs.getString("tel");

user.setId(id);
user.setName(name);
user.setEmail(email);
user.setTel(tel);

return user;
}

});
for (User user : list) {
System.out.println(user);
}

}

/*
* 查询所有记录,并将其封装为emp对象的集合
* */
@Test
public void test06_2(){
String sql ="select id ,name ,email ,tel from user ";
List<User> list = temp.query(sql, new BeanPropertyRowMapper<User>(User.class));

for (User user : list) {
System.out.println(user);
}
}

/*
* 查询所有记录数
* */
@Test
public void test07(){
String sql ="select count(id) from user";
Long count = temp.queryForObject(sql, Long.class);
System.out.println(count);
}

}

使用JDBCTemplate执行DQL/DML语句的更多相关文章

  1. jdbc java数据库连接 3)Statement接口之执行DDL和DML语句的简化

    上一章的代码中,可以发现,jdbc执行DDL和DML有几个步骤都是一样的: 1)执行语句开始时,创建驱动注册对象.获取连接的数据库对象.创建Statement对象 // 创建驱动注册对象 Class. ...

  2. 6.1课堂笔记—DML(数据操作语言),DQL查询语句

    一.DML(数据操作语言) InnoDB MyISAM 支持事务 不支持事务 不支持全文索引 支持全文索引 支持外键约束 不支持 命令查看默认存储引擎 show variables like '%st ...

  3. Statement执行DQL语句(查询操作)

    import java.sql.Connection; import java.sql.ResultSet; import java.sql.Statement; import org.junit.T ...

  4. c# 数据库编程(通过SqlCommand 执行DML语句)

    原来一直是java,python等语言,最近用c#语言,并编写数据库访问代码.使用了之后,这里总结下,分享下c#如何操作数据库. 在java等其它语言中,有一套标准的api来完成数据库访问,并且一般都 ...

  5. JDBC基础篇(MYSQL)——使用statement执行DQL语句(select)

    注意:其中的JdbcUtil是我自定义的连接工具类:代码例子链接: package day02_statement; import java.sql.Connection; import java.s ...

  6. JDBC基础篇(MYSQL)——使用statement执行DML语句(insert/update/delete)

    注意:其中的JdbcUtil是我自定义的连接工具类:代码例子链接: package day02_statement; import java.sql.Connection; import java.s ...

  7. MySQL基础之DML语句

    DML 语句 DML(Data Manipulation Language)语句:数据操纵语句. 用途:用于添加.修改.删除和查询数据库记录,并检查数据完整性. 常用关键字:insert.update ...

  8. 详解MySQL---DDL语句、DML语句与DCL语句

    背景:近几年,开源数据库逐渐流行起来.由于具有免费使用.配置简单.稳定性好.性能优良等优点,开源数据库在中低端应用上占据了很大的市场份额,而 MySQL 正是开源数据库中的杰出代表.MySQL 数据库 ...

  9. 数据库 使用DML语句更改数据

    使用DML语句更改数据 添加新数据: 插入单行语句: Insert into 表名(列名)values(‘值’); 插入多行:insert into 表名(列名,…..) Values(‘值’,’值’ ...

随机推荐

  1. stom消费kafka消息速度慢的问题

    原来代码如下 KafkaSpoutConfig<String, String> kafkaSpoutConfig = KafkaSpoutConfig.builder(kafka_serv ...

  2. 🏆【Alibaba中间件技术系列】「RocketMQ技术专题」帮你梳理RocketMQ或Kafka的选择理由以及二者PK

    前提背景 大家都知道,市面上有许多开源的MQ,例如,RocketMQ.Kafka.RabbitMQ等等,现在Pulsar也开始发光,今天我们谈谈笔者最常用的RocketMQ和Kafka,想必大家早就知 ...

  3. 本地以sysdba 身份登录数据库实例时,报错ORA-01031 权限不足

    在linux 操作系统的数据库服务器上,使用"sqlplus / as sysdba" 登录Oracle 10.2 数据库实例时,登录失败,显示ORA-01031:  权限不足. ...

  4. 手把手教你学Dapr - 6. 发布订阅

    上一篇:手把手教你学Dapr - 5. 状态管理 介绍 发布/订阅模式允许微服务使用消息相互通信.生产者或发布者在不知道哪个应用程序将接收它们的情况下向主题发送消息.这涉及将它们写入输入通道.同样,消 ...

  5. MySQL基础语句(修改)

    ①INSERT INSERT INTO students (class_id, name, gender, score) VALUES (2, '大牛', 'M', 80); 向students表插入 ...

  6. Java设计模式之(二)——工厂模式

    1.什么是工厂模式 Define an interface for creating an object,but let subclasses decide which class toinstant ...

  7. [atARC064F]Rotated Palindromes

    (长度为$n$的序列$a_{i}$,下标范围为$[0,n)$,且用字符串的方式即$a_{[l,r]}$来表示子区间) 定义一个长为$n$的序列$a_{i}$的周期为的$l$满足$l|n$且$\fora ...

  8. Go语言核心36讲(Go语言实战与应用十二)--学习笔记

    34 | 并发安全字典sync.Map (上) 我们今天再来讲一个并发安全的高级数据结构:sync.Map.众所周知,Go 语言自带的字典类型map并不是并发安全的. 前导知识:并发安全字典诞生史 换 ...

  9. 还有这种好事!netty自带http2的编码解码器framecodec

    目录 简介 Http2FrameCodec Http2Frame.Http2FrameStream和Http2StreamFrame Http2FrameCodec的构造 Stream的生命周期 流控 ...

  10. 【IDEA】颜色主题 Color Theme

    颜色主题 Color Theme 2020-09-08  08:35:44  by冲冲 1.本人的颜色主题:TasteTheRainbow.jar 链接:https://pan.baidu.com/s ...