美文网首页
Druid连接池的使用

Druid连接池的使用

作者: 张浩琦 | 来源:发表于2020-07-26 14:00 被阅读0次

    druid

    步骤:

    1.导入jar包druid-1.0.9.jar

    2.定义配置文件:是properties形式的,可以叫任意名称,可以放在任意目录下

    3.获取数据库连接池对象:通过工厂来来获取DruidDataSourceFactory

    4. 获取连接: getConnection

    使用

    public static void main(String[] args) throws Exception {

    //1.导入jar包

    //2.定义配置文件

    //3.加载配置文件

    Properties pro = new Properties();

    InputStream resourceAsStream = DruidDemo1.class.getClassLoader().getResourceAsStream("druid.properties");

    pro.load(resourceAsStream);

    //4.获取链接池对象

    DataSource ds = DruidDataSourceFactory.createDataSource(pro);

    //5.获取链接

    Connection con = ds.getConnection();

    System.out.println(con);

    }

    配置文件

    driverClassName=com.mysql.jdbc.Driver

    url=jdbc:mysql://localhost:3306/footclub?useUnicode=true&characterEncoding=UTF-8&userSSL=false&serverTimezone=GMT%2B8

    username=root

    password=121156

    initialSize=5

    maxActive=10

    maxWait=3000

    相关位置

    [图片上传失败...(image-762f31-1595743740411)]

    定义工具类

    1.定义一个类JDBCUtils

    2.提供静态代码块加载配置文件,初始化连接池对象

    3.提供方法

    1.获取连接方法:通过数据库连接池获取连接

    2.释放资源

    3.获取连接池的方法

    记得写配置文件

    package web.utils;

    import com.alibaba.druid.pool.DruidDataSourceFactory;

    import javax.sql.DataSource;

    import java.sql.Connection;

    import java.util.Properties;

    public class JDBCUtils {

    //1.定义成员变量 DateSource

    private static DataSource ds;

    static {

    try {

    //1.加载配置文件

    Properties pro = new Properties();

    pro.load(JDBCUtils.class.getClassLoader().getResourceAsStream("druid.properties"));

    ds = DruidDataSourceFactory.createDataSource(pro);

    } catch (Exception e) {

    e.printStackTrace();

    }

    }

    public static Connection getConnection() throws Exception{

    return ds.getConnection();

    }

    //获取链接池的方法

    public static DataSource getDataSource(){

    return ds;

    }

    //关闭数据库连接的封装,通过动态传参,将rs,pstmt,con按照顺序传进来

    public static void closeAll(AutoCloseable...closeables) {

    for(AutoCloseable closeable:closeables) {

    if(closeable!=null) {

    try {

    closeable.close();

    } catch (Exception e) {

    // TODO Auto-generated catch block

    e.printStackTrace();

    }

    }

    }

    }

    }

    增加操作

    public static void main(String[] args) {

    Connection con = null;

    PreparedStatement pstmt = null;

    try {

    con=JDBCUtils.getConnection();

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

    pstmt = con.prepareStatement(sql);

    pstmt.setString(1,"123456");

    pstmt.setString(2,"张三");

    pstmt.setInt(3,0);

    pstmt.setString(4,"2012-12-22");

    pstmt.setString(5,"333");

    pstmt.setString(6,"333");

    int i = pstmt.executeUpdate();

    System.out.println(i);

    } catch (Exception e) {

    e.printStackTrace();

    }

    JDBCTemplate

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

    步骤:

    1. 导入jar包

    [图片上传失败...(image-556440-1595743740410)]

    2.创建JdbcTemplate对象。 依赖于数据源DataSource JdbcTemplate template = new JdbcTemplate(ds);

    3.调用JdbcTemplate的方 法来完成CRUD的操作

    l update():执行DML语句。增、删、改语句

    l queryForMap():查询结果将结果集封装为map集合

    ¡ 查询结果集的长度只能为1(一条记录) 列名为key,值为value

    ¡ 查询两条或者两条以上的记录时,使用List集合

    l queryForlist():查询结果将结果集封装为list集合

    l query():查询结果,T导结果封装为JavaBean对象

    ¡ 需要引入接口BeanPropertyRowMapper<类>(类.class)接口

    l queryForobject(sql,返回值结果的类型.class) :查询结果,将结果封装为对象

    ¡ 一半用于执行聚合函数

    简单使用

    public static void main(String[] args) {

    //1.导入jar包

    //2.创建JDBCTemplate对象

    JdbcTemplate template = new JdbcTemplate(JDBCUtils.getDataSource());

    //3.调用方法

    String sql ="update user set gender=? where idcard=?";

    int update = template.update(sql, 1,"123456");

    System.out.println(update);//1

    }

    相关练习

    需求:

    1.修改123456号数据的性别为0()

    2.添加一条记录

    3.删除刚才添加的记录

    4.查询id为145789的记录,将其封装为Map集合

    5.查询所有记录,将其封装为List

    6.查询所有记录,将其封装为Emp对象的List集合

    7.查询总记录数

    public class JdbcTemplateDemo2 {

    /**

    */

    //1.获取对象

    private JdbcTemplate template = new JdbcTemplate(JDBCUtils.getDataSource());

    //修改

    @Test

    public void test1(){

    //2.定义sql

    String sql ="update user set gender=? where idcard=?";

    //3.调用方法

    int update = template.update(sql, 0,"123456");

    System.out.println(update);//1

    }

    //添加

    @Test

    public void test2(){

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

    int update = template.update(sql,"777558","路费",1,"2012-12-22","789","111");

    System.out.println(update);

    }

    //删除

    @Test

    public void test3(){

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

    int update = template.update(sql,"123456");

    System.out.println(update);

    }

    //查询所有对象,并封装成map集合

    //注意:查询结果集的长度只能为1 列名为key,值为value

    //查询两条或者两条以上的记录时,使用List集合

    @Test

    public void test4(){

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

    Map<String, Object> update = template.queryForMap(sql,"145789");

    System.out.println(update);

    }

    //查询所有对象,并封装成List集合

    @Test

    public void test5(){

    String sql ="select*from user";

    List<Map<String, Object>> update = template.queryForList(sql);

    System.out.println(update);

    }

    //获取javabean对象。需要引入BeanPropertyRowMapper<User>(User.class)接口

    @Test

    public void test6(){

    String sql ="select*from user";

    List<User> query = template.query(sql, new BeanPropertyRowMapper<User>(User.class));

    for (User use:query) {

    System.out.println(use);

    }

    }

    //获取值的长度

    @Test

    public void test7(){

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

    Long longs = template.queryForObject(sql,Long.class);

    System.out.println(longs);

    }

    }

    相关文章

      网友评论

          本文标题:Druid连接池的使用

          本文链接:https://www.haomeiwen.com/subject/yjmwlktx.html