SpringBoot连接数据库的方式
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;
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连接数据库的方式的更多相关文章
- node-mongodb-native的几种连接数据库的方式
h1,h2,h3,h4,h5,h6,p,blockquote { margin: 0; padding: 0;}body { font-family: "Helvetica Neue&quo ...
- springboot连接数据库报错testWhileIdle is true, validationQuery not set
问题描述: 使用springboot连接数据库,启动的时候报错:testWhileIdle is true, validationQuery not set.但是不影响系统使用,数据库等一切访问正常. ...
- PDO的三种连接数据库的方式
PDO的三种连接数据库的方式 PDO的出现是为了解决PHP与各个数据库的连接处理都有各自的函数的问题,它的高度抽象,使得使用起来极其的方便.由于最常用的搭配就是PHP+Mysql,所以这里就以连接 ...
- 前端基于vue,后台采用springboot+shiro的方式搭建的一个移动端商品展示平台
基于vue实现的移动端商品展示页,可以web-view的方式嵌入到小程序中,布局简约.大气,减少初学者或开发者不必要的工作量.后台维护采用的springboot+shiro的方式,为广大爱好者提供展示 ...
- linux环境下,springboot jar启动方式
linux环境下,springboot jar启动方式 一.前台启动(ctrl+c会关掉进程) java -jar application.jar 二.后台启动(ctrl+c不会关闭) java -j ...
- 实例讲解Springboot以Template方式整合Redis及序列化问题
1 简介 之前讲过如何通过Docker安装Redis,也讲了Springboot以Repository方式整合Redis,建议阅读后再看本文效果更佳: (1) Docker安装Redis并介绍漂亮的可 ...
- 掌握这些springboot的配置方式,让你工作效率翻个倍!
springboot的多种配置方式 java配置主要靠java类和一些注解,比较常用的注解有: @Configuration :声明一个类作为配置类,代替xml文件 @Bean :声明在方法上,将方法 ...
- MYSQL:python 3.x连接数据库的方式
我们想要在我们的mython程序中使用mysql,首先需要安装pymysql模块,安装方式可以使用cmd命令安装, pip3.x install pymysql 首先在我们连接数据库之前先创建一个us ...
- SpringBoot/SpringMVC文件下载方式
本篇文章引用外网博客代码,共描述SpringMVC下三种文件下载方式,本人测试在SpringBoot(2.0以上版本)正常使用. 引用博客,强烈推荐https://www.boraji.com. pa ...
- springboot linux启动方式
手动启动 java -Xms128m -Xmx256m -Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=8081,suspend=n -j ...
随机推荐
- Android开发环境配置 JDK及SDK
已经搭建过无数次开发环境,今天把搭建环境记录下,下次不用去搜索别人博客,有些博客都是复制粘贴,有些关键信息都缺失了. 1.首先第一步:下载JDK,配置JDK环境变量.JDK可以在Oracle官网下载, ...
- PageOffice实现文件在线安全预览——禁止编辑、下载、复制等
实际应用中,很多时候不仅需要在线编辑文件,还需要在线安全预览文件,要求不能复制.下载.另存到本地等情况.pageoffice可以实现文件在线安全预览,禁止:编辑.复制.粘贴.右键菜单.选择.下载.另存 ...
- IceRPC之调度管道->快乐的RPC
作者引言 很高兴啊,我们来到了IceRPC之调度管道->快乐的RPC, 基础引导,有点小压力,打好基础,才能让自已不在迷茫,快乐的畅游世界. 调度管道 Dispatch pipeline 了解如 ...
- 【winform】解决datagridview里放combox,combox不能按下键快速选择的问题
效果图: 一开始,是拖个下拉框到窗体上,用dgv.controls.Add(combox)添加到表格里,在通过表格事件,触发时,改变下拉框的位置和大小,这样做,下拉框是会出现在表格里,但是有问题,不能 ...
- tkinter滚动条
from tkinter import * import requests window = Tk() window.geometry('1000x600+300+100') window.title ...
- React 中的 useRef 与 useState
React 是一个流行的 JavaScript 库,用于构建用户界面.它提供了几个钩子,使开发人员能够管理状态并执行副作用. React 中两个常用的钩子是 useRef 和 useState .虽然 ...
- c#使用webView2 访问本地静态html资源跨域Cors问题 (附带代理服务helper帮助类)
背景 在浏览器中访问本地静态资源html网页时,可能会遇到跨域问题如图. 是因为浏览器默认启用了同源策略,即只允许加载与当前网页具有相同源(协议.域名和端口)的内容. WebView2默认情况下启用了 ...
- ES 关于 remote_cluster 的一记小坑
最近有小伙伴找到我们说 Kibana 上添加不了 Remote Cluster,填完信息点 Save 直接跳回原界面了.具体页面,就和没添加前一样. 我们和小伙伴虽然隔着网线但还是进行了深入.详细的交 ...
- ES 数据太敏感不让看,怎么办?
在使用 ES 的过程中,如果 ES 集群中存放的是敏感数据,是不能够随便供人查看的.什么?在排查故障?那也不行,合规高于一切. 不知道大家有没有遇到过上面描述的情景,或者如果是你遇到了,你会怎么办呢? ...
- 关于 ulimit 的两个天坑
稍微有点 Linux 经验的人一定会遇到过 "Too many open files" 错误,这个错误本质是 ulimit 设置不合理导致的.关于 ulimit 设置,有哪些需要注 ...