新建一个工程,添加对数据库的支持

下载mysql驱动包 mysql-connector-java-5.1.7-bin.jar,快捷键ctrl+alt+shift+s,添加jar包到工程

编写JdbcTemplateDemo.java

 package com.jdbc;

 import org.junit.Test;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.jdbc.datasource.DriverManagerDataSource; import java.sql.*;
import java.util.List; public class JdbcTemplateDemo {
//1 增加操作
@Test
public void add() {
//设置数据库信息
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName("com.mysql.jdbc.Driver"); //添加驱动
dataSource.setUrl("jdbc:mysql:///test"); //添加数据库路径
dataSource.setUsername("root"); //用户名
dataSource.setPassword("xxxxxx"); //密码 //创建jdbcTemplate对象,设置数据库
JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource); //sql语句
String sql = "INSERT INTO User VALUES(?,?)"; //调用jdbcTemplate对象里面的update方法实现插入操作
int rows = jdbcTemplate.update(sql, "Lucy", "250");
System.out.println(rows);
} //2 删除操作
@Test
public void delete() {
//设置数据库信息
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName("com.mysql.jdbc.Driver"); //添加驱动
dataSource.setUrl("jdbc:mysql:///test"); //添加数据库路径
dataSource.setUsername("root"); //用户名
dataSource.setPassword("xxxxxx"); //密码 //创建jdbcTemplate对象,设置数据库
JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource); //sql语句
String sql = "DELETE FROM user WHERE username=?"; //调用jdbcTemplate对象里面的update方法实现删除操作
int rows = jdbcTemplate.update(sql, "Lucy");
System.out.println(rows);
} //3 修改操作
@Test
public void update() {
//设置数据库信息
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName("com.mysql.jdbc.Driver"); //添加驱动
dataSource.setUrl("jdbc:mysql:///test"); //添加数据库路径
dataSource.setUsername("root"); //用户名
dataSource.setPassword("xxxxxx"); //密码 //创建jdbcTemplate对象,设置数据库
JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource); //sql语句
String sql = "UPDATE user SET password=? WHERE username=?";
//调用jdbcTemplate对象里面的update方法实现操作修改方法
int rows = jdbcTemplate.update(sql, "111111", "Lucy");
System.out.println(rows);
} //4 查询操作
//4.1查询有多少记录
@Test
public void findCount() {
//设置数据库信息
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName("com.mysql.jdbc.Driver"); //添加驱动
dataSource.setUrl("jdbc:mysql:///test"); //添加数据库路径
dataSource.setUsername("root"); //用户名
dataSource.setPassword("xxxxxx"); //密码 //创建jdbcTemplate对象,设置数据库
JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource); //sql语句
String sql = "SELECT count(*) FROM user";
//调用jdbcTemplate对象里面的queryForObject 方法得到记录数
//queryForObject 查询返回某一个值,第一个参数,第二个参数返回类型
int count = jdbcTemplate.queryForObject(sql, Integer.class);
System.out.println("一共查询到" + count + "条记录");
} //4.2查询返回对象,jdbc原始操作
@Test
public void findObject() {
//创建连接对象
Connection conn = null;
//创建预编译对象
PreparedStatement psmt = null;
//创建结果集对象
ResultSet rs = null; //加载驱动
try {
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection("jdbc:mysql:///test", "root", "xxxxxx");
//编写sql语句,查询表中所有记录
String sql = "SELECT * FROM user WHERE username=?";
//预编译sql
psmt = conn.prepareStatement(sql);
//设置参数值
psmt.setString(1, "Lucy");
//执行sql
rs = psmt.executeQuery();
//遍历结果集
while (rs.next()) {
//得到返回结果
String username = rs.getString("username");
String password = rs.getString("password");
//放到User对象里面
User user = new User();
user.setUsername(username);
user.setPassword(password);
//输出查询结果
System.out.println(user);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
//关闭数据库
rs.close();
psmt.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
} //4.3查询返回对象
@Test
public void findObject1() {
//设置数据库信息
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName("com.mysql.jdbc.Driver"); //添加驱动
dataSource.setUrl("jdbc:mysql:///test"); //添加数据库路径
dataSource.setUsername("root"); //用户名
dataSource.setPassword("xxxxxx"); //密码 //创建jdbcTemplate对象,设置数据库
JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource); //sql语句 根据username查询
String sql = "SELECT * FROM user WHERE username=?"; //查询返回对象,第一个参数sql语句,第二个参数是RowMapper接口,需要自己写类做数据封装,第三个参数是可变参数
User user = jdbcTemplate.queryForObject(sql, new MyRowMapper(), "Tom");
System.out.println(user);
} //4.4查询返回对象List
@Test
public void findList() {
//设置数据库信息
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName("com.mysql.jdbc.Driver"); //添加驱动
dataSource.setUrl("jdbc:mysql:///test"); //添加数据库路径
dataSource.setUsername("root"); //用户名
dataSource.setPassword("xxxxxx"); //密码 //创建jdbcTemplate对象,设置数据库
JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource); //sql语句 查询所有记录
String sql = "SELECT * FROM user"; //query第一个参数sql语句,第二个参数是RowMapper接口,需要自己写类做数据封装,第三个参数是可变参数可省略
List<User> list = jdbcTemplate.query(sql, new MyRowMapper());
System.out.println(list);
}
}
//自己写数据实现类
class MyRowMapper implements RowMapper<User> {
public User mapRow(ResultSet rs,int num) throws SQLException{
//1 从结果集里得到数据
String username = rs.getString("username");
String password = rs.getString("password");
//2 把得到的数据放到对象里面
User user = new User();
user.setUsername(username);
user.setPassword(password);
return user;
}
}

编写User类User.java

 package com.jdbc;

 public class User {
private String username;
private String password; public void setUsername(String username){ this.username = username; }
public void setPassword(String password){ this.password = password; }
public String getUsername(){ return username; }
public String getPassword(){ return password; } @Override
public String toString(){ return "User [username="+username+",password="+password+"]"; }
}

执行增加数据add(),数据库中添加一个记录。

执行修改数据update(),修改表中的记录。

手动增加几条记录

执行查询有多少记录findCount(),控制台输出

一共查询到4条记录

执行查询返回对象findObject(),输出

User [username=Lucy,password=111111]

执行查询返回对象findObject1(),输出

User [username=Tom,password=aaabbbccc]

执行查询返回对象List findList(),输出

[User [username=Lucy,password=111111], User [username=Tom,password=aaabbbccc], User [username=Jacky,password=123456], User [username=Lily,password=abccba]]

执行删除操作 delete(),username为Lucy的记录删除掉了

Java框架spring 学习笔记(十五):操作MySQL数据库的更多相关文章

  1. Java框架spring 学习笔记(五):Bean定义继承

    子 bean 的定义继承父定义的配置数据.子定义可以根据需要重写一些值,或者添加其他值. 编写HelloWorld.java package com.example.spring; public cl ...

  2. Java框架spring 学习笔记(十八):事务管理(xml配置文件管理)

    在Java框架spring 学习笔记(十八):事务操作中,有一个问题: package cn.service; import cn.dao.OrderDao; public class OrderSe ...

  3. Java框架spring 学习笔记(十四):注解aop操作

    回见Java框架spring Boot学习笔记(十三):aop实例操作,这里介绍注解aop操作 首先编写一个切入点HelloWorld.java package com.example.spring; ...

  4. Java框架spring 学习笔记(十二):aop实例操作

    使用aop需要在网上下载两个jar包: aopalliance.jar aspectjweaver.jar 为idea添加jar包,快捷键ctrl+shift+alt+s,打开添加jar包的对话框,将 ...

  5. MYSQL进阶学习笔记十五:MySQL 的账号权限赋予!(视频序号:进阶_33,34)

    知识点十六:MySQL的账号权限赋予(33) 一.MySQL权限简介 关于mysql的权限简单的理解就是mysql允许你做你全力以内的事情,不可以越界.比如只允许你执行select操作,那么你就不能执 ...

  6. Java框架spring 学习笔记(十):bean管理(注解和配置文件混合使用)

    配置文件和注解混合使用 创建对象操作使用配置文件方式实现 注入属性的操作使用注解方式实现 编写BookDao.java和OrderDao.java文件 BookDao.java package com ...

  7. Java框架spring学习笔记(十七):事务操作

    事务操作创建service和dao类,完成注入关系 service层叫业务逻辑层 dao层单纯对数据库操作层,在dao层不添加业务 假设现在有一个转账的需求,狗蛋有10000元,建国有20000元,狗 ...

  8. Java框架spring 学习笔记(十六):c3p0连接池的配置以及dao使用jdbcTemplate

    连接池可以大大提高数据库的性能和连接速度,将那些已连接的数据库连接存放在一个连接池里,以后别人要连接数据库的时候,将不会重新建立数据库连接,直接从连接池中取出可用的连接,用户使用完毕后,会释放连接重新 ...

  9. Java框架spring 学习笔记(十九):事务管理(注解管理)

    注解管理的方式要比xml配置方式要简单很多 只需在配置文件中添加事务注解 <?xml version="1.0" encoding="UTF-8"?> ...

随机推荐

  1. 梯度消失(vanishing gradient)和梯度爆炸(exploding gradient)

    转自https://blog.csdn.net/guoyunfei20/article/details/78283043 神经网络中梯度不稳定的根本原因:在于前层上的梯度的计算来自于后层上梯度的乘积( ...

  2. MySQL-exists和in的区别

    SQL查询中in和exists的区别分析 对于一些不可不免的查询场景,我们难免要用到子查询 那么in和exists那个的效率更高一点呢 SQL查询中in和exists的区别分析 select * fr ...

  3. [UE4]显示落地箭头

    一.Set Hidden in Game:隐藏对象 Propagate to Children:是否修改容器子对象的可见性. 二.添加2个Static Mesh,分别命名为:StaitcMeshArr ...

  4. 使用iptables基于MAC地址进行访控

    近日完成一台基于CentOS的SVN服务器配置,由于该服务器上的文件非常重要,仅部分用户需要访问,最后决定采用iptables来做访控,并且是根据MAC地址来限制,为了便于后期维护,防火墙的配置是通过 ...

  5. 最长重复字符串题解 golang

    最长重复字符串题解 package main import ( "fmt" "strings" ) type Index map[int]int type Co ...

  6. 通过jedis远程访问redis服务器

    一.jedis简介 类似于mysql数据库,一般开发都需要通过代码去访问redis服务器,对于主流的开发语言,redis提供了访问的客户端接口. https://redis.io/clients 而对 ...

  7. liunx vi 学习

    vi有两种状态:命令态和编辑态 命令态中常用的命令: 上下左右移动的处理4个箭头外还有h(左),j(下),k(上),l(右) 调到屏幕显示的首行H,尾行L,x行:xG 0将光标移动到行首:$到行尾,M ...

  8. vs2017安装和使用教程(详细)

    借鉴:https://blog.csdn.net/qq_36556893/article/details/79430133#一.官网下载

  9. Java 公平锁与非公平锁学习研究

    最近学习研究了一下Java中关于公平锁与非公平锁的底层实现原理,总结了一下. 首先呢,通过其字面意思,公平与非公平的评判标准就是付出与收获成正比(和社会中的含义差不多一个意思).放到程序中,尤其是 在 ...

  10. 解决TensorFlow程序无限制占用GPU

    今天遇到一个奇怪的现象,使用tensorflow-gpu的时候,出现内存超额~~如果我训练什么大型数据也就算了,关键我就写了一个y=W*x.......显示如下图所示: 程序如下: import te ...