JavaWeb?使用DBUtils實現(xiàn)增刪改查方式
JavaWeb 使用DBUtils實現(xiàn)增刪改查
1、創(chuàng)建C3p0Utils類
創(chuàng)建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、創(chuàng)建DBUtilsDao類
在src目錄下,創(chuàng)建一個cn.itcast.jdbc.demo的包,在該包下創(chuàng)建一個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 {
// 創(chuàng)建QueryRunner對象
QueryRunner runner = new QueryRunner(C3p0Utils.getDataSource());
// 寫SQL語句
String sql = "select * from user";
// 調(diào)用方法
List list = (List) runner.query(sql,
new BeanListHandler(User.class));
return list;
}
// 查詢單個,返回對象
public User find(int id) throws SQLException {
// 創(chuàng)建QueryRunner對象
QueryRunner runner = new QueryRunner(C3p0Utils.getDataSource());
// 寫SQL語句
String sql = "select * from user where id=?";
// 調(diào)用方法
User user = (User) runner.query(sql,
new BeanHandler(User.class), new Object[] { id });
return user;
}
// 添加用戶的操作
public Boolean insert(User user) throws SQLException {
// 創(chuàng)建QueryRunner對象
QueryRunner runner = new QueryRunner(C3p0Utils.getDataSource());
// 寫SQL語句
String sql = "insert into user (name,password) values (?,?)";
// 調(diào)用方法
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 {
// 創(chuàng)建QueryRunner對象
QueryRunner runner = new QueryRunner(C3p0Utils.getDataSource());
// 寫SQL語句
String sql = "update user set name=?,password=? where id=?";
// 調(diào)用方法
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 {
// 創(chuàng)建QueryRunner對象
QueryRunner runner = new QueryRunner(C3p0Utils.getDataSource());
// 寫SQL語句
String sql = "delete from user where id=?";
// 調(diào)用方法
int num = runner.update(sql, id);
if (num > 0)
return true;
return false;
}
}
3、創(chuàng)建測試類
在cn.itcast.jdbc.demo包中創(chuàng)建測試類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();
}
}
以上代碼由多個測試函數(shù)組成,依次為:插入、修改、刪除、根據(jù)id查詢、查詢所有
4、執(zhí)行測試類
1.數(shù)據(jù)表user原始數(shù)據(jù)如下:

執(zhí)行后結(jié)果如下:

之中插入和刪除都是針對第四個數(shù)據(jù)進行的操作,所以沒有顯現(xiàn)
Java DBUtils技術(shù)訪問數(shù)據(jù)庫
DBUtils
Dbutils是操作數(shù)據(jù)庫的組件,對傳統(tǒng)操作數(shù)據(jù)庫的類進行二次封裝,可以把結(jié)果集轉(zhuǎn)化成List。
介紹
DBUtils相對以往的連接數(shù)據(jù)庫得到結(jié)果集的模式,代碼更加簡潔,訪問更加迅速,這里我對一個我自級設(shè)計的Cuisine表做一個簡單的例子。

對數(shù)據(jù)庫的查詢語句的代碼
對已有的菜系表Cuisine查找對應(yīng)菜系編號cuid的全部數(shù)據(jù).
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、實現(xiàn)數(shù)據(jù)查詢的方法
// 實現(xiàn)數(shù)據(jù)查詢
public Cuisine getCuisine(Cuisine cu) {//得到對應(yīng)菜系的信息
// 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;
}
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
分享Java8中通過Stream對列表進行去重的實現(xiàn)
本文主要介紹了分享Java8中通過Stream對列表進行去重的實現(xiàn),包括兩種方法,具有一定的參考價值,感興趣的可以了解一下2023-11-11
Java實現(xiàn)自定義LinkedList類的示例代碼
LinkedList類跟ArrayList類不同,它通過指針以及結(jié)點的操作對鏈表進行增刪改查。本文就來和大家分享下Java如何為實現(xiàn)自定義LinkedList類,需要的可以參考一下2022-08-08
java數(shù)據(jù)結(jié)構(gòu)與算法之插入算法實現(xiàn)數(shù)值排序示例
這篇文章主要介紹了java數(shù)據(jù)結(jié)構(gòu)與算法之插入算法實現(xiàn)數(shù)值排序的方法,結(jié)合簡單實例形式分析了插入算法的節(jié)點操作與排序相關(guān)實現(xiàn)技巧,需要的朋友可以參考下2016-08-08
mybatis模糊查詢之bind標簽和concat函數(shù)用法詳解
大家都知道bind 標簽可以使用 OGNL 表達式創(chuàng)建一個變量井將其綁定到上下文中,接下來通過本文給大家介紹了mybatis模糊查詢——bind標簽和concat函數(shù)用法,需要的朋友可以參考下2022-08-08
java配置多個過濾器優(yōu)先級以及幾個常用過濾器操作
這篇文章主要介紹了java配置多個過濾器優(yōu)先級以及幾個常用過濾器的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-07-07
java循環(huán)刪除List元素報錯的原因分析與解決
大家在工作中應(yīng)該都會遇到從List集合中刪除某一個或多個元素的業(yè)務(wù)場景,相信大家都會避開在循環(huán)里面刪除元素,使用其他方式處理,這是為什么呢,下面小編就來和大家詳細聊聊2023-11-11
Springboot詳解RocketMQ實現(xiàn)廣播消息流程
RocketMQ作為一款純java、分布式、隊列模型的開源消息中間件,支持事務(wù)消息、順序消息、批量消息、定時消息、消息回溯等,本篇我們了解如何實現(xiàn)廣播消息2022-06-06

