日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

28、jdbc操作数据库(5)

發布時間:2023/12/3 数据库 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 28、jdbc操作数据库(5) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

介紹一個稍微封裝了jdbc的工具類org.apache.commons.dbutils,使用dbutils可以簡化對數據庫操作程序的開發。

API介紹

接下來通過實例的方式說一下dbutils的具體使用

添加jar包:commons-dbutils-1.7.jar

增、刪、改

進行增、刪、改操作,在這里(未使用數據源)只需傳入數據庫連接、sql、占位符值到update方法中即可完成操作。代碼如下:

public static void main(String[] args) {//可以直接傳入一個數據源,這里不適用連接池做實例QueryRunner queryRunner = new QueryRunner();Connection connection = null;//進行增、刪、改操作,在這里只需傳入數據庫連接、sql、占位符值到update方法中即可完成操作try {connection = DBUtil.getConnection();//添加String sql1 = "INSERT INTO USER (uname,password) VALUES (? , ?)";Object []obj1= {"xiaopeng","123456"};int update1 = queryRunner.update(connection,sql1, obj1);System.out.println("添加成功:"+update1);//修改String sql2 = "UPDATE USER SET UNAME = ? WHERE ID = ?";Object []obj2 = {"xiaopeng",20005};int update2 = queryRunner.update(connection, sql2, obj2);System.out.println("修改成功:"+update2);//刪除String sql3 = "DELETE FROM USER WHERE ID = ?";int update3 = queryRunner.update(connection,sql3,20004);System.out.println("刪除成功:"+update3);} catch (SQLException e) {e.printStackTrace();}finally {if (connection != null) {try {connection.close();} catch (SQLException e) {e.printStackTrace();}}} }

查詢

使用dbutils進行查詢時,需要了解如下幾個類,他們用于將查詢結果進行封裝:

BeanListHandler:用于將結果集轉成一個List集合,其泛型可用戶自定義

public static void main(String[] args) {//可以直接傳入一個數據源,這里不適用連接池做實例QueryRunner queryRunner = new QueryRunner();Connection connection = null;connection = DBUtil.getConnection();String sql = "SELECT UNAME ,PASSWORD FROM USER LIMIT 3";try {List<User> list = queryRunner.query(connection, sql, new BeanListHandler<>(User.class));System.out.println(list);} catch (SQLException e) {e.printStackTrace();}}

BeanHandler:用于將結果封裝成一個實體,用于返回一個結果的場景

public static void main(String[] args) {//可以直接傳入一個數據源,這里不適用連接池做實例QueryRunner queryRunner = new QueryRunner();Connection connection = null;connection = DBUtil.getConnection();String sql = "SELECT UNAME ,PASSWORD FROM USER WHERE ID = 4";try {//注意:這個地方一定要用實現類,否則容易報錯User user = queryRunner.query(connection, sql, new BeanHandler<>(User.class));System.out.println(user);} catch (SQLException e) {e.printStackTrace();} }

MapHandler:用于將返回的一個結果集封裝成一個Map集合,用于返回一條結果集的場景

public static void main(String[] args) {//可以直接傳入一個數據源,這里不適用連接池做實例QueryRunner queryRunner = new QueryRunner();Connection connection = null;connection = DBUtil.getConnection();String sql = "SELECT UNAME ,PASSWORD FROM USER WHERE ID = 4";try {Map<String, Object> map = queryRunner.query(connection, sql, new MapHandler());System.out.println(map);} catch (SQLException e) {e.printStackTrace();} }

MapListHandler:用于將返回的結果集封裝成一個List集合,每一條記錄信息封裝到一個Map集合中

public static void main(String[] args) {//可以直接傳入一個數據源,這里不適用連接池做實例QueryRunner queryRunner = new QueryRunner();Connection connection = null;connection = DBUtil.getConnection();String sql = "SELECT UNAME ,PASSWORD FROM USER LIMIT 10";try {List<Map<String, Object>> list = queryRunner.query(connection, sql, new MapListHandler());System.out.println(list);} catch (SQLException e) {e.printStackTrace();} }

基本實現原理:這幾個封裝類都實現了ResultSetHandler接口,然后根據不同的類型對應實現ResultSetHandler接口中的handle方法以實現結果集的封裝,封裝時最終都調用的是類BeanProcessor中的方法,具體封裝過程可看源碼

public interface ResultSetHandler<T> {T handle(ResultSet rs) throws SQLException;}

總結

以上是生活随笔為你收集整理的28、jdbc操作数据库(5)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。