Java--JavaWeb使用commons-dbutils简化数据库操作
来源:互联网 发布:医疗数据公司 编辑:程序博客网 时间:2024/05/21 16:38
具体实现步骤:
1,使用C3P0连接池--这里使用在src根目录下创建名为c3p0-config.xml的文件。
<?xml version="1.0" encoding="UTF-8"?><c3p0-config><!-- 这是默认配置信息 --><default-config> <!-- 连接四大参数配置 --><property name="jdbcUrl">jdbc:mysql://localhost:3306/mydb1</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/mydb1</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>2.新建一个JDBCUtils类,为其他类提供数据库连接对象或者数据库连接池(在QueryRunner中会用到数据库连接池)
package com.c3p0.jdbc;import java.sql.Connection;import java.sql.SQLException;import javax.sql.DataSource;import com.mchange.v2.c3p0.ComboPooledDataSource;/** * 注意必须使用c3p0-config.xml的配置方式。将c3p0-config.xml文件放在src根目录下。 * 默认配置。 * * */public class JDBCUtils {private static ComboPooledDataSource ds=new ComboPooledDataSource();/** * 使用连接池返回一个连接对象 * */public static Connection getConnection() throws SQLException{return ds.getConnection();}/** * 返回一个连接池对象。 * * */public static DataSource getDataSource(){return ds;}}3.编写操作数据库的类
package com.c3p0.demo1;import java.sql.SQLException;import org.apache.commons.dbutils.QueryRunner;import org.apache.commons.dbutils.handlers.BeanHandler;import org.junit.Test;import com.c3p0.jdbc.JDBCUtils;public class Demo2 {/** * 查询记录 * @throws SQLException * * */@Testpublic void fun1() throws SQLException{//创建QueryRunner,需要提供数据库连接池;QueryRunner qr=new QueryRunner(JDBCUtils.getDataSource());//给出sql模板String sql="select * from tb_stu where number=?";//给出参数Object[] params={"stu_001"};//执行Query,需要给出结果集处理器,即ResultHandler的实现类对象//我们给的是BeanHandler,他实现了ResultSetHandler//它需要一个类型,然后他会把rs中的数据封装到指定类型的javabean对象中,然后返回javabean.Stu stu=qr.query(sql, new BeanHandler<Stu>(Stu.class),params);System.out.println(stu);}/** * 插入新的一条记录 * @throws SQLException * * */@Testpublic void fun2() throws SQLException{QueryRunner qr=new QueryRunner(JDBCUtils.getDataSource());String sql="insert into tb_stu values(?,?,?,?,?)";Object[] params={"stu_003","wangwu",20,"female","dancing"};int count=qr.update(sql, params);System.out.println("count:"+count);}}
另外,还用到了JavaBean对象Stu
package com.c3p0.demo1;public class Stu {private String number;private String name;private int age;private String gender;private String hobby;public String getNumber() {return number;}public void setNumber(String number) {this.number = number;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String getGender() {return gender;}public void setGender(String gender) {this.gender = gender;}public String getHobby() {return hobby;}public void setHobby(String hobby) {this.hobby = hobby;}public Stu(String number, String name, int age, String gender, String hobby) {this.number = number;this.name = name;this.age = age;this.gender = gender;this.hobby = hobby;}public Stu() {super();// TODO Auto-generated constructor stub}@Overridepublic String toString() {return "Stu [number=" + number + ", name=" + name + ", age=" + age+ ", gender=" + gender + ", hobby=" + hobby + "]";}}
使用这种方式:
(1)将增删改操作简化了,即同时使用一个模板即可,只需修改sql语句和参数即可;
(2)查询结果直接可以通过ResultSetHandler的实现类封装成JavaBean对象。
解析common-dbutils.jar:
QueryRunner对象
方法:
update方法:
--》int update(String sql,Object... params):可执行增删改语句
Query方法(泛型):
--》T Query(String sql,ResultSetHandler rsh,Object...params):可执行查询
他会先得到ResultSet,然后调用rsh的handle()把rs转换成需要的类型!
ResultSetHandler接口的实现类:
(1)BeanHandler(单行)--》构造器需要一个Class类型的参数,用来把一行结果转换成指定类型的JavaBean对象;
(2)BeanListHandler(多行)--》构造器也是需要一个Class类型的参数,用来把一行结果集转换成一个javaBean,那么多行就是多个JavaBean对象,组合成一个List对象。
(3)MapHandler(单行)把一行结果及转换成Map对象
例如:一行记录为
sid sname age gender
001 zhangsan 20 male
那么转换成Map就是:
{sid:001,sname:zhangan,age:20,gender:male}
(4)MapListHandler(多行)--》把一行记录用一个Map装起来,那么多航记录就是多个Map,即List<Map>
(5)ScalarHandler(单行单列)--》通常用于select count(*)from tb_stu语句。结果集是单行单列的,返回一个object。
package com.c3p0.demo1;import java.sql.SQLException;import java.util.Iterator;import java.util.List;import java.util.Map;import org.apache.commons.dbutils.QueryRunner;import org.apache.commons.dbutils.handlers.BeanHandler;import org.apache.commons.dbutils.handlers.BeanListHandler;import org.apache.commons.dbutils.handlers.MapHandler;import org.apache.commons.dbutils.handlers.MapListHandler;import org.apache.commons.dbutils.handlers.ScalarHandler;import org.junit.Test;import com.c3p0.jdbc.JDBCUtils;public class Demo2 {/** * 查询记录 * @throws SQLException * 单行结果集处理器: * (1)BeanHandler单行结果集处理器。 * (2)MapHandler单行结果集处理器 * */@Testpublic void fun1() throws SQLException{//创建QueryRunner,需要提供数据库连接池;QueryRunner qr=new QueryRunner(JDBCUtils.getDataSource());//给出sql模板String sql="select * from tb_stu where number=?";//给出参数Object[] params={"stu_001"};//执行Query,需要给出结果集处理器,即ResultHandler的实现类对象//我们给的是BeanHandler,他实现了ResultSetHandler//它需要一个类型,然后他会把rs中的数据封装到指定类型的javabean对象中,然后返回javabean.Stu stu=qr.query(sql, new BeanHandler<Stu>(Stu.class),params);//(1)使用BeanHandler单行结果集处理器。Map map=qr.query(sql, new MapHandler(),params);//(2)使用MapHandler单行结果集处理器System.out.println(map);}/** * 查询记录 * 结果集多行处理器: * BeanListHandler多行结果集处理器 * MapListHandler多行结果集处理器 * 没有参数就不用定义Object[] params={}。 * */@Testpublic void fun1_1() throws SQLException{//创建QueryRunner,需要提供数据库连接池;QueryRunner qr=new QueryRunner(JDBCUtils.getDataSource());//给出sql模板String sql="select * from tb_stu";//给出参数//Object[] params={};/*使用BeanListHandler*/List<Stu> list1=qr.query(sql, new BeanListHandler<Stu>(Stu.class));Iterator<Stu> it=list1.iterator();while(it.hasNext()){Stu s=it.next();System.out.println(s.toString());}System.out.println("-----------------------------------");/*使用MapListHandler*/List<Map<String, Object>> list2=qr.query(sql, new MapListHandler());Iterator<Map<String, Object>> it1=list2.iterator();while(it1.hasNext()){Map<String,Object> map=it1.next();System.out.println(map);}}/** * 查询记录 * 单行单列结果 * ScalarHandle * @throws SQLException * */@Testpublic void fun3() throws SQLException{QueryRunner qr=new QueryRunner(JDBCUtils.getDataSource());String sql="select count(*) from tb_stu";Object obj=qr.query(sql, new ScalarHandler());System.out.println(obj.toString());}/** * 插入新的一条记录 * @throws SQLException * * */@Testpublic void fun2() throws SQLException{QueryRunner qr=new QueryRunner(JDBCUtils.getDataSource());String sql="insert into tb_stu values(?,?,?,?,?)";Object[] params={"stu_003","wangwu",20,"female","dancing"};int count=qr.update(sql, params);System.out.println("count:"+count);}}
- Java--JavaWeb使用commons-dbutils简化数据库操作
- 使用commons-dbutils简化JDBC操作(一)
- 使用commons-dbutils简化JDBC操作(二) dbutils+反射
- 利用Jakarta Commons组件beanutils、dbutils简化JDBC数据库操作
- 利用Jakarta Commons组件beanutils、dbutils简化JDBC数据库操作
- 利用Jakarta Commons组件beanutils、dbutils简化JDBC数据库操作
- Jakarta Commons组件BeanUtils、DbUtils简化JDBC数据库操作
- 利用Jakarta Commons组件beanutils、dbutils简化JDBC数据库操作
- java--javaWeb--终极版JDBCUtils,使用事务、commons-dbutils、c3p0
- 利用dbutils简化数据库操作
- (转)利用Jakarta Commons组件beanutils、dbutils简化JDBC数据库操作
- java使用C3P0,dbutils,BeanUtil操作数据库
- 常用代码备忘录(封装 Apache Commons 的 DbUtils 实现的数据库操作工具类)-DBUtil.java
- 13、使用DBUtils操作数据库
- java--DBUtils数据库操作工具包
- 【Java进阶】内省IntroSpector操作JavaBean和Apache-commons-dbutils对内省的使用
- commons dbutils 使用
- commons-dbutils使用介绍
- 进制转换
- 排序-冒泡排序
- linux gcc常用命令
- 由点云创建深度图
- FragemntTabHost的简单使用
- Java--JavaWeb使用commons-dbutils简化数据库操作
- Leercode 35 Search Insert Position
- 从一个链表channelHead中删除和channelToDeleteHead中相同的元素
- ScrollView判断滑动到底部和顶部
- source insight 中文注释为乱码解决
- .Net下RabbitMQ消息队列 优先级ID设置
- CocoaPods安装和使用教程
- mv删除包含隐藏文件的所有文件
- C++中substr、find、refind函数的用法