Day4-JDBC封装之Spring大法好

本文介绍了如何利用Spring进行JDBC的封装,详细讲述了如何使用Druid连接池工具类,通过JDBCUtils加载配置文件并创建DataSource,以及JDBCTemplate的测试应用。
摘要由CSDN通过智能技术生成

一.完成Druid连接池工具类

  1. 简单来说就是运用
    JDBCUtils.class.getClassLoader().getResourceAsStream(“druid.properties”)加载配置文件。
  2. 之后运用
    ds = DruidDataSourceFactory.createDataSource(pro)获取DataSource
import com.alibaba.druid.pool.DruidDataSourceFactory;

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

public class JDBCUtils {

    private static DataSource ds;

    static {
        try {
            Properties pro =new Properties();
            //1.加载配置文件
            pro.load(JDBCUtils.class.getClassLoader().getResourceAsStream("druid.properties"));
            /**
             * JDBCUtils.class  获取当前对象所处的Class类
             * getClassLoader() 取得该Class对象的类装载器
             * getResourceAsStream() 调用类装载器得方法加载资源
             */
            //2.获取DataSource
             ds = DruidDataSourceFactory.createDataSource(pro);

        } catch (IOException e) {
            e.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    //获取资源
    public static Connection getConnection() throws SQLException {
        return ds.getConnection();
    }
    //释放资源
    public static void close( Statement stat, Connection conn){

//        if (stat!=null){
//            try {
//                stat.close();
//            } catch (SQLException e) {
//                e.printStackTrace();
//            }
//        }
//        if (conn!=null){
//            try {
//                conn.close();
//            } catch (SQLException e) {
//                e.printStackTrace();
//            }
//        }
        close(null,stat,conn);

    }

    public static void close(ResultSet res,Statement stat,Connection conn){
        if (res!=null){
            try {
                res.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if (stat!=null){
            try {
                stat.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if (conn!=null){
            try {
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }

    }

    //获取连接池的方法
    public static DataSource getDataSource(){
        return ds;
    }
}

二:JDBCTemplate测试

import cn.itcast.datasource.uilts.JDBCUtils;
import cn.itcast.domain.Emp;
import com.sun.org.apache.xalan.internal.xsltc.compiler.Template;
import org.junit.Test;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;

import java.sql.JDBCType;
import java.util.List;
import java.util.Map;

public class JdbcTemplateDemo1 {

    /**
     *      调用JdbcTemplate
     *      1.update():执行DML语句。增删改语句
     *      2.queryForMap():查询结果将结果集封装为map集合
     *      3.queryForList():查询结果将结果集封装为list集合
     *      4.query()查询结果,将结果封装为JavaBen对象
     *          →new BeanPropertyRowMapper<Emp>(Emp.class)
     *      5,queryForObject:查询结果,将结果封装为对象
     */
    //改
    @Test
    public void test1(){

        //1.获取JDBCTemplate对象
        JdbcTemplate template =new JdbcTemplate(JDBCUtils.getDataSource());
        //2.定义sql
        String sql = "Update test0 set many = 5000 where id =1";
        //3.执行SQL语句
        int update = template.update(sql);
        System.out.println(update);
    }

    //增
    @Test
    public void test2(){

        //1.获取JDBCTemplate得对象
        JdbcTemplate template =new JdbcTemplate(JDBCUtils.getDataSource());
        //2.定义sql语句
        String sql = "insert into test0 values(null,?,?)";
        //3.执行sql语句
        /**
         * pstat = conn.prepareStatement(sql);
         * stat.setString(1,"赵六");
         * pstat.setInt(2,300);
         */
        int update = template.update(sql, "赵四", 1000);
        System.out.println(update);

    }

    //删
    @Test
    public void test3(){

        //1.创建JDBCTemplate对象
        JdbcTemplate template=new JdbcTemplate(JDBCUtils.getDataSource());
        //2.定义sql语句
        String sql ="delete from test0 where id=?";
        int update = template.update(sql,5);
        System.out.println(update);
    }

    //查询id=1得数据,将其封装为Map集合
    @Test
    public void test4(){
        JdbcTemplate template =new JdbcTemplate(JDBCUtils.getDataSource());
        String sql ="select *from test0 where id=?";
        Map<String, Object> map = template.queryForMap(sql, 1);
        System.out.println(map);
        //{id=1, name=李帅, many=5000}
    }

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

    //查询所有记录,将其封装为Emp对象得List集合
    @Test
    public void test6(){
        JdbcTemplate template =new JdbcTemplate(JDBCUtils.getDataSource());
        String sql = "select *from test0";
        List<Emp> query = template.query(sql, new BeanPropertyRowMapper<Emp>(Emp.class));
        for (Emp emp : query) {
            System.out.println(emp);
        }


    }

    //查询总记录数
    @Test
    public void tset7(){
        JdbcTemplate template = new JdbcTemplate(JDBCUtils.getDataSource());
        String sql="select count(id) from test0";
        Integer integer = template.queryForObject(sql, Integer.class);
        System.out.println(integer);
    }

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
项目:使用AngularJs编写的简单 益智游戏(附源代码)  这是一个简单的 javascript 项目。这是一个拼图游戏,也包含一个填字游戏。这个游戏玩起来很棒。有两个不同的版本可以玩这个游戏。你也可以玩填字游戏。 关于游戏 这款游戏的玩法很简单。如上所述,它包含拼图和填字游戏。您可以通过移动图像来玩滑动拼图。您还可以选择要在滑动面板中拥有的列数和网格数。 另一个是填字游戏。在这里你只需要找到浏览器左侧提到的那些单词。 要运行此游戏,您需要在系统上安装浏览器。下载并在代码编辑器中打开此项目。然后有一个 index.html 文件可供您修改。在命令提示符中运行该文件,或者您可以直接运行索引文件。使用 Google Chrome 或 FireFox 可获得更好的用户体验。此外,这是一款多人游戏,双方玩家都是人类。 这个游戏包含很多 JavaScript 验证。这个游戏很有趣,如果你能用一点 CSS 修改它,那就更好了。 总的来说,这个项目使用了很多 javascript 和 javascript 库。如果你可以添加一些具有不同颜色选项的级别,那么你一定可以利用其库来提高你的 javascript 技能。 演示: 该项目为国外大神项目,可以作为毕业设计的项目,也可以作为大作业项目,不用担心代码重复,设计重复等,如果需要对项目进行修改,需要具备一定基础知识。 注意:如果装有360等杀毒软件,可能会出现误报的情况,源码本身并无病毒,使用源码时可以关闭360,或者添加信任。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值