QueryRunner的使用
public class JdbcUtil {
private static ComboPooledDataSource dataSource =new ComboPooledDataSource();
public static ComboPooledDataSource getDataSource()
{
return dataSource;
}
}
src目录下c3p0-config.xml
从数据库中取count(*)数据
1 int topicNum=0; 2 QueryRunner runner= new QueryRunner(JdbcUtil.getDataSource()); 3 String sql ="select count(*) from topic where type_id= ? order by time desc"; 4 Object[] params={typeId}; 5 topicNum=(int)(long) runner.query(sql,new ScalarHandler(),params); 6 return topicNum;
取一条数据 其中表的字段名字和类的名字要对应相同
1 Topic newlyTopic=null; 2 QueryRunner runner= new QueryRunner(JdbcUtil.getDataSource()); 3 String sql ="select * from topic where type_id= ? order by time desc"; 4 Object[] params={typeId}; 5 newlyTopic= runner.query(sql,new BeanHandler<Topic>(Topic.class),params); 6 return newlyTopic;
取集合数据List<>返回 其中表的字段名字和类的名字要对应相同
1 List<Topic> topicList=new ArrayList<Topic>(); 2 QueryRunner runner= new QueryRunner(JdbcUtil.getDataSource()); 3 String sql ="select * from topic where type_id= ? order by time desc"; 4 Object[] params={typeId}; 5 topicList=runner.query(sql, new BeanListHandler<Topic>(Topic.class),params); 6 return topicList;
插入
1 QueryRunner runner= new QueryRunner(JdbcUtil.getDataSource()); 2 String sql ="insert into topic(name,author,content,time,type_id) values(?,?,?,?,?)"; 3 Object[] params={topic.getName(),topic.getAuthor(),topic.getContent(),topic.getTime(),topic.getTypeId()}; 4 try { 5 //事务开始 6 runner.update(sql,params); 7 //事务提交 8 } catch (SQLException e) { 9 e.printStackTrace(); 10 //事务回滚 11 throw e; 12 }
更新
1 QueryRunner runner= new QueryRunner(JdbcUtil.getDataSource()); 2 String sql ="update topic set name=? , content=? , time=? where id= ?"; 3 Object[] params={topic.getName(),topic.getContent(),topic.getTime(),topic.getId()}; 4 try { 5 //事务开始 6 runner.update(sql,params); 7 //事务提交 8 } catch (SQLException e) { 9 e.printStackTrace(); 10 //事务回滚 11 throw e; 12 }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架