druid连接池以及使用druid连接池和QueryRunner实现增删改查

连接池:Connection Pool,将一些JDBC Connection对象,如水池般积蓄起来,在需要时直接在连接池中取出即可,而不需即时创建。数据库连接池的基本原理是在内部对象池中维护一定数量的数据库连接,并对外暴露。
Druid连接池:Druid是阿里巴巴研发的一个开源项目,可以监控数据库访问性能,Druid提供了一个高效、功能强大、可扩展性好的数据库连接池。扩展了JDBC功能。
首先导入jar包
然后:

public class DBSUtl {
    private static DruidDataSource dds;
    //静态代码块
    static{
        dds = new DruidDataSource();
        //获取url
        dds.setUrl("jdbc:mysql://localhost:3306/supermarket_sys?useUnicode=true&characterEncoding=utf-8");
        //获取用户名
        dds.setUsername("root");
        //获取密码
        dds.setPassword("root");
    }
    public static DataSource getDBDS(){
        //返回dds
        return dds;
    }
    public static Connection getConn(){
        try {
            return dds.getConnection();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return null;
    }



}

实现增删改查

public class SysAdmDao {
    QueryRunner qr = new QueryRunner(DBSUtl.getDBDS());

    //QueryRunner的execute方法,查询数据,只需要三个参数:sql语句,ResultSetHandler接口的实现类的实例化对象以及params。
    public List<List<SysAdm>> querySysByQR(String sysAdmId , String sysAdmName) throws SQLException{
        StringBuffer sql = new StringBuffer("select * from sys_adm where 1 = 1");
        if(sysAdmId != null && !sysAdmId.equals("")){
            sql.append(" and sys_adm_id = "+sysAdmId.trim());
        }
        if(sysAdmName != null && !sysAdmName.equals("")){
            sql.append(" and sys_adm_name like '%").append(sysAdmName.trim()).append("%'");
        }
        Object[] params = new Object[]{};
        //Result为ResultSetHandler接口的实现类
        ResultSetHandler<List<SysAdm>> rsh = new Result();
        return qr.execute(sql.toString(), rsh, params);
    }
    //QueryRunner类的update方法,添加数据
    public int addSysAdmByQR(SysAdm sysAdm) throws Exception{

        String sql = "insert into sys_adm (sys_adm_id , sys_adm_name , birthday , passwd) values(?,?,?,?)";

        Object [] params = new Object[]{sysAdm.getSysAdmId(), sysAdm.getSysAdmName(), sysAdm.getBirthday(), sysAdm.getPasswd()};

        return(qr.update(sql, params));
    }
    //QueryRunner类的update方法,删除数据
    public int delSysAdmByQR(String sysAdmId) throws Exception{

        String sql = "delete from sys_adm where sys_adm_id = ?";

        Object[] params = new Object[]{sysAdmId};

        return(qr.update(sql, params));

    }
    //QueryRunner类中的update方法,修改数据
    public int updateSysAdmByQR(SysAdm sysAdm) throws Exception{

        String sql = "update sys_adm set sys_adm_name = ? , birthday = ? , passwd = ? where sys_adm_id = ?";

        System.out.println(sysAdm);

        Object[] params = new Object[]{sysAdm.getSysAdmName() , sysAdm.getBirthday() , sysAdm.getPasswd() , sysAdm.getSysAdmId()};

        return qr.update(sql, params);
    }
}

使用连接池,代码量更少,更简洁。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值