java中如何使用QueryRunner进行增、删、改、查操作呢?

书欣 Java经验 发布时间:2022-10-17 14:16:32 阅读数:5466 1
下文笔者讲述QueryRunner进行CRUD操作的示例分享,如下所示
实现思路:
    1.引入相应的jar包
	2.设置相应的配置文件
	3.编写相应的代码即可
例:
使用C3P0连接池连接MySql

导入相应的JARs

MySQL驱动jar包:
  mysql-connector-Java-5.1.28-bin.jar
C3P0需要的jar包:
  c3p0-0.9.2-pre1.jar和mchange-commons-0.2.jar

在src下添加C3P0配置文件
c3p0-config.xml

<?xml version="1.0" encoding="UTF-8"?>  
<c3p0-config>  
    <default-config>   
        <property name="jdbcUrl">jdbc:mysql://localhost:3306/testdb</property>  
        <property name="driverClass">com.mysql.jdbc.Driver</property>  
        <property name="user">root</property>  
        <property name="password">123456</property>  
          
        <property name="acquireIncrement">3</property>  
        <property name="initialPoolSize">10</property>  
        <property name="minPoolSize">2</property>  
        <property name="maxPoolSize">10</property>  
    </default-config>  
</c3p0-config> 

封装为JdbcUtils
用来获取Connection对象
以及开启和关闭事务
有以下接口

Connection getConnection():
   从c3p0连接池获取Connection对象,所以需要提供c3p0-config.xml配置文件;

beginTransaction():
   为当前线程开启事务;

commitTransaction():
   提交当前线程的事务;

rollbackTransaction():
   回滚当前线程的事务;

releaseConnection(Connection):
  当参数连接对象不是当前事务的连接对象,那么关闭它,否则什么都不做;
例:
测试JdbcUtils
@Test  
    public void testJdbcUtils() throws SQLException {  
        Connection con = JdbcUtils.getConnection();  
        System.out.println(con);  
        JdbcUtils.releaseConnection(con);  
        System.out.println(con.isClosed());  
    }  

封装TxQueryRunner
使用JdbcUtils连接数据库
使用QueryRunner简化数据库操作

引入jar包:
commons-dbutils-1.4.jar
 有以下接口

int[] batch(String sql, Object[][] params)
  执行批处理,参数sql是SQL语句模板,params为参数;

T query(String sql, ResultSetHandler<T> rh)
  执行查询,执行查询
   参数sql为要执行的查询语句模板
   rh是结果集处理
   用来把结果集映射成你想要的结果;

T query(String sql, ResultSetHandler<T> rh, Object… params)
  执行查询,
   参数sql为要执行的查询语句模板
   rh是结果集处理
  用来把结果集映射成你想要的结果
    params是sql语句的参数 

int update(String sql)
   执行增、删、改语句
    参数sql是要执行的SQL语句;

int update(Stringsql, Object param)
   执行增、删、改语句
   参数sql是要执行的SQL语句
   参数param是参数(一个参数)

int update(String sql, Object… params):
   执行增、删、改语句,参数sql是要执行的SQL语句
   参数params是参数(多个参数)
例:
测试TxQueryRunner
@Test  
public void testUpdate() throws SQLException {  
	String sql = "insert into user_info(uid,uname,phonenumber,region,address,postcode) values(?,?,?,?,?,?)";  
	Object[] params = {"0001","xiaoming","12345678912","China","Beijing","123456"};  
	QueryRunner q = new TxQueryRunner();  
	q.update(sql,params);         
}  
@Test  
public void testUpdate2() throws SQLException {  
	try{  
		JdbcUtils.beginTransaction();  
		String sql = "insert into user_info(uid,uname,phonenumber,region,address,postcode) values(?,?,?,?,?,?)";  
		Object[] params1 = {"0002","maomao","13789017890","China","Shenzhen","518001"};  
		Object[] params2 = {"0003","chengcheng","13666910123","China","tianqin","439087"};  
		QueryRunner q = new TxQueryRunner();  
		q.update(sql,params1);  
		q.update(sql,params2);            
		JdbcUtils.commitTransaction();  
	}catch(Exception e){  
		try{  
			JdbcUtils.rollbackTransaction();  
		}catch(SQLException ee){  
		}  
	}  
}  
//单行结果集,BeanHandler  
@Test  
public void testQuery() throws SQLException{  
	String sql = "select * from user_info where uid = ?";  
	QueryRunner q = new TxQueryRunner();  
	User u = q.query(sql, new BeanHandler<User>(User.class),"0001");  
	System.out.println(u);  
}  
//多行结果集,BeanlistHandler  
@Test  
public void testQuery2() throws SQLException{  
	String sql = "select * from user_info";  
	QueryRunner q = new TxQueryRunner();  
	List<User> list_u = q.query(sql, new BeanListHandler<User>(User.class));  
	System.out.println(list_u);  
}  
//单行结果集,map  
@Test  
public void testQuery3() throws SQLException{  
	String sql = "select * from user_info where uid = ?";  
	QueryRunner q = new TxQueryRunner();  
	Map<String,Object> map_u = q.query(sql, new MapHandler(),"0001");  
	System.out.println(map_u);  
}  
//多行结果集,List<map>  
@Test  
public void testQuery4() throws SQLException{  
	String sql = "select * from user_info";  
	QueryRunner q = new TxQueryRunner();  
	List<Map<String,Object>> list_map_u = q.query(sql, new MapListHandler());  
	System.out.println(list_map_u);  
}  
//单行单列,ScalarHandler  
@Test  
public void testQuery5() throws SQLException{  
	String sql = "select count(*) from user_info";  
	QueryRunner q = new TxQueryRunner();  
	Object obj = q.query(sql, new ScalarHandler());  
	//select count(*)的结果强转成Number  
	Number n = (Number)obj;  
	System.out.println(n.longValue());  
}  

版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

本文链接: https://www.Java265.com/JavaJingYan/202210/16659874464652.html

最近发表

热门文章

好文推荐

Java265.com

https://www.java265.com

站长统计|粤ICP备14097017号-3

Powered By Java265.com信息维护小组

使用手机扫描二维码

关注我们看更多资讯

java爱好者