JavaWeb 使用DBUtils实现增删改查方式
作者:「已注销」 发布时间:2023-01-31 04:31:48
标签:JavaWeb,DBUtils,增删改查
JavaWeb 使用DBUtils实现增删改查
1、创建C3p0Utils类
创建cn.itcast.jdbc.utils包
代码如下:
package cn.itcast.jdbc.utils;
import javax.sql.DataSource;
import com.mchange.v2.c3p0.ComboPooledDataSource;
public class C3p0Utils {
private static DataSource ds;
static {
ds = new ComboPooledDataSource();
}
public static DataSource getDataSource() {
return ds;
}
}
2、创建DBUtilsDao类
在src目录下,创建一个cn.itcast.jdbc.demo的包,在该包下创建一个DBUtilsDao类
代码如下:
package cn.itcast.jdbc.demo;
import java.sql.SQLException;
import java.util.List;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import cn.itcast.chapter10.example.User;
import cn.itcast.jdbc.utils.C3p0Utils;
public class DBUtilsDao {
// 查询所有,返回List集合
public List findAll() throws SQLException {
// 创建QueryRunner对象
QueryRunner runner = new QueryRunner(C3p0Utils.getDataSource());
// 写SQL语句
String sql = "select * from user";
// 调用方法
List list = (List) runner.query(sql,
new BeanListHandler(User.class));
return list;
}
// 查询单个,返回对象
public User find(int id) throws SQLException {
// 创建QueryRunner对象
QueryRunner runner = new QueryRunner(C3p0Utils.getDataSource());
// 写SQL语句
String sql = "select * from user where id=?";
// 调用方法
User user = (User) runner.query(sql,
new BeanHandler(User.class), new Object[] { id });
return user;
}
// 添加用户的操作
public Boolean insert(User user) throws SQLException {
// 创建QueryRunner对象
QueryRunner runner = new QueryRunner(C3p0Utils.getDataSource());
// 写SQL语句
String sql = "insert into user (name,password) values (?,?)";
// 调用方法
int num = runner.update(sql,
new Object[] { user.getName(), user.getPassword() });
if (num > 0)
return true;
return false;
}
// 修改用户的操作
public Boolean update(User user) throws SQLException {
// 创建QueryRunner对象
QueryRunner runner = new QueryRunner(C3p0Utils.getDataSource());
// 写SQL语句
String sql = "update user set name=?,password=? where id=?";
// 调用方法
int num = runner.update(sql, new Object[] { user.getName(),
user.getPassword(),user.getId() });
if (num > 0)
return true;
return false;
}
// 删除用户的操作
public Boolean delete(int id) throws SQLException {
// 创建QueryRunner对象
QueryRunner runner = new QueryRunner(C3p0Utils.getDataSource());
// 写SQL语句
String sql = "delete from user where id=?";
// 调用方法
int num = runner.update(sql, id);
if (num > 0)
return true;
return false;
}
}
3、创建测试类
在cn.itcast.jdbc.demo包中创建测试类DBUtilsDaoTest类
代码如下:
package cn.itcast.jdbc.demo;
import java.sql.SQLException;
import java.util.List;
import cn.itcast.chapter10.example.User;
public class DBUtilsDaoTest1 {
private static DBUtilsDao dao = new DBUtilsDao();
public static void testInsert() throws SQLException {
User user = new User();
user.setName("zhaoliu");
user.setPassword("666666");
boolean b = dao.insert(user);
System.out.println("testInsert:"+b);
}
public static void testupdate() throws SQLException {
User user = new User();
user.setName("zhaoqi");
user.setPassword("666777");
user.setId(1);
boolean b = dao.update(user);
System.out.println("testupdate:"+b);
}
public static void testdelete() throws SQLException {
boolean b = dao.delete(4);
System.out.println("testdelete:"+b);
}
public static void testfindById() throws SQLException {
User user = dao.find(2);
System.out.println(user.getId() + "," + user.getName() + ","
+ user.getPassword());
}
public static void testfindAll() throws SQLException {
List<User> list = dao.findAll();
for(User user : list) {
System.out.println(user.getId() + "," + user.getName() + ","
+ user.getPassword());
}
}
public static void main(String[] args) throws SQLException {
testInsert();
testupdate();
testdelete();
testfindById();
testfindAll();
}
}
以上代码由多个测试函数组成,依次为:插入、修改、删除、根据id查询、查询所有
4、执行测试类
1.数据表user原始数据如下:
执行后结果如下:
之中插入和删除都是针对第四个数据进行的操作,所以没有显现
Java DBUtils技术访问数据库
DBUtils
Dbutils是操作数据库的组件,对传统操作数据库的类进行二次封装,可以把结果集转化成List。
介绍
DBUtils相对以往的连接数据库得到结果集的模式,代码更加简洁,访问更加迅速,这里我对一个我自级设计的Cuisine表做一个简单的例子。
对数据库的查询语句的代码
对已有的菜系表Cuisine查找对应菜系编号cuid的全部数据.
1、菜系表的实体类
// 菜系表的实体类
public class Cuisine {
private static final long serialVersionUID = 1L;
private int cuid;
private String cuname;
public Cuisine() {
super();
// TODO Auto-generated constructor stub
this.cuid = 0;
this.cuname = "";
}
public Cuisine(int cuid, String cuname) {
super();
this.cuid = cuid;
this.cuname = cuname;
}
public int getCuid() {
return cuid;
}
public void setCuid(int cuid) {
this.cuid = cuid;
}
public String getCuname() {
return cuname;
}
public void setCuname(String cuname) {
this.cuname = cuname;
}
@Override
public String toString() {
return "Cuisine [cuid=" + cuid + ", cuname=" + cuname + "]";
}
}
2、实现数据查询的方法
// 实现数据查询
public Cuisine getCuisine(Cuisine cu) {//得到对应菜系的信息
// TODO Auto-generated method stub
QueryRunner queryRunner = new QueryRunner();
if(cu.getCuid() != 0){
String sql = "select * from cuisine where cuid = ?";
try {
return queryRunner.query(DBUtilsPro.getConnection(),sql,cu.getCuid(),new BeanHandler(Cuisine.class));
} catch (SQLException e) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
return null;
}
来源:https://blog.csdn.net/qq_40788630/article/details/84723637


猜你喜欢
- 需求:request的content-type为applciation/json,进入controller之前需要把body中的参数取出来做
- 本文实例为大家分享了C语言实现稀疏矩阵的具体代码,供大家参考,具体内容如下#include "stdio.h"#defi
- 在使用springMVC框架构建web应用,客户端常会请求字符串、整型、json等格式的数据,通常使用@ResponseBody注解使 co
- 当游戏在手机/模拟器上卡死,logcat没有日志输出,也没有卡死堆栈信息或者bugly也没有捕获到异常,你是否很焦急?本文介绍一下我们项目中
- 什么是apllo开源分布式配置中心?apllo开源分布式配置中心是携程框架部门研发的一个能够集中化管理应用的不同环境、不同集群的配置,并且具
- 本文实例讲述了Android编程实现图片平铺的方法。分享给大家供大家参考,具体如下:1)第一种利用系统提供的api实现Bitmap bitm
- Result可以设定全局结果集,如:<struts> <constant name="struts
- 前言提前说明下:(该方法只适用于监控自己拥有的微信或者QQ ,无法监控或者盗取其他人的聊天记录。本文只写了如何获取聊天记录,服务器落地程序并
- 因为某个项目需要,为团队其他兄弟姐妹开发了一个 XML 分析处理器,并将其设计为一个类库,提供相应的 API 接口。为了方便大家的使用,需要
- 这篇文章主要介绍了如何使用java修改文件所有者及其权限,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的
- 单例模式一个类只有一个实例,并且可以全局访问使用应用场景如账户管理类,数据库操作类等(某个对象频繁被访问使用)常用方式饿汉式懒汉式同步加锁D
- 在淘宝、京东等电商举办活动的时候,经常可以看到在移动客户端推出的各种刮奖活动,而这种活动也受到了很多人的喜爱。从客户端的体验来说,这种效果应
- 要想充分发挥ADO.NET的优势,不仅需要全面、深入理解ADO.NET编程模型,及时总结经验、技巧也十分重要。ADO已经有多年的实践经验,A
- 介绍大家都知道微信支付的回调链接要求不能跟参数,但又要接收返回的xml数据。我开始使用@RequestBody注解在参数上,希望能获取xml
- View的平滑滚动效果什么是实现View的平滑滚动效果呢,举个简单的例子,一个View从在我们指定的时间内从一个位置滚动到另外一个位置,我们
- 一、概念HttpClientAndroid 6中移除(API数量多扩展困难)。HttpURLConnection目前官方集成的。OKHttp
- 本文实例讲述了Android开发之开关按钮控件ToggleButton简单用法。分享给大家供大家参考,具体如下:先来看看运行效果:具体代码如
- JNI,Java Native Interface,是 native code 的编程接口。JNI 使 Java 代码程序可以与 nativ
- 一、定时任务1、cron表达式语法:秒 分 时 日 月 周 年(其中“年”Spring不支持,也就是说在spring定时任务中只能设置:秒
- 本文实例讲述了Android编程之canvas绘制各种图形的方法。分享给大家供大家参考,具体如下:1、首先说一下canvas类:Class