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. Go语言核心36讲(Go语言实战与应用二)--学习笔记

    24 | 测试的基本规则和流程(下) Go 语言是一门很重视程序测试的编程语言,所以在上一篇中,我与你再三强调了程序测试的重要性,同时,也介绍了关于go test命令的基本规则和主要流程的内容.今天我 ...

  2. celery ValueError: invalid literal for int() with base 10: '26379;sentinel'

    celery使用redis sentinel作为broker的时候,因为redis sentinel配置字符串格式解析报错 ValueError: invalid literal for int() ...

  3. JDK的第三个LTS版本JDK17来了

    目录 简介 JDK17中的新特性 语言上的新特性 核心库的优化 支持新的平台 预览特性 其他改动 总结 简介 2021年9月JDK17发布了,JDK17是最新的一个LTS版本.所谓LTS版本就是可以得 ...

  4. More Effective C++笔记(二)

    三.异常 条款9:利用destructor避免泄露资源 把资源封装在对象内,通常可以在exception出现时避免资源泄露 条款10:在构造函数内阻止资源泄露 C++仅仅能删除被完全构造的对象(ful ...

  5. [loj3075]组合数求和

    Subtask1:​​​$m,nd\le 2\times 10^{3}$ 对$M$质因数分解,假设$M=\prod_{i=1}^{k}p_{i}^{\alpha_{i}}$(其中$p_{i}$为素数) ...

  6. [nowcoder5669A]Ancient Distance

    对于一个$k$,可以二分枚举答案并判断,判断过程可以贪心找最深的点(线段树区间max)+倍增+线段树区间覆盖(清0)来实现,时间复杂度$o(klog_{2}n)$ 考虑反过来,暴力枚举答案$x$并求出 ...

  7. ES6学习 第二章 变量的解构赋值

    前言 该篇笔记是第二篇 变量的解构赋值. 这一章原文链接: 变量的解构赋值 解构赋值 ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构(Destructuring). 解构 ...

  8. 详解如何用 CSS3 完成 3D transform变换

    Tips:阅读提示!!! 首先,本文针对的是3D transform变换的学习,所以你需要对 2D transform变换 有一定的了解 其次,需要说明的是,代码是一种需要自己不断实践的学科,建议各位 ...

  9. vue项目中使用 SheetJS / js-xlsx 导出文件

    1.  npm install xlsx 2. 在App.vue 中引入xlsx import * as XLSX from 'xlsx'; // 数据导出导入所需要的依赖  3.  使用xlsx 3 ...

  10. stat命令的实现-mysate(必做)

    学习使用stat(1),并用C语言实现 1. 提交学习stat(1)的截图 使用 man 1 stat 查看帮助手册 从图中可以看到stat的用法是display file or file syste ...