zoukankan      html  css  js  c++  java
  • JdbcTemplate实现CRUD操作

    ------------------siwuxie095

       

       

       

       

       

       

       

       

       

    JdbcTemplate 实现 CRUD 操作

       

       

    1JdbcTemplate 是 Spring 的 JDBC 模板,对 JDBC 进行了封装

       

       

       

       

    2、Spring 对不同持久化技术的支持如下:

       

    ORM 持久化技术

    模板类

    JDBC

    JdbcTemplate

    Hibernate

    HibernateTemplate

    iBatis

    SqlMapClientTemplate

    MyBatis

    SqlSessionTemplate

    JPA

    JpaTemplate

       

       

    Spring 为各种持久化技术都提供了模板类,对它们进行封装

    以简化编程

       

    参考链接:

       

    http://blog.csdn.net/u011225629/article/details/47143177

       

       

       

       

    3、导入 jar 包(共 9 个包)

       

    1)导入核心 jar 包和日志相关的 jar 包

       

       

       

    2)导入 JdbcTemplate 的 jar 包

       

       

       

    3)导入 MySQL 的 JDBC 驱动包

       

       

       

    mysql-connector-java 下载链接:

       

    https://dev.mysql.com/downloads/connector/j/

       

       

       

       

    4、具体步骤

       

    1设置数据库连接信息

       

    2)创建 JdbcTemplate 对象,设置数据源

       

    3调用 JdbcTemplate 对象的方法实现 CRUD 操作

       

       

       

       

    5、在 MySQL 中手动创建数据库和表

       

    数据库名:spring_db,表名:user,字段:username、password

       

       

       

       

       

    6、具体实现

       

    1)添加操作

       

    AddDemo.java:

       

    package com.siwuxie095.jdbc;

       

    import org.junit.Test;

    import org.springframework.jdbc.core.JdbcTemplate;

    import org.springframework.jdbc.datasource.DriverManagerDataSource;

       

       

    /**

    * 添加操作

    */

    public class AddDemo {

       

    /**

    * 手动加上 @Test 以进行单元测试(将自动导入 JUnit 4 jar 包)

    *

    * 选中方法名,右键->Run As->JUint Test

    */

    @Test

    public void add() {

     

    // 设置数据库连接信息

    DriverManagerDataSource dataSource=new DriverManagerDataSource();

    dataSource.setDriverClassName("com.mysql.jdbc.Driver");

    // 或使用 jdbc:mysql:///spring_db 代替,省略 localhost:3306

    dataSource.setUrl("jdbc:mysql://localhost:3306/spring_db");

    dataSource.setUsername("root");

    dataSource.setPassword("8888");

     

     

    // 创建 JdbcTemplate 对象,设置数据源

    JdbcTemplate jdbcTemplate=new JdbcTemplate(dataSource);

     

     

    // 使用 jdbcTemplate 的方法实现添加操作

    //

    // 创建 sql 语句

    String sql="insert into user values(?,?)";

     

    // 调用 update() 方法实现添加,返回值是 int 型,

    // 创建以接收,表示在数据库中影响的行数

    int row=jdbcTemplate.update(sql, "小明","1234");

    System.out.println(row);

    }

     

    }

       

       

       

    2)修改操作

       

    UpdateDemo.java:

       

    package com.siwuxie095.jdbc;

       

    import org.junit.Test;

    import org.springframework.jdbc.core.JdbcTemplate;

    import org.springframework.jdbc.datasource.DriverManagerDataSource;

       

       

    /**

    * 修改操作

    */

    public class UpdateDemo {

       

    @Test

    public void update() {

     

    // 设置数据库连接信息

    DriverManagerDataSource dataSource=new DriverManagerDataSource();

    dataSource.setDriverClassName("com.mysql.jdbc.Driver");

    // 或使用 jdbc:mysql:///spring_db 代替,省略 localhost:3306

    dataSource.setUrl("jdbc:mysql://localhost:3306/spring_db");

    dataSource.setUsername("root");

    dataSource.setPassword("8888");

     

     

    // 创建 JdbcTemplate 对象,设置数据源

    JdbcTemplate jdbcTemplate=new JdbcTemplate(dataSource);

     

     

    // 使用 jdbcTemplate 的方法实现修改操作

    //

    // 创建 sql 语句

    String sql="update user set password=? where username=?";

     

    // 调用 update() 方法实现修改,返回值是 int 型,

    // 创建以接收,表示在数据库中影响的行数

    int row=jdbcTemplate.update(sql, "1314","小明");

    System.out.println(row);

    }

     

    }

       

       

       

    3)删除操作

       

    DeleteDemo.java:

       

    package com.siwuxie095.jdbc;

       

    import org.junit.Test;

    import org.springframework.jdbc.core.JdbcTemplate;

    import org.springframework.jdbc.datasource.DriverManagerDataSource;

       

       

    /**

    * 删除操作

    */

    public class DeleteDemo {

       

    @Test

    public void delete() {

     

    // 设置数据库连接信息

    DriverManagerDataSource dataSource=new DriverManagerDataSource();

    dataSource.setDriverClassName("com.mysql.jdbc.Driver");

    // 或使用 jdbc:mysql:///spring_db 代替,省略 localhost:3306

    dataSource.setUrl("jdbc:mysql://localhost:3306/spring_db");

    dataSource.setUsername("root");

    dataSource.setPassword("8888");

     

     

    // 创建 JdbcTemplate 对象,设置数据源

    JdbcTemplate jdbcTemplate=new JdbcTemplate(dataSource);

     

     

    // 使用 jdbcTemplate 的方法实现删除操作

    //

    // 创建 sql 语句

    String sql="delete from user where username=?";

     

    // 调用 update() 方法实现删除,返回值是 int 型,

    // 创建以接收,表示在数据库中影响的行数

    int row=jdbcTemplate.update(sql, "小明");

    System.out.println(row);

    }

     

    }

       

       

       

    4)查询操作

       

    QueryDemo.java:

       

    package com.siwuxie095.jdbc;

       

    import java.sql.ResultSet;

    import java.sql.SQLException;

    import java.util.List;

       

    import org.junit.Test;

    import org.springframework.jdbc.core.JdbcTemplate;

    import org.springframework.jdbc.core.RowMapper;

    import org.springframework.jdbc.datasource.DriverManagerDataSource;

       

       

       

    /**

    * 查询操作

    *

    * JdbcTemplate 通过接口 RowMapper 实现查询,但

    * JdbcTemplate 没有提供该接口的实现类,所以,要

    * 得到不同类型的数据,需要自己进行封装

    *

    * 查询操作分为三类:

    *

    * (1) 查询,返回一个值

    * (2) 查询,返回一个对象

    * (3) 查询,返回一个 List 集合

    *

    */

    public class QueryDemo {

       

    /**

    * (1) 查询,返回一个值

    */

    @Test

    public void queryValue() {

     

    // 设置数据库连接信息

    DriverManagerDataSource dataSource=new DriverManagerDataSource();

    dataSource.setDriverClassName("com.mysql.jdbc.Driver");

    // 或使用 jdbc:mysql:///spring_db 代替,省略 localhost:3306

    dataSource.setUrl("jdbc:mysql://localhost:3306/spring_db");

    dataSource.setUsername("root");

    dataSource.setPassword("8888");

     

     

    // 创建 JdbcTemplate 对象,设置数据源

    JdbcTemplate jdbcTemplate=new JdbcTemplate(dataSource);

     

     

    // 使用 jdbcTemplate 的方法得到记录数

    //

    // 创建 sql 语句

    String sql="select count(*) from user";

     

    // 调用 queryForObject() 方法,传入 sql 语句和返回类型的 class

    int count=jdbcTemplate.queryForObject(sql, Integer.class);

    System.out.println(count);

    }

     

     

    /**

    * (2) 查询,返回一个对象

    */

    @Test

    public void queryObject() {

     

    // 设置数据库连接信息

    DriverManagerDataSource dataSource=new DriverManagerDataSource();

    dataSource.setDriverClassName("com.mysql.jdbc.Driver");

    // 或使用 jdbc:mysql:///spring_db 代替,省略 localhost:3306

    dataSource.setUrl("jdbc:mysql://localhost:3306/spring_db");

    dataSource.setUsername("root");

    dataSource.setPassword("8888");

     

     

    // 创建 JdbcTemplate 对象,设置数据源

    JdbcTemplate jdbcTemplate=new JdbcTemplate(dataSource);

     

     

    // 使用 jdbcTemplate 的方法得到对象

    //

    // 创建 sql 语句

    String sql="select * from user where username=?";

     

    // 调用 queryForObject() 方法,传入 sql 语句、

    // 接口 RowMapper 的实现类的对象、要查询的值

    User user=jdbcTemplate.queryForObject(sql, new MyRowMapper(), "小明");

    System.out.println(user);

    }

     

     

    /**

    * (3) 查询,返回一个 List 集合

    */

    @Test

    public void queryList() {

     

    // 设置数据库连接信息

    DriverManagerDataSource dataSource=new DriverManagerDataSource();

    dataSource.setDriverClassName("com.mysql.jdbc.Driver");

    // 或使用 jdbc:mysql:///spring_db 代替,省略 localhost:3306

    dataSource.setUrl("jdbc:mysql://localhost:3306/spring_db");

    dataSource.setUsername("root");

    dataSource.setPassword("8888");

     

     

    // 创建 JdbcTemplate 对象,设置数据源

    JdbcTemplate jdbcTemplate=new JdbcTemplate(dataSource);

     

     

    // 使用 jdbcTemplate 的方法得到 List 集合

    //

    // 创建 sql 语句

    String sql="select * from user";

     

    // 调用 query() 方法,传入 sql 语句

    // 和接口 RowMapper 的实现类的对象

    List<User> list=jdbcTemplate.query(sql, new MyRowMapper());

    System.out.println(list);

    }

     

    }

       

       

    // 多个类,在同一个文件中,最多有一个是 public 权限的

    class MyRowMapper implements RowMapper<User> {

       

    @Override

    public User mapRow(ResultSet rs, int rowNum) throws SQLException {

     

    // 从结果集中拿数据,并封装到对象中

    String username=rs.getString("username");

    String password=rs.getString("password");

     

    User user=new User();

    user.setUsername(username);

    user.setPassword(password);

     

    return user;

    }

       

    }

       

       

       

    User.java:

       

    package com.siwuxie095.jdbc;

       

    public class User {

       

    private String username;

    private String password;

     

    public String getUsername() {

    return username;

    }

    public void setUsername(String username) {

    this.username = username;

    }

     

    public String getPassword() {

    return password;

    }

    public void setPassword(String password) {

    this.password = password;

    }

     

    @Override

    public String toString() {

    return "User [username=" + username + ", password=" + password + "]";

    }

     

    }

       

       

       

       

       

       

       

       

       

       

    【made by siwuxie095】

  • 相关阅读:
    读后感
    mysql分库分表的基本方法
    pdo接口用法
    视频技术基础
    【原创】shell易错语法汇总
    php底层的运行机制
    mysql统计函数
    etc/shadow 登陆口令破解
    JAVA学习(方法重载)
    JAVA学习(方法的定义及调用)
  • 原文地址:https://www.cnblogs.com/siwuxie095/p/7414202.html
Copyright © 2011-2022 走看看