JAVA SE使用DBUtils資料查詢(使用BeanHandler)

DBUtils資料查詢範例(使用BeanHandler)

前言

使用DBUtils可以使用BeanHandler來做資料查詢結果封裝,這也是楊藝比較喜歡的方式,BeanHandler主要是用來查詢單一筆搜尋結果使用,若要搜尋多筆結果,則得使用BeanListHandler。

實作

以下進行簡單的示範。

Java程式碼

Blog.java

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
package cc.artyang.bean;

import java.io.Serializable;
import java.util.Date;

/**
 * Blog Bean
 *
 * @author Art Yang
 *
 */
public class Blog implements Serializable{

    /** serialVersionUID */
    private static final long serialVersionUID = 7961994280964175872L;

    /** 部落格流水號 */
    private Long blogSeqNo;

    /** 部落格名稱 */
    private String blogName;

    /** 作者 */
    private String author;

    /** 備註 */
    private String remark;

    /** 建立時間 */
    private Date createdTime;

    /** 更新時間 */
    private Date updatedTime;

    /**
     * @return {@link #blogSeqNo}
     */
    public Long getBlogSeqNo() {
        return this.blogSeqNo;
    }

    /**
     * @param BlogSeqNo {@link #blogSeqNo}
     */
    public void setBlogSeqNo(Long BlogSeqNo) {
        this.blogSeqNo = BlogSeqNo;
    }

    /**
     * @return {@link #blogName}
     */
    public String getBlogName() {
        return this.blogName;
    }

    /**
     * @param BlogName {@link #blogName}
     */
    public void setBlogName(String BlogName) {
        this.blogName = BlogName;
    }

    /**
     * @return {@link #createdTime}
     */
    public Date getCreatedTime() {
        return this.createdTime;
    }

    /**
     * @param createdTime {@link #createdTime}
     */
    public void setCreatedTime(Date createdTime) {
        this.createdTime = createdTime;
    }

    /**
     * @return {@link #updatedTime}
     */
    public Date getUpdatedTime() {
        return this.updatedTime;
    }

    /**
     * @param updatedTime {@link #updatedTime}
     */
    public void setUpdatedTime(Date updatedTime) {
        this.updatedTime = updatedTime;
    }

    /**
     * @return {@link #author}
     */
    public String getAuthor() {
        return this.author;
    }

    /**
     * @param author {@link #author}
     */
    public void setAuthor(String author) {
        this.author = author;
    }

    /**
     * @return {@link #remark}
     */
    public String getRemark() {
        return this.remark;
    }

    /**
     * @param remark {@link #remark}
     */
    public void setRemark(String remark) {
        this.remark = remark;
    }

    @Override
    public String toString() {
        return "Blog [blogSeqNo=" + this.blogSeqNo + ", blogName=" + this.blogName + ", author=" + this.author + ", remark=" + this.remark
                + ", createdTime=" + this.createdTime + ", updatedTime=" + this.updatedTime + "]";
    }

}

DBUtilsSelectByBeanhandlerDemo.java

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
package cc.artyang;

import java.sql.SQLException;

import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;

import cc.artyang.bean.Blog;
import cc.artyang.conf.DataSourceConf;

/**
 * DBUtils 資料查詢 (使用 BeanHandler)
 *
 * @author Art Yang
 *
 */
public class DBUtilsSelectByBeanhandlerDemo {

    /**
     * <p>主程式方法</p>
     * <p>使用 BeanHandler 進行資料查詢會返回指定封裝好的 Bean,用於查詢一筆資料使用</p>
     *
     * @param args 外部參數
     * @throws ClassNotFoundException
     * @throws SQLException
     */
    public static void main(String[] args) throws ClassNotFoundException, SQLException {
        String sqlStmt = "select * from blog where blogSeqNo = ?";

        QueryRunner queryRunner = new QueryRunner(DataSourceConf.getDataSource());
        Blog blog = queryRunner.query(sqlStmt, new BeanHandler<>(Blog.class), 1);

        System.out.println(blog);
    }

}

執行結果

1
Blog [blogSeqNo=1, blogName=楊藝的洋溢生活, author=ArtYang, remark=生活記事、系統管理、程式設計、資料庫, createdTime=2019-05-01 13:40:57.0, updatedTime=null]