Java中String的JdbcTemplate连接SQLServer数据库的方法
作者:胜金 发布时间:2022-09-05 00:34:12
标签:java,JdbcTemplate,SQLServer
很久没写文章了,一方面是最近几个月比较忙,没太多时间,另一方面是最近拖延症严重,写文章的想法总是一拖再拖。今天找一个小案例写一下,与懒惰对抗一下。
首先说一下背景,我们在项目中做数据持久化一般都是用mybatis或者hibernate开发框架,进行数据库连接和操作,最近做GIS仿真产品研发,根据需求需要保存三部分数据:1、业务数据,数据量比较小;2、GIS数据,需要用到空间关系;3、物联数据,数据量大,在我们开发自测阶段数据量就可以达到每天百万以上。根据以上数据特点,我们使用了传统的MySQL数据库、空间数据库PostgreSQL、TD engine时序数据库,项目中做了spring boot多数据源动态切换。今天的重点不是多数据源的实现,这个应用以后会在另外一篇文章中介绍;在研发过程中我们需要与其他系统对接的场景,连接SQLServer拉取数据,项目本身已经做了多数据源,如果继续添加数据源就加大了系统的难度,所以就用jdbc连接数据库的方式连接外部数据源,下面看代码。
一、引入依赖jar包
项目用的是Spring Boot,创建好项目以后,引入下面依赖:
<dependencies>
<dependency>
<groupId>com.microsoft.sqlserver</groupId>
<artifactId>mssql-jdbc</artifactId>
<scope>runtime</scope>
</dependency>
</dependencies>
二、Utils开发
1、创建实体类,实现org.springframework.jdbc.core.RowMappe接口的mapRow(ResultSet rs, int rowNum)方法。
package com.johan.handler.task.iotSync.bean;
import lombok.Data;
import org.apache.commons.lang3.StringUtils;
import org.springframework.jdbc.core.RowMapper;
import java.sql.ResultSet;
import java.sql.SQLException;
/**
* @author: Johan
* @date: 2021/10/18
* @desc: IOT信息
*/
@Data
public class IotDG implements RowMapper {
/**
* 标签名称
*/
private String tagName;
/**
* 标签描述
*/
private String tagDesc;
/**
* 标签值
*/
private Double tagVal;
/**
* 标签单位
*/
private String tagUnit;
/**
* 类型,0 压力,1 流量
*/
private String type;
@Override
public Object mapRow(ResultSet rs, int rowNum) throws SQLException {
IotDG iotDG = new IotDG();
iotDG.setTagName(rs.getString("TagName"));
iotDG.setTagDesc(rs.getString("TagDesc"));
iotDG.setTagVal(rs.getDouble("Value"));
iotDG.setTagUnit(rs.getString("TagUnit"));
iotDG.setType(rs.getString("Type"));
return iotDG;
}
}
2、连接数据库,读取表数据
package com.johan.handler.task.iotSync.iotConvert;
import com.johan.handler.task.iotSync.bean.IotDG;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.datasource.DriverManagerDataSource;
import java.sql.*;
import java.util.List;
/**
* @author johan
* @Description SQL server
* @time 2021/10/18 18:26
*/
public class JDBCUtils {
private static JdbcTemplate jdbcTemplate;
static {
String driver = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
String url ="jdbc:sqlserver://10.25.23.172:1433;databaseName=SCADA_Data_3040";//连接地址
String user ="SLSL";//用户
String password ="Admin@3040";//密码
DriverManagerDataSource dataSource=new DriverManagerDataSource();
dataSource.setUrl(url);
dataSource.setDriverClassName(driver);
dataSource.setUsername(user);
dataSource.setPassword(password);
jdbcTemplate=new JdbcTemplate(dataSource);
}
public static List<IotDG> listAll(int type){
String sql = "SELECT * FROM RealData where Type=" + type;
// System.out.println(iotDGList);
return jdbcTemplate.query(sql,new IotDG());
}
}
3、测试
方法是静态的,直接调用即可。
package com.johan.domain.iot;
import com.johan.handler.task.iotSync.bean.IotDG;
import com.johan.handler.task.iotSync.iotConvert.JDBCUtils;
import lombok.extern.slf4j.Slf4j;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import java.util.List;
/**
* @author johan
* @time 2021/10/22 17:57
*/
@SpringBootTest
@Slf4j
public class IotDomainTest {
@Test
public void jdbcTest(){
List<IotDG> iotDGList = JDBCUtils.listAll(0);
System.out.println(iotDGList);
}
}
不只是SQLServer,我们常用的MySQL、Oracle等都可以用JdbcTemplate连接。
来源:https://www.cnblogs.com/JohanChan/p/15469453.html


猜你喜欢
- 网络应用模式主要有:主机/终端模式:集中计算,集中管理;客户机/服务器(Client/Server,简称C/S)模式:分布计算,分布管理;浏
- 本文实例为大家分享了android实现简单仪表盘效果的具体代码,供大家参考,具体内容如下实现这个效果:中间的文字很好写,外层的进度条就需要自
- Android的Camera相关应用开发中,有一个必须搞清楚的知识点,就是Camera的预览方向和拍照方向图像的Sensor方向:手机Cam
- 泛型程序设计(Generic Programming)“使用泛型机制编写的程序代码要比那些杂乱地使用Object变量,然后再进行强制类型转换
- 要爬取一个网站遇到了极验的验证码,这周都在想着怎么破解这个,网上搜了好多知乎上看到有人问了这问题,我按照这思路去大概实现了一下。1.使用ht
- 对过滤器doFilter里chain.doFilter()函数的理解关于chain.doFilter()函数在最近的使用中不是很理解,但是考
- 一、 WillPopScope用法WillPopScope本质是一个widget用于拦截物理按键返回事件(Android的物理返回键和iOS
- 一,二分法检索算法介绍二分法检索(binary search)又称折半检索,二分法检索的基本思想是设字典中的元素从小到大有序地存放在数组(a
- 最近公司有一个公交项目,要生成报站语音,采用的是 报站前缀 + 站点名 + 报站后缀,3个MP3文件拼接的方式,拼接成一个完整的语音,且需要
- 使用字符时,我们通常使用的是内置数据类型char。实例char ch = 'a';// Unicode for upperc
- Android自定义短信验证码组件,供大家参考,具体内容如下效果图1.布局实现因为要禁用光标,所以我用TextView代替了EditText
- a.在.xaml文件中拖入一个datagrid,然后添加列名,使用Binding="{Binding 数据库中的列名称}"
- 实现如下边框效果:虚线画效果,可以使用Android中的xml来做。下面话不多说,直接上代码:<RelativeLayout &nbs
- 今天我们要开始来讲讲Java中的数组,包括一维数组和二维数组的静态初始化和动态初始化数组概述:数组可以看成是多个相同类型数据的组合,对这些数
- 先对Spring SpringMVC和Mybatis单独进行配置,最后对三者进行整合配置Spring实际使用中,一般会使用注解+xml配置来
- 问题描述:eclipse启动tomcat时,不能加载web项目,但是把war包丢进tomcat的webapps下是能正常运行的解决方式:右键
- CAS原理在计算机科学中,比较和交换(Compare And Swap)是用于实现多线程同步的原子指令。 它将内存位置的内容与给定值进行比较
- Android SharedPreferences详解获取SharedPreferences的两种方式:1 调用Context对
- 在网上学习了一种继承系统AlertDialog然后用一统一方法控制dialog显示的方法,效果还不错,但按钮栏那里的分隔线并不是想要的。于是
- 概述工作电脑用了3年多了,100G的C盘也快吃不消了,每次打开看到C盘红了,总要用清理工具清理一下子.不知道怎么最近清理工具清理