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. storm启动报错: InvalidTopologyException(msg:Component: [mybolt] subscribes from non-existent stream: [default] of component [es-bolt])

    storm每一个bolt在emit之后需要把数据传递到下一个bolt,所以declareOUtputFields 一定要写 默认的情况下不用加streamId,如果加了streamId,后面的bolt ...

  2. Java 代码执行流程

    Java 代码执行流程 类加载过程 加载 -> 验证 -> 准备 -> 解析 -> 初始化 -> 使用 -> 卸载 类加载时机:代码使用到这个类时 验证阶段 &qu ...

  3. More Effective C++笔记(一)(精心整理)

    一.基础议题 条款1:仔细区别pointers和references 指针使用*和->,引用使用"." 引用必须指向一个已初始化的对象,不能为null,而指针可以指向某个对象 ...

  4. sql常见题目

    1 --student学生表(sno,sname,sex,birthday,tel) 2 --Course课程表(cno,cname) 3 --Sc 学生成绩表(sno,cno,score) 4 1. ...

  5. [atAGC029F]Construction of a tree

    构造一张二分图,左边是$n$个点,右边是$n-1$个集合,按照点属于集合连边 定义一组匹配的意义,即说明该点的父亲在该集合中选择 利用dinic求出二分图的最大匹配,若不为$n-1$则无解,否则考虑如 ...

  6. 【IDEA】IntelliJ IDEA 2020.1破解版

    IntelliJ IDEA 2020.1破解版 2020-09-09  14:58:56  by冲冲 安装链接: 1. 百度网盘下载地址链接:https://pan.baidu.com/s/1cxjz ...

  7. 【JavaSE】Java基础·疑难点汇集

    Java基础·疑难点 2019-08-03  19:51:39  by冲冲 1. 部分Java关键字 instanceof:用来测试一个对象是否是指定类型的实例. native:用来声明一个方法是由与 ...

  8. gantt甘特图可拖拽、编辑(vue、react都可用 highcharts)

    前言   Excel功能强大,应用广泛.随着web应用的兴起和完善,用户的要求也越来越高.很多Excel的功能都搬到了sass里面.恨不得给他们做个Excel出来...程序员太难了... 去年我遇到了 ...

  9. 【POJ3349 Snowflake Snow Snowflakes】【Hash表】

    最近在对照省选知识点自己的技能树 今天是Hash 题面 大概是给定有n个6元序列 定义两个序列相等 当两个序列各自从某一个元素开始顺时针或者逆时针旋转排列能得到两个相同的序列 求这n个6元序列中是否有 ...

  10. IDEA 配置背景颜色(豆沙绿)

    1. 定义方案名字(my color) Ctrl + Shift + a --> Color Scheme // 快捷定位配置 // 路径:File --> Settings --> ...