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. Spring Data Redis Stream的使用

    一.背景 Stream类型是 redis5之后新增的类型,在这篇文章中,我们实现使用Spring boot data redis来消费Redis Stream中的数据.实现独立消费和消费组消费. 二. ...

  2. 2021广东省强网杯WriteUp

    个人赛 网络诈骗 参考 https://github.com/Heyxk/notes/issues/1 先把EnMicroMsg.db提出来 CompatibleInfo.cfg是0kb,用第一种方法 ...

  3. Part 30 AngularJS routeparams example

    Here is what we want to do : When we navigate to /students, the list of student names must be displa ...

  4. vue自定义指令实例使用(实例说明自定义指令的作用)

    在写vue项目的时候,我们经常需要对后台返回的数据进行大量的渲染操作,其中就包含了大量的对特殊数据的进一步处理,比如说时间戳.图片地址.特殊数据显示等等特殊数据处理改进. 其实遇到这种情况,通过Vue ...

  5. 详解电子表格中的json数据:序列化与反序列化

    从XML到JSON 当下应用开发常见的B/S架构之下,我们会遇到很多需要进行前后端数据传输的场景.而在这个传输的过程中,数据通过何种格式传输.方式是否迅速便捷.书写方式是否简单易学,都成为了程序员在开 ...

  6. 体验.NET Core使用IKVM对接Java

    前言 与第三方对接最麻烦的是语言不同,因语言不同内置实现相关标准加密算法还是略微有所差异,对接单点登录场景再寻常不过,由于时间紧迫且对接方使用Java,所以留给我对接开发和联调的时间本就不多,于是乎, ...

  7. 细说ThreadLocal(一)

    前言 java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域.如下图所示: 其中堆是占虚拟机中内存最大的,堆被所有线程所共享,其最主要的便是存放实例对象.也因为堆内存是共 ...

  8. [loj3272]汉堡肉

    当$k\le 3$,这是一个经典的问题 设所有矩形左下角横纵坐标的最大值为$(x_{1},y_{1})$,右上角横纵坐标的最小值为$(x_{2},y_{2})$,那么必然存在一组合法解满足其中一点为$ ...

  9. AotucCrawler 快速爬取图片

    AotucCrawler 快速爬取图片 今天介绍一款自动化爬取图片项目. GitHub: https://github.com/YoongiKim/AutoCrawler Google, Naver ...

  10. 论文翻译:2020_Densely connected neural network with dilated convolutions for real-time speech enhancement in the time domain

    提出了模型和损失函数 论文名称:扩展卷积密集连接神经网络用于时域实时语音增强 论文代码:https://github.com/ashutosh620/DDAEC 引用:Pandey A, Wang D ...