(连接数据库之前首先要导入这个数据库的驱动jar包 例如mysql 为mysql-connector-java-5.1.46.jar)
关于连接数据库的数据库连接池c3p0 jar包:
c3p0-0.9.5-pre1.jar相关依赖有mchange-commons-java-0.2.4.jar itcast-tools-1.4.jar(这个里面有一个JdbcUtils工具类用来得到连接)
配置文件:c3p0-config.xml(名字必须固定为这个放在src路径下)
<?xml version="1.0" encoding="UTF-8"?> <c3p0-config> <!-- 这是默认配置信息 --> <default-config> <!-- 连接四大参数配置 --> <property name="jdbcUrl">jdbc:mysql://localhost:3306/customers</property> <property name="driverClass">com.mysql.jdbc.Driver</property> <property name="user">root</property> <property name="password">123</property> <!-- 池参数配置 --> <property name="acquireIncrement">3</property> <property name="initialPoolSize">10</property> <property name="minPoolSize">2</property> <property name="maxPoolSize">10</property> </default-config> <!-- 专门为oracle提供的配置信息 --> <named-config name="oracle-config"> <property name="jdbcUrl">jdbc:mysql://localhost:3306/lisi</property> <property name="driverClass">com.mysql.jdbc.Driver</property> <property name="user">root</property> <property name="password">123</property> <property name="acquireIncrement">3</property> <property name="initialPoolSize">10</property> <property name="minPoolSize">2</property> <property name="maxPoolSize">10</property> </named-config> </c3p0-config>
用来连接数据库;
连接数据库后就要操作数据库1:
操作数据库在javaweb阶段用的最简单的jar包是 :commons-dbutils-1.4.jar
主要使用的是QuerRunner类里面有查询的方法query与更新的方法update这是常用的
连接数据库后就要操作数据库2:commons-dbutils-1.4.jar依赖itcast-tools-1.4.jar,
根据扩展以后升级为TxQueryRunner(在itcast-tools-1.4.jar)
注意这个TxQueryRunner是扩展的一个类需要的jar包是commons-dbutils-1.4.jar,在itcast-tools-1.4.jar缺一不可
这个里面的方法都已经帮你传入了连接是所以不需要手动去获取连接了,而且不需要关闭连接这样保证连接可以归还给连接池,而且里面处理了事务连接和事务连接的关闭,详细代码可以看TxQueryRunner源码
所以只需要传入sql模板和参数即可 展示一段代码:

//注册用户(添加用户) public void add(User user){ try{ //sql模板 String sql ="insert into tb_user values(?,?,?,?,?,?)"; Object[] params ={user.getUid(),user.getUsername(),user.getPassword(),user.getEmail(),user.getCode(),user.isState()}; qr.update(sql, params); }catch(SQLException e){ throw new RuntimeException(e); } } //用激活码查找用户 public User findByCode(String code){ try{ //sql模板 String sql ="SELECT*FROM tb_user where code=?"; return qr.query(sql, new BeanHandler<User>(User.class),code); }catch(SQLException e){ throw new RuntimeException(e); } }
在query方法里面有许多结果集处理器:例如BeanListHandler BeanHandler (这两个可以将查询到的数据映射成为一个对象集合和对象返回)MapListHandler ScalarHandler等
首先先介绍这些以后再加
介绍一个类两个方法:
CommonUtils是根据beanutils扩展的一个工具类属于itcast-tools-1.4.jar的里面
所以这个类依赖的jar包有:commons-beanutils-1.8.3.jar,commons-logging-1.2.jar,itcast-tools-1.4.jar
CommonUtils.uuid()这个方法可以随机生成32为字符
CommonUtils.toBean(map,clazz) 这个传入一个map集合和javabean 的Class对象然后来做一次性赋值注意map集合的键要与javabean里面的属性名对应做到一次性赋值
关于一次赋值QueryRunner的query(sql,rsh,Object...param)相似这个里面的rsh就是结果集处理器用来装载数据库的值BeanListHandler BeanHandler (这两个可以将查询到的数据映射成为一个对象集合和对象返回这个也是要注意数据库里面的字段名和JavaBean属性名要相同这样才能映射上去!!!
代码展示:

//按用户名查找用户 public User findByUsername(String username){ try{ //sql模板 String sql ="SELECT*FROM tb_user where username=?"; return qr.query(sql, new BeanHandler<User>(User.class),username); }catch(SQLException e){ throw new RuntimeException(e); } } //按email查询用户 public User findByEmail(String email){ try{ //sql模板 String sql ="SELECT*FROM tb_user where email=?"; return qr.query(sql, new BeanHandler<User>(User.class),email); }catch(SQLException e){ throw new RuntimeException(e); } }