前言
数据库的增删该查在后端开发中几乎是肯定碰到的,对于后端来说很大一部分数据处理消息交互都会用到数据库的连接与消息交换,不同语言框架也提供了不同的代码风格和设计模式,下面通过对swift、java、nodejs、PHP四种语言连接mysql的方式来对代码风格进行横向对比,为广大开发者选择后端项目提供一个参考。
JAVA
首先下载JDBC的最新jar包:JDBC,下载对应的版本(注意区分5版本和8版本)
下载完成后导入到你的库中,Java中加载的方式如下
Class.forName("com.mysql.cj.jdbc.Driver"); // 5版本需要去掉.cj
conn = DriverManager
.getConnection("jdbc:mysql://localhost:3306/test_demo?
useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC","root","password");
插入数据
INSERT INTO `websites` VALUES
('1', 'AAA', 'https://www.AAA.cm/', '1', 'USA'),
('2', 'BBB', 'https://www.BBB.com/', '13', 'CN'),
('3', 'CCC', 'http://www.CCC.com', '5892', ''),
('4', 'DDD', 'http://DDD.com/', '20', 'CN'),
('5', 'EEE', 'https://www.EEE.com/', '3', 'USA');
增删改(传入SQL方式)
public int executeUpdate(String sql ,Object []ob){
conn=getconn();
PreparedStatement ps=null;
try {
ps=prepareStatement(conn,sql,ob);
int i=ps.executeUpdate();
return i;
} catch (SQLException e) {
// TODO Auto-generated catch block
// e.printStackTrace();
return 0;
}finally{
closeAll(conn, ps, null);
}
}
查询(传入SQL方式)
protected PreparedStatement prepareStatement(Connection conn,String sql,Object []ob){
PreparedStatement ps=null;
try {
int index=1;
ps = conn.prepareStatement(sql);
if(ps!=null&&ob!=null){
for (int i = 0; i < ob.length; i++) {
ps.setObject(index, ob[i]);
index++;
}
}
} catch (SQLException e1) {
e1.printStackTrace();
}
return ps;
}
我们可以看到JDBC对于数据库操作进行了很好的封装,我们只需要做好对应的异常捕获与SQL语句,我们可以用不多的代码来完成从Java底层进行的数据库访问,如果配合GSON或fastjson或其他可解析字符串元组数据结构,配合servlet的方式对于做数据处理要求不大的、Ajax的轻量数据交互的业务场景。相对大一点的业务场景JDBC也是能屈能伸,动态调整。
对于相对大型项目在SSM中mybatis也有着不错的表现,通过配置核心文件SqlMapConfig.xml,可以完成高度的解耦能力,通过工厂模式完成对数据库的操控,可以有效提高内存与交互安全性,线程池也让高并发的业务场景得到了实现的可能,相对需要一些学习成本,但对于熟悉spring生态的同学来说,是一个很好很顺手的选择。
对于代码风格来说,Java开发本身具有很好的封装性,对于各种类通信之间可以让逻辑非常清晰,每一个类、每一个方法,都可以很规范的处在相应的层级,对于排查文件系统树和细节是,可以很方便的定位,加上成熟的框架也帮助了程序员可以对于类之间实现更好的低耦合,但是Java严格的封装特性会显得在开发DAO时,代码量巨大的情况,可能会给人带来压力感,喜欢规整清晰、享受代码舒适感的同学可以使用Java作为选择。
PHP
PHP作为一个很成熟的语言,可以直接使用mysqli包,建议使用xampp等虚拟集成软件来跑PHP。
下面开始连接mysqli
<?php
$servername = "localhost";
$username = "username";
$password = "password";
// 创建连接
$conn = new mysqli($servername, $username, $password);
// 检测连接
if ($conn->connect_error) {
die("连接失败: " . $conn->connect_error);
}
echo "连接成功";
?>
关闭连接
$conn->close();
插入数据
<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";
// 创建连接
$conn = new