松花皮蛋的黑板報
  • 分享在京東工作的技術感悟,還有JAVA技術和業內最佳實踐,大部分都是務實的、能看懂的、可復現的

掃一掃
關注公眾號

ARTS-7-JDBC的游標

博客首頁文章列表 松花皮蛋me 2019-04-28 21:29

ARTS的初衷

Algorithm: 主要是為了編程訓練和學習。

Review:主要是為了學習英文

Tip:主要是為了總結和歸納在是常工作中所遇到的知識點。學習至少一個技術技巧。在工作中遇到的問題,踩過的坑,學習的點滴知識。

Share:主要是為了建立影響力,能夠輸出價值觀。分享一篇有觀點和思考的技術文章

https://www.zhihu.com/question/301150832

一、Algorithm

Find All Duplicates in an Array

Given an array of integers, 1 ≤ a[i] ≤ n (n = size of array), some elements appear twice and others appear once.

Find all the elements that appear twice in this array.

Could you do it without extra space and in O(n) runtime?

Example:
Input:
[4,3,2,7,8,2,3,1]

Output:
[2,3]

class Solution {
    public List<Integer> findDuplicates(int[] nums) {
        // 正負位置標記法
        List<Integer> res = new ArrayList();
        for(int n:nums) {
            int tmp = Math.abs(n);
            if(nums[tmp-1]<-1) {
                res.add(tmp);
            } else {
                nums[tmp-1]*=-1;
            }
        }
        return res;
    }
}

二、Review

How to Create a Scrollable, Updatable ResultSet Object in JDBC

通過設置ResultSet參數,可以讓我們以游標的方式遍歷和更新數據,比如方法first()、previous()、 next()、last()、updateRow()

查詢

PreparedStatement pstmt =
            connection.prepareStatement(SQL,
         ResultSet.TYPE_SCROLL_INSENSITIVE,
         ResultSet.CONCUR_READ_ONLY);){
            rs = pstmt.executeQuery();

更新

PreparedStatement pstmt =
            connection.prepareStatement(SQL,
         ResultSet.TYPE_SCROLL_SENSITIVE,
         ResultSet.CONCUR_UPDATABLE);){
            pstmt.setLong(1,emp_no);
            rs = pstmt.executeQuery();
            while(rs.next()){
               show(rs);
               rs.updateString("first_name", "Subham");
               rs.updateRow();
            }            

resultSetType 的可選值有:

  1. 1、ResultSet.TYPE_FORWARD_ONLY 默認的cursor 類型
  2. 2、ResultSet.TYPE_SCROLL_INSENSITIVE 支持結果集backforward ,random ,last ,first 等操作,對其它session 對數據庫中數據做出的更改是不敏感的
  3. 3、ResultSet.TYPE_SCROLL_SENSITIVE 支持結果集backforward ,random ,last ,first 等操作,對其它session 對數據庫中數據做出的更改是敏感的,即其他session 修改了數據庫中的數據,會反應到本結果集中。

三、Tips

Java和Mysql數據類型轉換時,要注意tinyInt類型,如果存儲長度為1,會轉換成java.lang.Boolean,可以在JDBC的URL上增加tinyInt1isBit=false參數,禁止自動轉換

四、Share

微服務架構之網關層Zuul剖析

微服務架構之容錯Hystrix

黑龙江6+1开奖结果查询