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> 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> 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);
    }
}

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

你可能感兴趣的:(java)