首页 > 其他分享 >实现一个简单的mybatis:SimpleMyBatis

实现一个简单的mybatis:SimpleMyBatis

时间:2024-06-15 23:29:38浏览次数:23  
标签:String 简单 SimpleMyBatis sql SQL mybatis static public conn

创建一个类似MyBatis的框架,主要涉及到几个关键部分:SQL语句的解析与存储,参数的绑定,以及最终的SQL执行。以下是一个简单的示例,使用Java、JDBC和SQLite数据库来实现:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;

public class SimpleMyBatis {

    private static final String URL = "jdbc:sqlite::memory:";
    private static final String USER = "";
    private static final String PASSWORD = "";

    public static void main(String[] args) {
        try {
            // 加载驱动
            Class.forName("org.sqlite.JDBC");

            // 创建数据库连接
            Connection conn = DriverManager.getConnection(URL, USER, PASSWORD);

            // 创建SQL映射器
            SqlMapper mapper = new SqlMapper();
            mapper.addCommand("insertUser", "INSERT INTO users (name, age) VALUES (?, ?)");

            // 创建SQL会话
            SqlSession session = new SqlSession(conn);

            // 执行SQL命令
            session.execute(mapper.getCommand("insertUser", "John Doe", 30));

            // 关闭数据库连接
            conn.close();
        } catch (ClassNotFoundException | SQLException e) {
            e.printStackTrace();
        }
    }

    static class SqlMapper {
        private final java.util.Map<String, String> commands = new java.util.HashMap<>();

        public void addCommand(String key, String sql) {
            this.commands.put(key, sql);
        }

        public String getCommand(String key) {
            return this.commands.get(key);
        }
    }

    static class SqlSession {
        private final Connection conn;

        public SqlSession(Connection conn) {
            this.conn = conn;
        }

        public void execute(String sql, Object... params) throws SQLException {
            PreparedStatement pstmt = conn.prepareStatement(sql);
            for (int i = 0; i < params.length; i++) {
                pstmt.setObject(i + 1, params[i]);
            }
            pstmt.executeUpdate();
        }
    }
}

在这个例子中,SqlMapper类用于存储SQL语句,SqlSession类用于执行SQL语句。我们使用了PreparedStatement来安全地设置参数,避免SQL注入攻击。

但是请注意,这只是一个非常基础的示例,真正的MyBatis框架提供了很多高级特性,如动态SQL生成、结果映射、缓存管理等,这些在上面的例子中都没有涉及。如果你需要处理复杂的SQL查询和结果映射,建议使用成熟的ORM框架,如MyBatis或Hibernate。

标签:String,简单,SimpleMyBatis,sql,SQL,mybatis,static,public,conn
From: https://blog.csdn.net/svygh123/article/details/139710774

相关文章

  • Mybatis和Hibernate的作用区别及底层原理分析
    目录Mybatis的作用及底层原理Hibernate的作用及底层原理Mybatis与Hibernate的主要区别Mybatis和Hibernate都是Java应用程序中常用的ORM(Object-RelationalMapping,对象关系映射)框架,它们的主要作用是简化数据库访问层的开发,将数据库操作映射为面向对象的编程方式,从而提高......
  • FreeRTOS简单内核实现3 任务管理
    0、思考与回答0.1、思考一对于Cotex-M4内核的MCU在发生异常/中断时,哪些寄存器会自动入栈,哪些需要手动入栈?会自动入栈的寄存器如下R0-R3:通用寄存器R12:通用寄存器LR(LinkRegister):链接寄存器,保存返回地址PC(ProgramCounter):程序计数器,保存当前执行指令的地址xPSR(Pro......
  • 这个vue3的后台管理系统虽然简洁但不简单
    今天介绍一个新的Vue后台管理框架,相比其他后台功能丰富管理系统,这个后台管理系统可以用干净简洁来形容——Nova-admin Nova-adminNova-admin 是一个基于Vue3、Vite5等最新技术的后台管理平台。用简单的方式实现完整功能,并尽可能的考虑代码规范,易读易理解无过度封装,方便二次......
  • Mybatis框架中结果映射resultMap标签方法属性收录
    Mybatis框架中结果映射resultMap标签收录在MyBatis框架中,resultMap是一种强大的机制,用于将数据库结果集映射到Java对象上。它允许你定义如何将查询结果中的列映射到Java对象的属性上,尤其是当数据库表的字段名与Java对象的属性名不一致时,或者需要进行复杂的映射(如一对一、......
  • springboot+vue+mybatis家电系统+PPT+论文+讲解+售后
    随着信息互联网购物的飞速发展,一般企业都去创建属于自己的电商平台以及购物管理系统。本文介绍了家电销售系统的开发全过程。通过分析企业对于家电销售系统的需求,创建了一个计算机管理家电销售系统的方案。文章介绍了家电销售系统的系统分析部分,包括可行性分析等,系统设计部分主......
  • C语言简单学习(obsidian打开)
    ##变量与类型###整数C给我们提供了下列定义整数的类型:-`char`-`int`-`short`-`long`通常,你很可能会使用 `int` 保存整数。但是在某些情况下,你或许想在其它三个选项中选取合适的类型。`char` 类型通常被用来保存ASCII表中的字母,但是它也可以用来保存 `-128......
  • 史上最简单的bootloader【STM32F767】[【二】
    继上一篇史上最简单的bootloader【STM32F767】后,最近进一步研究了下bootloader。任务:bootloader不变,app自我复制,将app搬运到sram中运行。目的:1)学习bootloader;     2)没什么大用处,主要是学习---->看资料说是代码在sram中运行会快一点,本人没有测试过学习过程有点......
  • 【C#入门超简单】基本的.NET框架概念
    一、基本的.NET框架概念.NET框架是一个由微软开发的软件开发平台,它提供了一个运行时环境(CLR-CommonLanguageRuntime)和一套丰富的类库(FCL-FrameworkClassLibrary)。CLR负责管理代码的执行,而FCL则提供了大量预先编写好的代码,供开发者使用。例子:想象一下.NET框架是一个大型......
  • 中小学电子教材课本下载(简单无脑)
    前言还记得读初中的时候,老是需要借高年级的课本,很是不方便,想要暑假提前预习一下也没资源。现在时代不同了,实用电子课本应该要方便一点。我去看过各类教材的官方网址,大部分电子教材只能在线阅读,不能下载,因此做了一个下载网页,可以直接下载。简介人教版电子教材下载页,涵盖1~9学段......
  • 最简单的随机过程——马尔科夫链的Python分析
    马尔科夫链是一种用于描述系统从一个状态转移到另一个状态的随机过程。它得名于俄罗斯数学家安德雷·马尔科夫,他在20世纪初提出了这种数学模型。马尔科夫链的一个关键特性是无记忆性,即未来状态的概率只依赖于当前状态,而不依赖于过去的状态。这种性质使得马尔科夫链在许多领域中具......