• idea自动封装方法


    例如

    1. package com.utils;
    2. import java.lang.reflect.Field;
    3. import java.sql.*;
    4. import java.util.ArrayList;
    5. import java.util.List;
    6. import java.util.ResourceBundle;
    7. /**
    8. * @author hrui
    9. * @date 2023/10/13 13:49
    10. */
    11. public class DBUtils {
    12. private static ResourceBundle bundle=ResourceBundle.getBundle("jdbc");
    13. private static String driver=bundle.getString("jdbc.driver");
    14. private static String url=bundle.getString("jdbc.url");
    15. private static String username=bundle.getString("jdbc.username");
    16. private static String password=bundle.getString("jdbc.password");
    17. static{
    18. try {
    19. Class.forName(driver);
    20. } catch (ClassNotFoundException e) {
    21. e.printStackTrace();
    22. }
    23. }
    24. //通用查询多个
    25. public static <T> List<T> selectList(Class<T> clazz, String sql, Object...args){
    26. Connection conn=null;
    27. PreparedStatement ps=null;
    28. ResultSet rs=null;
    29. try {
    30. conn=DBUtils.getConnection();
    31. ps=conn.prepareStatement(sql);
    32. for(int i=0;i<args.length;i++){
    33. ps.setObject(i+1, args[i]);
    34. }
    35. rs = ps.executeQuery();
    36. ResultSetMetaData metaData = rs.getMetaData();
    37. int columnCount = metaData.getColumnCount();
    38. List<T> list=new ArrayList<>();
    39. while(rs.next()){
    40. T t = clazz.newInstance();
    41. for(int i=0;i<columnCount;i++){
    42. Object object = rs.getObject(i + 1);
    43. //String columnName = metaData.getColumnName(i + 1); 这个方法返回实际列名
    44. String columnLabel = metaData.getColumnLabel(i + 1);//该方法返回别名,没有别名就返回列名
    45. if(columnLabel.contains("_")){
    46. int index = columnLabel.indexOf("_");
    47. String replace = columnLabel.replace("_", "");
    48. char c = Character.toUpperCase(replace.charAt(index));
    49. columnLabel=replace.substring(0, index)+c+replace.substring(index+1);
    50. }
    51. Field field = clazz.getDeclaredField(columnLabel);
    52. field.setAccessible(true);
    53. field.set(t,object);
    54. }
    55. list.add(t);
    56. }
    57. return list;
    58. } catch (Exception e) {
    59. e.printStackTrace();
    60. }finally {
    61. DBUtils.closed(conn,ps,rs);
    62. }
    63. return null;
    64. }
    65. //通用查询单个
    66. public static <T> T selectOne(Class<T> clazz,String sql,Object...args){
    67. Connection conn=null;
    68. PreparedStatement ps=null;
    69. ResultSet rs=null;
    70. try {
    71. conn=DBUtils.getConnection();
    72. ps=conn.prepareStatement(sql);
    73. for(int i=0;i<args.length;i++){
    74. ps.setObject(i+1, args[i]);
    75. }
    76. rs = ps.executeQuery();
    77. ResultSetMetaData metaData = rs.getMetaData();
    78. int columnCount = metaData.getColumnCount();
    79. if(rs.next()){
    80. T t = clazz.newInstance();
    81. for(int i=0;i<columnCount;i++){
    82. Object object = rs.getObject(i + 1);
    83. String columnLabel = metaData.getColumnLabel(i + 1);
    84. if(columnLabel.contains("_")){
    85. int index = columnLabel.indexOf("_");
    86. String replace = columnLabel.replace("_", "");
    87. char c = Character.toUpperCase(replace.charAt(index));
    88. columnLabel=replace.substring(0, index)+c+replace.substring(index+1);
    89. }
    90. Field field = clazz.getDeclaredField(columnLabel);
    91. field.setAccessible(true);
    92. field.set(t,object);
    93. }
    94. return t;
    95. }
    96. } catch (Exception e) {
    97. e.printStackTrace();
    98. }finally {
    99. DBUtils.closed(conn,ps,rs);
    100. }
    101. return null;
    102. }
    103. public static Connection getConnection() throws SQLException {
    104. Connection connection = DriverManager.getConnection(url, username, password);
    105. return connection;
    106. }
    107. //通用增删改方法
    108. public static int update(String sql,Object...args){
    109. Connection conn =null;
    110. PreparedStatement ps=null;
    111. int count=0;
    112. try {
    113. conn = DBUtils.getConnection();
    114. ps = conn.prepareStatement(sql);
    115. for(int i=0;i<args.length;i++){
    116. ps.setObject(i+1, args[i]);
    117. }
    118. count = ps.executeUpdate();
    119. //ps.execute();
    120. } catch (SQLException e) {
    121. e.printStackTrace();
    122. }finally {
    123. DBUtils.closed(conn,ps,null);
    124. }
    125. return count;
    126. }
    127. public static void closed(Connection conn, Statement st, ResultSet rs){
    128. if(rs!=null){
    129. try {
    130. rs.close();
    131. } catch (SQLException e) {
    132. e.printStackTrace();
    133. }
    134. }
    135. if(st!=null){
    136. try {
    137. st.close();
    138. } catch (SQLException e) {
    139. e.printStackTrace();
    140. }
    141. }
    142. if(conn!=null){
    143. try {
    144. conn.close();
    145. } catch (SQLException e) {
    146. e.printStackTrace();
    147. }
    148. }
    149. }
    150. }

    这段代码中

    可以提取出来作为独立的一个方法

  • 相关阅读:
    Linux C++ 053-设计模式之模板方法模式
    Spring AOP详解之面向切面编程
    YOLOv7基于自己的数据集从零构建模型完整训练、推理计算超详细教程
    ios safari 正则兼容问题
    word 第十四课
    Hikari 介绍
    Python中的变量与注释
    c语言tips-结构体
    .net core微服务之服务发现
    java学习记录
  • 原文地址:https://blog.csdn.net/tiantiantbtb/article/details/133828163