首页 > 数据库技术 > 详细

JDBC(三)----Spring JDBC(JDBCTemplate)

时间:2020-03-18 00:34:50      阅读:76      评论:0      收藏:0      [点我收藏+]

##  Spring  JDBC

  *  Spring框架对JDBC的简单封装。提供了一个JDBCTemplate对象简化JDBC的开发

1、步骤

  1、导入jar包

技术分享图片

 

 

   2、创建JDBCTemplate对象。依赖于数据源DataSource

    *  JDBCTemplate  template  =  new  JdbcTemplate(ds);

  3、调用JDBCTemplate的方法来完成CRUD的操作

    *  update():执行DML(增删改)语句

    *  queryForMap():查询结果将结果集封装为Map集合,将列名作为key,将值作为value,将这条记录封装为一个map集合 

      注意:这个方法查询的结果集长度只能是1

    *  queryForList():查询结果将结果集封装为list集合,

      注意:没讲一条记录封装为一个Map集合,再讲Map集合装载到List集合中 

    *  query():查询结果,将结果封装为JavaBean对象

      注意:query的参数:RowMapper

        *  一般使用BeanPropertyRowMapper实现类。可以完成数据到JavaBean的自动封装

        *  new  BeanPropertyRowMapper<类型>(类型.class)

    *  queryForObject():查询结果,将结果封装为对象

      注意:一般用于聚合函数的查询

2、练习

工具类:Druid

package com.ftj.DS.practice;

import com.alibaba.druid.pool.DruidDataSourceFactory;

import javax.sql.DataSource;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Properties;

/**
 * Druid工具类
 */
public class ComUtils {

    private static DataSource ds;

    //静态代码块加载配置文件
    static {
        try {
            Properties pro = new Properties();
            InputStream is = ComUtils.class.getClassLoader().getResourceAsStream("druid.properties");
            pro.load(is);
            ds = DruidDataSourceFactory.createDataSource(pro);
        } catch (IOException e) {
            e.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    //获取数据库连接
    public static Connection getConn() throws SQLException {
        return ds.getConnection();
    }

    //获取连接
    public static DataSource getDs() {
        return ds;
    }

    //关闭数据库资源
    public static void close(Connection conn, PreparedStatement pstmt, ResultSet rs) {
        if (pstmt != null) {
            try {
                pstmt.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if (conn != null) {
            try {
                //归还连接
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if (rs != null) {
            try {
                rs.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }

    //关闭数据库连接
    public static void close(Connection conn, PreparedStatement pstmt) {
        close(conn, pstmt, null);
    }
}

测试类

package com.ftj.DS.practice;

import com.ftj.DS.entity.User;
import org.junit.Test;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;

import javax.sql.DataSource;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;
import java.util.Map;

/**
 * 练习
 */
public class Work01 {

    //创建DJBCTemplate对象,依赖于数据源DataSource
    private JdbcTemplate template = new JdbcTemplate(ComUtils.getDs());

    //修改user表的密码为 654321
    @Test
    public void test01() {
        //调用创建DJBCTemplate对象下的方法来执行sql
        String sql = "update user set password = ? where id = ?";
        int update = template.update(sql, "abc", 1);
        if (update > 0) {
            System.out.println("密码更新成功!");
        }
    }

    //添加一条记录
    @Test
    public void test02() {
        //调用创建DJBCTemplate对象下的方法来执行sql
        String sql = "insert into user values(null,?,?)";
        int admin = template.update(sql, "admin", "123");
        if (admin > 0){
            System.out.println("success");
        }
    }

    //查询id为1的记录,封装为Map集合  注意:这个方法查询的结果集长度只能是1
    @Test
    public void test03(){
        String sql = "select * from user where id = 1";
        Map<String, Object> map = template.queryForMap(sql);
        System.out.println(map);
    }

    /*
    查询所有记录将其封装为List
     */
    @Test
    public void test04(){
        String sql = "select * from user";
        List<Map<String, Object>> maps = template.queryForList(sql);
        for (Map<String, Object> map : maps) {
            System.out.println(map);
        }
    }


    //查询所有记录,将其封装为User对象的List集合
    @Test
    public void test06(){
        String sql = "select * from user";
        List<User> lsit = template.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 username = rs.getString("username");
                String password = rs.getString("password");
                user.setId(id);
                user.setUsername(username);
                user.setPassword(password);
                return user;
            }
        });
        for (User user : lsit) {
            System.out.println(user);
        }
    }

    //优化
    @Test
    public void test06_2(){
        String sql = "select * from user";
        List<User> list = template.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 total = template.queryForObject(sql, Long.class);
        System.out.println(total);
    }
}

 

JDBC(三)----Spring JDBC(JDBCTemplate)

原文:https://www.cnblogs.com/21seu-ftj/p/12501036.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!