前言:从oceanconnect获得的实时数据推送里面不包含设备的nodeid和device name。但是!
1)往thingsboard发需要node id
2)往OBD中心平台发需要device name
因此,需要配一个属于oc的数据库,用来根据deviceid 查node和设备名字。(直接访问数据库应该会快一点吧)
Java项目访问数据库有JDBC和myBatis
JDBC是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序。
JDBC常用的类和接口有:
1、驱动程序管理类(DriverManager)
2、声明类(Statement):用于将SQL语句发送到数据库中
3、数据库连接类(Connection):代表与数据库的链接
4、结果集合类(ResultSet):ResultSet包含符合SQL语句中条件的所有行记录
下面是一个最简单数据库连接处理的过程:
需要先在lib里加入postgresql和mybatis的jar包(mybatis在JDBC里用不到,先都导入了再说),右键项目build path,add jar包选择刚添加的两个,然后apply。
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class javaTest {
public static void main(String[] args) throws ClassNotFoundException, SQLException {
String URL="jdbc:mysql://127.0.0.1:3306/imooc?useUnicode=true&characterEncoding=utf-8";
String USER="root";
String PASSWORD="tiger";
//1.加载驱动程序
Class.forName("com.mysql.jdbc.Driver");
//2.获得数据库链接
Connection conn=DriverManager.getConnection(URL, USER, PASSWORD);
//3.通过数据库的连接操作数据库,实现增删改查(使用Statement类)
Statement st=conn.createStatement();
ResultSet rs=st.executeQuery("select * from user");
//4.处理数据库的返回结果(使用ResultSet类)
while(rs.next()){
System.out.println(rs.getString("user_name")+" "
+rs.getString("user_password"));
}
//关闭资源
rs.close();
st.close();
conn.close();
}
}
详见这两篇文章:
https://www.cnblogs.com/erbing/p/5805727.html
https://www.cnblogs.com/xiaotiaosi/p/6394554.html
2、用mybatis实现
MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装。MyBatis可以使用简单的XML或注解用于配置和原始映射,将接口和Java的POJO(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。
我的浅薄理解就是mybatis封装了JDBC代码。
具体参考:https://www.cnblogs.com/xdp-gacl/p/4261895.html