Spring中jdbcTemplate实现增删改查操作

avatar 2017年08月07日12:07:04 1 15029 views
博主分享免费Java教学视频,B站账号:Java刘哥 ,长期提供技术问题解决、项目定制:本站商品点此
1、 spring 框架一站式框架

(1)针对 javaee 三层,每一层都有解决技术

(2)在 dao 层,使用 jdbcTemplate



2、 spring 对不同的持久化层技术都进行封装



(1)jdbcTemplate对jdbc进行封装



3 、jdbcTemplate 使用和 dbutils 使用很相似,都数据库进行 crud 操作


实现准备


1、导入 jar 包

(1)Spirng 基础包(不一定都需要)



(2)jdbcTemplate 包



(3)jdbc-mysql 驱动包



2、新建数据库

(1)本地服务器 localhost,用户名 root,密码为空

(2)新建数据库 spring

(3)新建数据表 user,三个字段,分别是 id,username,password




增加,删除,修改


JdbcTemplateDemo1
  1. package com.liuyanzhao.jdbc;
  2. import org.junit.Test;
  3. import org.springframework.jdbc.core.JdbcTemplate;
  4. import org.springframework.jdbc.core.RowMapper;
  5. import org.springframework.jdbc.datasource.DriverManagerDataSource;
  6. import java.sql.*;
  7. import java.util.List;
  8. public class JdbcTemplateDemo1 {
  9.     //1 添加操作
  10.     @Test
  11.     public void saveUser() {
  12.         //1、创建对象,设置数据库信息
  13.         DriverManagerDataSource dataSource = new DriverManagerDataSource();
  14.         dataSource.setDriverClassName("com.mysql.jdbc.Driver");
  15.         dataSource.setUrl("jdbc:mysql://127.0.0.1:3306/spring");
  16.         dataSource.setUsername("root");
  17.         dataSource.setPassword("");
  18.         //2、创建jdbcTemplate对象,设置数据源
  19.         JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
  20.         //3、调用jdbcTemplate对象里的方法实现操作
  21.         String sql = "insert into user values(?,?,?)";
  22.         int rows = jdbcTemplate.update(sql,1,"刘曌","123456");
  23.         System.out.println(rows);
  24.     }
  25.     //2 更新操作
  26.     @Test
  27.     public void updateUser() {
  28.         //1、创建对象,设置数据库信息
  29.         DriverManagerDataSource dataSource = new DriverManagerDataSource();
  30.         dataSource.setDriverClassName("com.mysql.jdbc.Driver");
  31.         dataSource.setUrl("jdbc:mysql://127.0.0.1:3306/spring" +
  32.             "?useUnicode=true&characterEncoding=utf8");
  33.         dataSource.setUsername("root");
  34.         dataSource.setPassword("");
  35.         //2、创建jdbcTemplate对象,设置数据源
  36.         JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
  37.         //3、调用jdbcTemplate对象里的方法实现操作
  38.         String sql = "update user set username=?,password=? where id=?";
  39.         int rows = jdbcTemplate.update(sql,"刘言曌","666666",1);
  40.         System.out.println(rows);
  41.     }
  42.     //3 删除操作
  43.     @Test
  44.     public void removeUser() {
  45.         //1、创建对象,设置数据库信息
  46.         DriverManagerDataSource dataSource = new DriverManagerDataSource();
  47.         dataSource.setDriverClassName("com.mysql.jdbc.Driver");
  48.         dataSource.setUrl("jdbc:mysql://127.0.0.1:3306/spring" +
  49.             "?useUnicode=true&characterEncoding=utf8");
  50.         dataSource.setUsername("root");
  51.         dataSource.setPassword("");
  52.         //2、创建jdbcTemplate对象,设置数据源
  53.         JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
  54.         //3、调用jdbcTemplate对象里的方法实现操作
  55.         String sql = "delete from user where id=?";
  56.         int rows = jdbcTemplate.update(sql,1);
  57.         System.out.println(rows);
  58.     }
  59. }

查询


查询分为 “查询记录总数”,“查询单个记录”,“查询多个记录”

1、查询记录总数,返回一个整数
  1. // 4 查询表中有多少数据
  2. @Test
  3. public void countUser() {
  4.     //1、创建对象,设置数据库信息
  5.     DriverManagerDataSource dataSource = new DriverManagerDataSource();
  6.     dataSource.setDriverClassName("com.mysql.jdbc.Driver");
  7.     dataSource.setUrl("jdbc:mysql://127.0.0.1:3306/spring" +
  8.         "?useUnicode=true&characterEncoding=utf8");
  9.     dataSource.setUsername("root");
  10.     dataSource.setPassword("");
  11.     //2、创建jdbcTemplate对象,设置数据源
  12.     JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
  13.     //3、调用方法得到记录数
  14.     String sql = "select count(*) from user";
  15.     int count = jdbcTemplate.queryForObject(sql,Integer.class);
  16.     System.out.println(count);
  17. }

2、查询单个对象,返回一个对象

(1)新建 user 实体类
  1. package com.liuyanzhao.jdbc;
  2. public class User {
  3.     private int id;
  4.     private String username;
  5.     private String password;
  6.     public int getId() {
  7.         return id;
  8.     }
  9.     public String getUsername() {
  10.         return username;
  11.     }
  12.     public String getPassword() {
  13.         return password;
  14.     }
  15.     public void setId(int id) {
  16.         this.id = id;
  17.     }
  18.     public void setUsername(String username) {
  19.         this.username = username;
  20.     }
  21.     public void setPassword(String password) {
  22.         this.password = password;
  23.     }
  24.     @Override
  25.     public String toString() {
  26.         return "User{" +
  27.             "id=" + id +
  28.             ", username='" + username + '\'' +
  29.             ", password='" + password + '\'' +
  30.             '}';
  31.     }
  32. }

(2)新建 MyRowMapper 类,我们可以把它放到 JdbcTemplateDemo1 类中
  1. class MyRowMapper implements RowMapper<User> {
  2.     @Override
  3.     public User mapRow(ResultSet rs, int num) throws SQLException {
  4.         //从结果集中得到数据
  5.         int id = rs.getInt("id");
  6.         String username = rs.getString("username");
  7.         String password = rs.getString("password");
  8.         //把得到的数据封装到对象里面
  9.         User user = new User();
  10.         user.setId(id);
  11.         user.setUsername(username);
  12.         user.setPassword(password);
  13.         return user;
  14.     }
  15. }

(3)查询单条记录信息
  1. //5、查询返回对象
  2.     @Test
  3.     public void getUser() {
  4.         //1、创建对象,设置数据库信息
  5.         DriverManagerDataSource dataSource = new DriverManagerDataSource();
  6.         dataSource.setDriverClassName("com.mysql.jdbc.Driver");
  7.         dataSource.setUrl("jdbc:mysql://127.0.0.1:3306/spring" +
  8.             "?useUnicode=true&characterEncoding=utf8");
  9.         dataSource.setUsername("root");
  10.         dataSource.setPassword("");
  11.         //2、创建jdbcTemplate对象,设置数据源
  12.         JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
  13.         //调用方法得到对象
  14.         String sql = "select * from user where username=?";
  15.         User user = jdbcTemplate.queryForObject(sql,new MyRowMapper(),"刘言曌");
  16.         System.out.println(user);
  17.     }

3、查询多条记录,返回一个 list 集合

(1)同上

(2)同上

(3)查询多条记录信息
  1. //7、查询返回集合
  2.     @Test
  3.     public void listUser() {
  4.         //1、创建对象,设置数据库信息
  5.         DriverManagerDataSource dataSource = new DriverManagerDataSource();
  6.         dataSource.setDriverClassName("com.mysql.jdbc.Driver");
  7.         dataSource.setUrl("jdbc:mysql://127.0.0.1:3306/spring" +
  8.             "?useUnicode=true&characterEncoding=utf8");
  9.         dataSource.setUsername("root");
  10.         dataSource.setPassword("");
  11.         //2、创建jdbcTemplate对象,设置数据源
  12.         JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
  13.         //3、调用方法得到集合
  14.         String sql = "select * from user";
  15.         List<User> list = jdbcTemplate.query(sql,new MyRowMapper());
  16.         System.out.println(list);
  17.     }


补充


我们这里补充一下 原生的 JDBC 查询单条记录的代码,复习一下 JDBC,同时比较一下 Spring 的 jdbcTemplate 和 原生 JDBC 代码的区别
  1. //5、查询返回对象,原生JDBC代码
  2.     @Test
  3.     public void getUserByJDBC() throws SQLException {
  4.         final String URL = "jdbc:mysql://127.0.0.1:3306/spring?useUnicode=true&characterEncoding=utf8";
  5.         final String USERNAME = "root";
  6.         final String PASSWORD = "";
  7.         Connection conn = null;
  8.         PreparedStatement ptmt = null;
  9.         ResultSet rs = null;
  10.         //加载驱动
  11.         try {
  12.             Class.forName("com.mysql.jdbc.Driver");
  13.             conn = DriverManager.getConnection(URL,USERNAME,PASSWORD);
  14.             String sql = "select * from user where username=?";
  15.             //预编译sql
  16.             ptmt = conn.prepareStatement(sql);
  17.             //设置参数值
  18.             ptmt.setString(1,"刘言曌");
  19.             //执行sql
  20.             rs = ptmt.executeQuery();
  21.             //遍历结果集
  22.             while (rs.next()) {
  23.                 //得到返回值
  24.                 int id = rs.getInt("id");
  25.                 String username = rs.getString("username");
  26.                 String password = rs.getString("password");
  27.                 //放到user对象中
  28.                 User user = new User();
  29.                 user.setId(id);
  30.                 user.setUsername(username);
  31.                 user.setPassword(password);
  32.                 System.out.println(user);
  33.             }
  34.         } catch (ClassNotFoundException e) {
  35.             e.printStackTrace();
  36.         } finally {
  37.             //关闭连接
  38.             rs.close();
  39.             ptmt.close();
  40.             conn.close();
  41.         }
  42.     }



参考:传智播客视频

本文链接:https://liuyanzhao.com/5689.html
  • 微信
  • 交流学习,资料分享
  • weinxin
  • 个人淘宝
  • 店铺名:言曌博客咨询部

  • (部分商品未及时上架淘宝)
avatar

发表评论

avatar 登录者:匿名
匿名评论,评论回复后会有邮件通知

  

已通过评论:0   待审核评论数:0