当前位置: 首页 > news >正文

网站制作公司 深圳行业关键词一览表

网站制作公司 深圳,行业关键词一览表,中美关系最新消息人民日报,网站实现用户登录1、用法(导入项目即可) 注意:项目中必须存在数据库驱动包。 2、方法列表 (1)获取数据库连接对象 (2)获取查询结果集 (3)将查询结果集转化为指定对象(使用…

1、用法(导入项目即可)

注意:项目中必须存在数据库驱动包。

2、方法列表

(1)获取数据库连接对象

(2)获取查询结果集

(3)将查询结果集转化为指定对象(使用者自行提供类参数,通过反射和转化)

(4)执行更新、删除、插入操作

(5)关闭数据库连接

3、源码展示(注释齐全)

package utils;import java.lang.reflect.Constructor;
import java.lang.reflect.Method;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;/*** 数据库常用操作工具类* * @author snow1k* @date 2021/11/10*/
public final class JdbcUtils {// mysql8驱动public static final String MYSQL8_DRIVER = "com.mysql.cj.jdbc.Driver";/*** 结果集处理器* * @author snow1k* @date 2021/11/10*/public static interface ResultSetHandler<T> {/*** 将一个结果集转换成T类型* * @param rs* @return*/T handle(ResultSet rs);}/*** 列处理器* * @author snow1k* @date 2021/11/16*/public static interface ColumnHandler<T> {/*** * @param method     根据列名自动匹配的方法名* @param columnName 列名* @param t          对象* @param value      值* @return 返回true,表示用户已处理完成,无需再处理,返回false,则代表用户不处理*/boolean handleColumn(Method method, String columnName, T t, Object value);}/*** 内部类的目的,就是为了将结果集中的数据自动封装成对象* * @author snow1k* @date 2021/11/10*/public static class BeanListHandler<T> implements ResultSetHandler<List<T>> {private final Class<T> clazz;private ColumnHandler<T> columnHandler;public BeanListHandler(Class<T> clazz) {this.clazz = clazz;}public BeanListHandler(Class<T> clazz, ColumnHandler<T> columnHandler) {this.clazz = clazz;this.columnHandler = columnHandler;}@Overridepublic List<T> handle(ResultSet rs) {// 返回值List<T> list = new ArrayList<>();// 存储所有列名(别名)List<String> columnNames = new ArrayList<>();// 存储所有方法,键名是列名(别名),值即其对应的setter方法Map<String, Method> methodMap = new HashMap<>();// 获取所有列名try {// 结果集元数据ResultSetMetaData rsmd = rs.getMetaData();// 返回查询结果集的列数int count = rsmd.getColumnCount();// 返回此类型的所有方法Method[] methods = clazz.getDeclaredMethods();for (int i = 0; i < count; i++) {// 获取列名,如果起别名,则获取别名String columnName = rsmd.getColumnLabel(i + 1);columnNames.add(columnName);// 返回查询结果集的列名// 组装出对象的方法名String methodName = columnName.substring(0, 1).toUpperCase() + columnName.substring(1);methodName = "set" + methodName;for (Method me : methods) {if (me.getName().equals(methodName)) {methodMap.put(columnName, me);// 设置到map中break;}}}// 准备工作已完成,将结果集中的数据转换成T类型的实例if (rs != null) {// 获取无参的构造方法Constructor<T> con = clazz.getDeclaredConstructor();while (rs.next()) {T t = con.newInstance();// T类型的实例for (int i = 0; i < count; i++) {String columnName = columnNames.get(i);// 从结果集中取出对应列的数据Object value = rs.getObject(columnName);// 取出方法Method method = methodMap.get(columnName);if (method != null) {if (columnHandler != null) {boolean done = columnHandler.handleColumn(method, columnName, t, value);if (!done) {// 通过反射给T类型的实例赋值method.invoke(t, value);}}}}list.add(t);}}return list;} catch (Exception e) {e.printStackTrace();}return null;}}/*** 获取数据库连接* * @param url* @param user* @param password* @return*/public static final Connection getConnection(String driver, String url, String user, String password) {try {Class.forName(driver);return DriverManager.getConnection(url, user, password);} catch (ClassNotFoundException e) {e.printStackTrace();} catch (SQLException e) {e.printStackTrace();}throw new RuntimeException("无法创建数据库连接");}/*** 获取数据库连接* * @param url* @param user* @param password* @return*/public static final Connection getConnection(String url, String user, String password) {return getConnection(MYSQL8_DRIVER, url, user, password);}/*** 执行查询操作,返回结果集* * @param conn* @param sql* @param args* @return*/private static final ResultSet query(Connection conn, String sql, Object[] args) {try {PreparedStatement ps = conn.prepareStatement(sql);if (args != null) {// 给PreparedStatement实例设置参数for (int i = 0; i < args.length; i++) {ps.setObject(i + 1, args[i]);}}return ps.executeQuery();} catch (SQLException e) {e.printStackTrace();}throw new RuntimeException("查询出现异常");}/*** 返回对象的集合* * @param <T>* @param conn* @param sql* @param args* @return*/public static final <T> T query(Connection conn, ResultSetHandler<T> handler, String sql, Object[] args) {ResultSet rs = query(conn, sql, args);return handler.handle(rs);}/*** 写操作* * @return 返回受影响的行数*/public static final int update(Connection conn, String sql, Object[] args) {try {PreparedStatement ps = conn.prepareStatement(sql);if (args != null) {// 给PreparedStatement实例设置参数for (int i = 0; i < args.length; i++) {ps.setObject(i + 1, args[i]);}}return ps.executeUpdate();} catch (SQLException e) {// e.printStackTrace();}return -1;}/*** 关闭数据库连接* * @param conn*/public static final void closeConnection(Connection conn) {if (conn != null) {try {conn.close();} catch (SQLException e) {e.printStackTrace();}}}}

声明:

此工具类适用于初学者刚开始学习数据库操作,便于加强掌握和加深理解,熟悉之后直接调用即可。

http://www.dt0577.cn/news/57293.html

相关文章:

  • 多商家商城seo解释
  • 京东内部券网站怎么做郑州靠谱seo整站优化
  • 石景山区公司网站建设企业网搭建
  • 返利网站 帐如何做乔拓云智能建站平台
  • asp+sql server典型网站建设案例平台推广网站
  • 2019销售网站开发与设计现状网站关键词快速优化
  • 苹果CMS如何做视频网站西安网站建设网络推广
  • app运营专员谷歌seo是指什么意思
  • 网站 展示板腾讯中国联通
  • 湖北省建设工程质量检测监管平台北京企业网站seo平台
  • 农村pc网站开发超级外链自动发布工具
  • 网站建设q-9杭州关键词自动排名
  • 本地企业网站建设服务友情链接网站源码
  • wordpress下载模板优化搜索引擎
  • 十大网站建立公司潍坊网站外包
  • 企业信用信息网公示网官网查询seo搜索引擎优化内容
  • 黄石有哪些做视觉网站的公司seo优化一般多少钱
  • wordpress 下载模板站天津百度网站排名优化
  • 游戏网站开发有限公司如何快速提升网站关键词排名
  • 网站设计语言有哪些百度站长工具验证
  • 书籍管理网站建设需求文档扬州seo
  • 商城小程序搭建seo关键词平台
  • 安徽安庆网站建设公司济南做网站公司哪家好
  • 网络规划设计师电子版教材优化大师官方免费下载
  • wordpress个人简历主题百度seo排名优化技巧分享
  • 58招聘运营网站怎么做网站建设教程
  • 风景旅游网站建设的设计思路快速优化关键词排名
  • 擦彩网站开发今日特大军事新闻
  • 上传的网站打不开百度如何推广网站
  • 网站备案主体查询企业网