1、Spring集成的服务

直接通过注入方式使用,如redis,jdbc等等服务。

spring:
redis:
host: localhost
port: 6379
password: 123456
database: 0
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/test
username: root
password: 123456
@Autowired
private RedisTemplate<String, Object> redisTemplate; @Autowired
private JdbcTemplate jdbcTemplate;

点击查看如何配置Mysql连接池

2、非spring集成(注册Bean服务)

iotdb:
host: 127.0.0.1
port: 8080
username: root
password: 123456
@Data
@Component
@ConfigurationProperties(prefix = "iotdb")
public class ConnUtils{ private String ip;
private String port;
private String username;
private String passwrod; // 通过Bean注册成长连接,启动项目就连接上
@Bean
public Connection connection(){
Connection connection = new connection(ip,port,username,passwrod);
connection.openConnection();
return connection;
}
}
/**
* 调用方式
**/
public class Test{
@Autowired
private Connection connection;
}

3、非spring集成应用(静态调用)

iotdb:
host: 127.0.0.1
port: 8080
username: root
password: 123456
@Data
@Component
@ConfigurationProperties(prefix = "iotdb")
public class ConnUtils{ private static String ip;
private static String port;
private static String username;
private static String passwrod; public void setIp(String ip){
ConnUtils.ip = id;
}
public void setPort(String port){
ConnUtils.port = port;
}
public void setUsername(String username){
ConnUtils.username = username;
}
public void setPasswrod(String passwrod){
ConnUtils.passwrod = passwrod;
} // 短连接,每次需要时就手动调用
public static Connection getConnection(){
Connection connection = new connection(ip,port,username,passwrod);
connection.openConnection();
return connection;
}
}
/**
* 调用方式
**/
public class Test{ public void method(){
Connection connection = ConnUtils.getConnection();
}
}

3、使用原生JDBC连接Mysql

方式一:使用jdk连接

package com.cn.utils;
import java.sql.DriverManager;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List; //jdbc工具类
public class JdbcUtil {
//查询多行多列
public static <T> List<T> list(String sql,Class<T> c){
//创建一个集合,存放所有的对象
List<T> tList=new ArrayList<>();
try {
//1、注册驱动-反射去加载jar包中com.mysql.jdbc.Driver这个类中的 DriverManager.registerDriver(new Driver());
Class.forName("com.mysql.jdbc.Driver");
//2、获取连接对象
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3307/summer-camp2023?characterEncoding=utf8", "root", "admin"); //3、定义sql
String sql = "select * from t_test";
//4、需要创建statement
Statement st = conn.createStatement();
//5、statement 执行sql,返回 结果集
ResultSet rs = st.executeQuery(sql);
//结果集rs得到结果集元数据
ResultSetMetaData md=rs.getMetaData();
//获取结果集总列数
var columnCount = md.getColumnCount();
//6、解析rs
while (rs.next()) {//rs.next 读取结果集的光标向下移动一行,光标默认在哪一行,列名所在的那一行
//根据每一行数据,封装成一个实体对象
T t = c.newInstance();
// 1、取出某一行的每个数据,封装到对象t的属性中
for (int i = 1; i <= columnCount; i++) {
//通过列的序号,获取每一列的值
var value = rs.getObject(i);
if (value!=null){
//通过列的序号,获取每一列的列名
var columnName = md.getColumnName(i);
//因为列名和实体类t中的属性名一致,为每一个属性构造一个反射中的set方法
var f = c.getDeclaredField(columnName);
//赋予私有属性的赋值权限
f.setAccessible(true);
//使用反射,把value给到对象t的属性中
f.set(t,value);//理解为:把value赋值给对象t的ColumName,相当于set方法
}
}
//把对象存入集合中
tList.add(t);
}
//7、关闭资源
st.close();
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
return tList;
}
}

方式二:使用com.alibaba.druid依赖

package com.cn.utils;
import com.alibaba.druid.pool.DruidDataSourceFactory;
import com.alibaba.druid.util.JdbcUtils;
import java.sql.*;
import java.util.ArrayList;
import java.util.List; //jdbc工具类
public class JdbcUtil {
//查询多行多列
public static <T> List<T> list(String sql,Class<T> c){
//创建一个集合,存放所有的对象
List<T> tList=new ArrayList<>();
Connection conn = null;
Statement st = null;
ResultSet rs = null;
try {
//1、定义数据源参数
Map<String, Object> map = new HashMap();
map.put("driverClassName", "com.mysql.jdbc.Driver");
map.put("url", "jdbc:mysql://localhost:3306/test?characterEncoding=utf8");
map.put("username", "root");
map.put("password", "123546");
map.put("initialSize", "5");
map.put("maxActive", "20");
map.put("maxWait", "3000");
DataSorce ds = DruidDataSourceFactory.createDataSource(map);
//2、创建连接
conn = ds.getConnection();
//3、定义sql
String sql = "select * from t_test";
//4、创建statement
st = conn.createStatement();
//5、使用 statement 执行sql,返回 结果集
rs = st.executeQuery(sql);
//结果集rs得到结果集元数据
ResultSetMetaData md=rs.getMetaData();
//获取结果集总列数
var columnCount = md.getColumnCount();
//6、解析rs
while (rs.next()) {//rs.next 读取结果集的光标向下移动一行,光标默认在哪一行,列名所在的那一行
//根据每一行数据,封装成一个实体对象
T t = c.newInstance();
// 1、取出某一行的每个数据,封装到对象t的属性中
for (int i = 1; i <= columnCount; i++) {
//通过列的序号,获取每一列的值
var value = rs.getObject(i);
if (value!=null){
//通过列的序号,获取每一列的列名
var columnName = md.getColumnName(i);
//因为列名和实体类t中的属性名一致,为每一个属性构造一个反射中的set方法
var f = c.getDeclaredField(columnName);
//赋予私有属性的赋值权限
f.setAccessible(true);
//使用反射,把value给到对象t的属性中
f.set(t,value);//理解为:把value赋值给对象t的ColumName,相当于set方法
}
}
//把对象存入集合中
tList.add(t);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
//7、关闭资源
JdbcUtils.close(rs);
JdbcUtils.close(st);
JdbcUtils.close(conn);
}
return tList;
}
}

SpringBoot连接数据库的方式的更多相关文章

  1. node-mongodb-native的几种连接数据库的方式

    h1,h2,h3,h4,h5,h6,p,blockquote { margin: 0; padding: 0;}body { font-family: "Helvetica Neue&quo ...

  2. springboot连接数据库报错testWhileIdle is true, validationQuery not set

    问题描述: 使用springboot连接数据库,启动的时候报错:testWhileIdle is true, validationQuery not set.但是不影响系统使用,数据库等一切访问正常. ...

  3. PDO的三种连接数据库的方式

    PDO的三种连接数据库的方式   PDO的出现是为了解决PHP与各个数据库的连接处理都有各自的函数的问题,它的高度抽象,使得使用起来极其的方便.由于最常用的搭配就是PHP+Mysql,所以这里就以连接 ...

  4. 前端基于vue,后台采用springboot+shiro的方式搭建的一个移动端商品展示平台

    基于vue实现的移动端商品展示页,可以web-view的方式嵌入到小程序中,布局简约.大气,减少初学者或开发者不必要的工作量.后台维护采用的springboot+shiro的方式,为广大爱好者提供展示 ...

  5. linux环境下,springboot jar启动方式

    linux环境下,springboot jar启动方式 一.前台启动(ctrl+c会关掉进程) java -jar application.jar 二.后台启动(ctrl+c不会关闭) java -j ...

  6. 实例讲解Springboot以Template方式整合Redis及序列化问题

    1 简介 之前讲过如何通过Docker安装Redis,也讲了Springboot以Repository方式整合Redis,建议阅读后再看本文效果更佳: (1) Docker安装Redis并介绍漂亮的可 ...

  7. 掌握这些springboot的配置方式,让你工作效率翻个倍!

    springboot的多种配置方式 java配置主要靠java类和一些注解,比较常用的注解有: @Configuration :声明一个类作为配置类,代替xml文件 @Bean :声明在方法上,将方法 ...

  8. MYSQL:python 3.x连接数据库的方式

    我们想要在我们的mython程序中使用mysql,首先需要安装pymysql模块,安装方式可以使用cmd命令安装, pip3.x install pymysql 首先在我们连接数据库之前先创建一个us ...

  9. SpringBoot/SpringMVC文件下载方式

    本篇文章引用外网博客代码,共描述SpringMVC下三种文件下载方式,本人测试在SpringBoot(2.0以上版本)正常使用. 引用博客,强烈推荐https://www.boraji.com. pa ...

  10. springboot linux启动方式

    手动启动 java -Xms128m -Xmx256m -Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=8081,suspend=n -j ...

随机推荐

  1. Android开发环境配置 JDK及SDK

    已经搭建过无数次开发环境,今天把搭建环境记录下,下次不用去搜索别人博客,有些博客都是复制粘贴,有些关键信息都缺失了. 1.首先第一步:下载JDK,配置JDK环境变量.JDK可以在Oracle官网下载, ...

  2. PageOffice实现文件在线安全预览——禁止编辑、下载、复制等

    实际应用中,很多时候不仅需要在线编辑文件,还需要在线安全预览文件,要求不能复制.下载.另存到本地等情况.pageoffice可以实现文件在线安全预览,禁止:编辑.复制.粘贴.右键菜单.选择.下载.另存 ...

  3. IceRPC之调度管道->快乐的RPC

    作者引言 很高兴啊,我们来到了IceRPC之调度管道->快乐的RPC, 基础引导,有点小压力,打好基础,才能让自已不在迷茫,快乐的畅游世界. 调度管道 Dispatch pipeline 了解如 ...

  4. 【winform】解决datagridview里放combox,combox不能按下键快速选择的问题

    效果图: 一开始,是拖个下拉框到窗体上,用dgv.controls.Add(combox)添加到表格里,在通过表格事件,触发时,改变下拉框的位置和大小,这样做,下拉框是会出现在表格里,但是有问题,不能 ...

  5. tkinter滚动条

    from tkinter import * import requests window = Tk() window.geometry('1000x600+300+100') window.title ...

  6. React 中的 useRef 与 useState

    React 是一个流行的 JavaScript 库,用于构建用户界面.它提供了几个钩子,使开发人员能够管理状态并执行副作用. React 中两个常用的钩子是 useRef 和 useState .虽然 ...

  7. c#使用webView2 访问本地静态html资源跨域Cors问题 (附带代理服务helper帮助类)

    背景 在浏览器中访问本地静态资源html网页时,可能会遇到跨域问题如图. 是因为浏览器默认启用了同源策略,即只允许加载与当前网页具有相同源(协议.域名和端口)的内容. WebView2默认情况下启用了 ...

  8. ES 关于 remote_cluster 的一记小坑

    最近有小伙伴找到我们说 Kibana 上添加不了 Remote Cluster,填完信息点 Save 直接跳回原界面了.具体页面,就和没添加前一样. 我们和小伙伴虽然隔着网线但还是进行了深入.详细的交 ...

  9. ES 数据太敏感不让看,怎么办?

    在使用 ES 的过程中,如果 ES 集群中存放的是敏感数据,是不能够随便供人查看的.什么?在排查故障?那也不行,合规高于一切. 不知道大家有没有遇到过上面描述的情景,或者如果是你遇到了,你会怎么办呢? ...

  10. 关于 ulimit 的两个天坑

    稍微有点 Linux 经验的人一定会遇到过 "Too many open files" 错误,这个错误本质是 ulimit 设置不合理导致的.关于 ulimit 设置,有哪些需要注 ...