• 请允许我成为你的夏季——shiro、jdbcInsertall


       

      这两天总是觉得自己被关进了一个大笼子,日子拮据。生活不就是这样吗,一边觉得自己很差劲,一边又想成为一个更好的自己。可那又有什么办法呢,万物皆有裂痕,但那又怎样,那是光照进来的地方啊。

      

      开始学习shiro,一款java权限框架,看了一会视频感觉还不入读下面这位老哥的一篇博客要来得痛快。

      http://www.jianshu.com/p/6786ddf54582

      http://jinnianshilongnian.iteye.com/blog/2031823

      还有一个jdbc批量插入数据的方法。

        

     1 /**
     2      * 执行数据库插入操作
     3      *
     4      * @param datas     插入数据表中key为列名和value为列对应的值的Map对象的List集合
     5      * @param tableName 要插入的数据库的表名
     6      * @return 影响的行数
     7      * @throws SQLException SQL异常
     8      */
     9     public int insertAll(String tableName, List<Map<String, Object>> datas) throws SQLException {
    10         /**影响的行数**/
    11         int affectRowCount = -1;
    12         Connection connection = null;
    13         PreparedStatement preparedStatement = null;
    14         try {
    15             /**从数据库连接池中获取数据库连接**/
    16             connection = getConnectionTwo();
    17 
    18 
    19             Map<String, Object> valueMap = datas.get(0);
    20             /**获取数据库插入的Map的键值对的值**/
    21             Set<String> keySet = valueMap.keySet();
    22             Iterator<String> iterator = keySet.iterator();
    23             /**要插入的字段sql,其实就是用key拼起来的**/
    24             StringBuilder columnSql = new StringBuilder();
    25             /**要插入的字段值,其实就是?**/
    26             StringBuilder unknownMarkSql = new StringBuilder();
    27             Object[] keys = new Object[valueMap.size()];
    28             int i = 0;
    29             while (iterator.hasNext()) {
    30                 String key = iterator.next();
    31                 keys[i] = key;
    32                 columnSql.append(i == 0 ? "" : ",");
    33                 columnSql.append(key);
    34 
    35                 unknownMarkSql.append(i == 0 ? "" : ",");
    36                 unknownMarkSql.append("?");
    37                 i++;
    38             }
    39             /**开始拼插入的sql语句**/
    40             StringBuilder sql = new StringBuilder();
    41             sql.append("INSERT INTO ");
    42             sql.append(tableName);
    43             sql.append(" (");
    44             sql.append(columnSql);
    45             sql.append(" )  VALUES (");
    46             sql.append(unknownMarkSql);
    47             sql.append(" )");
    48 
    49             /**执行SQL预编译**/
    50             preparedStatement = connection.prepareStatement(sql.toString());
    51             /**设置不自动提交,以便于在出现异常的时候数据库回滚**/
    52             connection.setAutoCommit(false);
    53             System.out.println(sql.toString());
    54             for (int j = 0; j < datas.size(); j++) {
    55                 for (int k = 0; k < keys.length; k++) {
    56                     preparedStatement.setObject(k + 1, datas.get(j).get(keys[k]));
    57                 }
    58                 preparedStatement.addBatch();
    59             }
    60             int[] arr = preparedStatement.executeBatch();
    61             connection.commit();
    62             affectRowCount = arr.length;
    63             System.out.println("成功了插入了" + affectRowCount + "行");
    64             System.out.println();
    65         } catch (Exception e) {
    66             if (connection != null) {
    67                 connection.rollback();
    68             }
    69             e.printStackTrace();
    70             throw e;
    71         } finally {
    72             if (preparedStatement != null) {
    73                 preparedStatement.close();
    74             }
    75             if (connection != null) {
    76                 connection.close();
    77             }
    78         }
    79         return affectRowCount;
    80     }

    晚安 时间不早了,2017年9月6日01:31:22,地点 公司。

    请允许我成为你的夏季

       艾米莉•狄更生(美)

    请允许我成为你的夏季,

    当夏季的光阴已然流逝!

    请允许我成为你的音乐,

    当夜鹰与金莺收敛了歌喉!

    请允许我为你绽放,我将穿越墓地,

    四处播撒我的花朵!

    请把我采撷吧——银莲花——

    你的花朵——将为你盛开,直至永远!

  • 相关阅读:
    DirectX9:基础篇 第五章 绘制流水线
    他山之石:可以攻玉
    C89:论内存分配问题
    C89:关键字
    MFC:开头篇 介绍
    DirectX9:先导篇 数学基础
    模仿轮播图效果
    text选中后displa出label内容
    ASP.NET页面之间传递值的几种方式
    jquery-delay(),queue()
  • 原文地址:https://www.cnblogs.com/zzuuoo666/p/7482729.html
Copyright © 2020-2023  润新知