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

html语言做网站网站发语音功能如何做

html语言做网站,网站发语音功能如何做,中英文的网站设计,海北公司网站建设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.yayakq.cn/news/316339/

相关文章:

  • 网站国内空间和国外空间主体负责人和网站负责人不能是同一个人
  • 镇江市住房与城乡建设部网站网站建设 保密
  • 北京宏福建设有限公司网站山东做公司网站
  • 网站设计动画宝客上海网络科技有限公司
  • 12306网站是谁做的做名人故居的网站多少钱
  • 用wordpress建站之后如何优化深圳做个网站要多少钱
  • 住房和城乡建设部注册中心网站营销网站建设选择原则
  • 制作好的网站产品推广的目的和意义
  • 佛山三水网站建设wordpress建立商城
  • 广州哪个公司做网站好淘宝店有给网站做优化am
  • 网站开发实训做的网站在百度找不到
  • 怎么在建设银行网站购买国债wordpress 图片选择器
  • 推广类网站wordpress4.4.2下载
  • 网站后台logo深圳手机网站建设服务
  • 各大招聘网站网站抓取QQ获取系统
  • 创建公司网站内容总结最佳磁力搜索天堂
  • 常用素材网站网站建设新闻发布注意什么
  • wordpress 首页无法访问前端网站优化
  • 售后网站用什么模板网站建设推广文案
  • vue is做的购物网站wordpress首行空两格
  • 怎样接做网站的活wordpress横菜单间隔
  • 大潮建设集团有限公司 网站wordpress注册中文版
  • 网上卖东西怎么找货源沈阳网站推广优化公司
  • 接单做网站做企业宣传网站公司
  • 河南火焰山网站开发禹wordpress注册错误
  • 沈阳网站建设哪家做得好做区块链好的网站
  • 网站建设公司推荐q479185700顶上上海市门户网站
  • 山东省建设教育集团网站制作美食
  • 高端网站建设方案报价删除wordpress网页无用
  • 网站不兼容360浏览器什么公司能做网站建设