ARTS-7-JDBC的游标

松花皮蛋me 2019-04-28 21:29
文章首发于公众号 松花皮蛋的黑板报松花皮蛋的黑板报,作者就职于京东,在稳定性保障、敏捷开发、高级JAVA、微服务架构有深入的理解

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


文章已于2019-06-08 00:14修改,变动:修改文章标题
阅读 231 次