Mybatis教程-JDBC链接并直接操作数据库

news/2024/5/18 22:59:18 标签: mysql, jdbc, mybatis, orm, 数据库

Mybatis教程-JDBC链接并直接操作数据库 。echo编辑整理,欢迎转载,转载请声明文章来源。


什么是Mybatis?都说JDBC链接数据库操作很快,单纯使用JDBC比我们使用框架快多了。但是为什么我们都选用框架?首先我们需要来了解一下JDBC是怎么操作数据库的,看看JDBC链接操作数据会有哪些优点和缺点?

JDBC链接数据库想当简单,总共就四个步骤

  • 获取链接
  • 执行查询
  • 获取结果集
  • 关闭链接

实例代码如下

package com.example.demo;

import java.sql.*;

/**
 * @author echo
 * @date 2020/6/19 20:30
 **/
public class TestJdbc {

    public static void main(String[] args) {
        Connection connection = null;
        Statement statement = null;
        ResultSet resultSet = null;
        User user = new User();

        try {
            // 获取链接
            connection = DriverManager.getConnection("jdbc:mysql://192.168.229.132:3306/blog", "admin", "123456");

            // 执行查询
            statement = connection.createStatement();
            String sql = "select * from `user` where id = '1'";
            resultSet = statement.executeQuery(sql);

            // 获取结果集
            while (resultSet.next()) {
                user.setId(resultSet.getLong("id"));
                user.setUsername(resultSet.getString("username"));
                user.setPassword(resultSet.getString("password"));
                user.setEmail(resultSet.getString("email"));
                user.setPhone(resultSet.getString("phone"));
                user.setCreateTime(resultSet.getDate("create_time"));
                user.setCreateTime(resultSet.getDate("update_time"));
            }
            System.out.println(user);

            // 关闭链接
            resultSet.close();
            statement.close();
            connection.close();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                if(resultSet != null) resultSet.close();
            }catch (Exception e) {
                e.printStackTrace();
            }
            try {
                if(statement != null) statement.close();
            }catch (Exception e) {
                e.printStackTrace();
            }
            try {
                if(connection != null) connection.close();
            }catch (Exception e) {
                e.printStackTrace();
            }
        }

    }

}

// 实体
package com.example.demo;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;

import java.io.Serializable;
import java.util.Date;

/**
 * user
 * @author echo
 * @WeChat t2421499075
 */
@Data
@ToString
@NoArgsConstructor
@AllArgsConstructor
public class User implements Serializable {
    private static final long serialVersionUID = 1L;
    /**
     * 主键id
     */
    private Long id;

    /**
     * 用户名
     */
    private String username;

    /**
     * 用户密码
     */
    private String password;

    /**
     * 用户邮箱
     */
    private String email;

    /**
     * 手机号码
     */
    private String phone;

    /**
     * 创建时间
     */
    private Date createTime;

    /**
     * 更新时间
     */
    private Date updateTime;

}

注意:使用完成链接之后,一定要规范的关闭我们的链接。如果不关闭很有可能导致我们的服务器资源耗尽。

从上面的实例我们可以看到一下优点

  • 灵活、高效
  • 跨平台性比较强
  • 能够支持复杂的sql

那么我们可以通过这个链接数据库的过程看到以下这些问题:

  • 查询一张表就需要很多的链接数据库的代码
  • 需要自己管理资源,有可能由于忽略关闭资源可能导致服务器故障
  • 结果集获取很麻烦
  • 当多张表出现的时候,重复代码大量出现
  • 逻辑复杂的时候,我们编写代码的时候,修改就成为一个相当大工程

但是:这些问题也是我们Mybatis产生的直接原因


http://www.niftyadmin.cn/n/1638937.html

相关文章

Dubbo服务接口测试工具

背景 随着业务的发展,业务越来越复杂,为了提高系统性能,对业务解耦,对系统按业务模块拆分;服务之间的治理(SOA)、远程服务调用(RPC),组成复杂的网状的分布式系统。用户的访问的(pc,h5,android,ios等前端)页面并没有对业…

Aspect生成服务端API接口

背景 随着分布式系统逐渐成熟及普遍应用,应用与应用直接通过微服务调用,需要对外部提供相应API接口,为次提供一套切面生成API接口的工具 技术实现 aspectj 切面获取注解信息Java 反射获取属性信息SpringContext 获取spring 容器beanspoi工具…

Mybatis教程-使用Hikari和QueryRunner简化JDBC链接操作

Mybatis教程-简化JDBC链接操作 当我们发现使用JDBC有着很多冗余的代码的时候,我们可以自己封装一些代码,完成这些重复的操作。当然市面上其实也有很多这样的封装,这也是Mybatis发展历史中的重要一个环节。所有的框架都是基于不断的封装&#…

Drools规则引擎介绍及实践

1.规则引擎 规则引擎是由推理引擎发展而来,是一种嵌入在应用程序中的组件,实现了将业务决策从应用程序代码中分离出来,并使用预定义的语义模块编写业务决策。接受数据输入,解释业务规则,并根据业务规则做出业务决策。…

BitMap数据结构梳理总结及代码实现

BitMap(位图) BitMap定义 位图(BitMap),即位(Bit)的集合,是一个离散的数组结构,用一个bit位来标记某个元素对应的Value,而Key即是该元素;最基本的情况,使用一个bit表示…

架构技能教程-时序图(UML图)的制作

echo编辑整理,欢迎转载,转载请声明文章来源。欢迎添加echo微信(微信号:t2421499075)交流学习。 什么是时序图(UML图)? 时序图(Sequence Diagram),又名序列图、循序图&am…

Maven Jar 加载原则及Jar冲突加载优先级梳理

Maven Jar 加载原则 依赖最短路径优先原则 如:a.jar 依赖 b.jar,b.jar 依赖 c.jar, c.jar依赖 d.0.jar; a.jar 依赖 e.jar,e.jar 依赖 d.1.jar 则:最终依赖d.1.jar 2.pom文件中申明顺序优先 如:a.jar 依赖 d.0.jar ; b.jar 依赖 d.1.jar且 a.jar 依…

架构技能教程-基础架构原则

echo编辑整理,欢迎转载,转载请声明文章来源。欢迎添加echo微信(微信号:t2421499075)交流学习。 基础架构需要遵循什么?设计产品架构应该需要考虑哪些因素?功能的完整性、效率、安全性、可扩展性?设计架构并…